Actifio is now part of Google Cloud. Read the full announcement.

Copy Data Management = Polymorphism

I’d like to share a fascinating insight from a customer. Our sales team asked me to join them for a face-to-face discussion with the company’s VP of development and his team. After the introductions, he explained the key problem. His Dev & QA teams were struggling to execute their unit testing, build integration testing, and QA testing fast enough, in spite of automation. They identified that too many critical issues were being found late, in UAT, which delayed their release cycles and led to a lot of heartburn inside the company. When they looked into the cause of the quality issues, they found that for 80% of the release cycle they were testing against low-fidelity synthetically generated test data, instead of data from production. The code testing against such dummy data did not expose the code defects earlier in the test cycles.

I explained Actifio Copy Data Management and how it can help them with their testing and quality challenges by giving the QA teams ‘full’ virtual copies of real databases to test against. I also mentioned how Actifio can help his IT Operations for backup & disaster recovery needs as well.

At that point we were 30 minutes into the discussion. Then, one of the client’s software architects, who had been quiet so far, stunned me with a statement, “So Copy Data Management is like polymorphism …..”. His own team was also perplexed, as they were not able to connect the dots between polymorphism and Copy Data Management. Some of the IT operations folks didn’t know what polymorphism meant. The software architect explained what polymorphism meant (i.e. taking many forms), in the context of object-oriented programming, and then he explained how it applies to Copy Data Management. Following is the summary of that discussion.

C++, C#, and Java are examples of popular object oriented programming languages. These programming languages make it easy to map real world relationship between various things to software constructs using a concept called “polymorphism”.

If polymorphism means taking many forms, let’s look at it with an example of smartphone. Before the smartphone (ex: iPhone, Samsung Galaxy) was invented, we used to have a keypad cell phone to talk, a camera to take pictures, GPS navigation for maps & routes. A smartphone “implements” all these “functions”. This is represented in an Object Oriented Programming System (OOPS) in the following way.


In OOPS, the classes Cell Phone, Camera, GPS are called “Interfaces”. The SmartPhone is the class that “implements” these “interfaces”. An “object” of SmartPhone class can be “used as” a CellPhone, Camera, or a GPS. This is called polymorphism.

Specifically in C++, functions can be “overridden” in derived classes with better implementation. For ex: using a SmartPhone you can text using a touch screen, which is a better experience than texting with a keypad based cell phone.

So how does polymorphism apply to copy data management? Take a look at the following picture.


The Copy Data Management (CDM) class implements multiple interfaces such as Backup, DR, and Test Data Management (TDM). Since a CDM product like Actifio can deliver Backup, DR, and TDM functionality, it exhibits polymorphism.

As mentioned earlier, derived classes can “override” the base class functions with a more enriched functionality. Here are a few examples of how Actifio, which belongs to CDM family*, makes the functionality better than the base classes of Backup, DR, and TDM.

*(Actifio prefers the term Copy Data Virtualization for what we do, for a number of reasons, but that’s a topic for another blog.)

An example of better backup can be seen in how Actifio performs backups in an incremental forever manner for any protected applications, including VMs, applications on physical servers, or large databases.


This reduces storage I/O, network I/O, CPU and memory impact of backups on production applications by up to 10x. On the other hand, a traditional backup product forces a full backup at least once a week, especially for databases.

An example of a better recovery function is the Actifio platform’s ability to do an instant recovery of a multi-TB volume or database, and orchestrate the recovery of 100s of VMs with a single click. What’s more, these recoveries are scalable, i.e. recovery comes from backup images that are stored in their native application format, vs. in a deduplicated and backup media format.


However, the base product, i.e. a traditional backup product will have much longer recovery times (RTOs), because of restoring from full and incremental backups. Even when they do instant recoveries, which are typically limited to VMs, the recoveries come off deduplication storage, thus making the recoveries slower, and not a useful solution for recovery at scale.

An example of better test data management from the derived class of Copy Data Management is that Actifio can provision virtual copies of a multi-TB production database instantly over fiber channel or IP networks. This gives UAT teams the option to use a storage environment that resembles production as closely as possible. This helps ensure that the UAT testing happening on Actifio virtual copies is kept near-identical to the production behavior.


In contrast, other Test Data Management tools are limited to provisioning copies over IP protocols only, rendering them inadequate for testing in environments where production uses fiber channel storage, and customers want high-performance testing in UAT to simulate production.

With the Polymorphism analogy, the software architect was able to communicate the advantages of a copy data management platform very effectively to his own team in just 15 minutes. In the discussion, I explained our differentiation and he translated that to the “function overriding” concept in OOPS.

I learned a lot from this experience. It shows how the audience thinks when you are talking about your product, how they ‘personalize’ a concept into their own domain, and how they try to see a concept using familiar models or constructs. It shows how a framework like ‘polymorphism’ is universal in nature and can be applied to any domain – object oriented programming, the smartphone industry, or enterprise data management.

Do you have any questions? Any point of views? Want to have a discussion with the copy data experts at Actifio? Feel free to email us at

Recent Posts