A DevOps backup strategy is not just about technology -- it's about the success of the entire enterprise. The plan must meet business needs, balance cost with risk tolerance and consider workforce skills.
Ultimately, a DevOps backup plan must lead to the optimal level of automation, said Edwin Zhang, senior director of engineering and experience design for Cisco DevNet, the company's developer assistance program.
Start by thinking about why and when the backup will occur, Zhang said.
"You need backups to overcome situations like system failures, security attacks or disasters," he said. "When these situations occur, the most important thing is to be able to recover quickly and accurately to keep your business running."
Standard backup principles apply, but there are some special considerations to make in DevOps environments.
Backup types and integration challenges
The biggest challenge to successful DevOps backups stems from the fact that it's a live operational environment. DevOps environments are rich with highly dynamic microservices that run across a highly distributed system of tightly connected compute, data, applications and services.
As applications and services move to a multi-region and multi-tenancy architecture, it's critical to consider two types of backup: persistent data backup and system state backup.
Persistent backups deal with data storage devices that retain data when power is off, including databases, static resources and messages. System state backups back up operating system files and include cluster state, node state, microservice state and data pipeline state.
Both backup types take effort to implement but are required to get your system back up and running, Zhang said.
Another major challenge is to successfully integrate the backup process into the DevOps CI/CD pipeline, which is a combination of two techniques, continuous integration and continuous delivery. This step backs up the dependent components of the application, such as the application's current production version, configurations and databases.
"Depending on the DevOps tool you’re using, this may be a complex task," said Mahadeva Bisappa, principal architect at professional services firm SPR.
The CI/CD pipeline has replaced traditional waterfall software development and is designed for everything to take place simultaneously.
If the DevOps tool doesn't provide an easy way to integrate backup steps, it will introduce an external dependency that organizations will need to coordinate and execute with every future release deployment.
"Otherwise, it may lead to a forgotten step that results in an outdated backup," Bisappa said.
The best way to build a reliable DevOps backup system is to integrate the backup process directly into the CI/CD pipeline that backs up all dependent components just before deploying new changes, Bisappa advised.
Automation and the role of cloud
In a well-defined DevOps process, backups should be an automated step within the CI/CD pipeline.
"The DevOps engineer responsible for the release would then be in charge of this step," Bisappa said.
Engineers may, however, need some assistance from system administrators and database administrators, depending on the data they back up and who handles it.
The cloud is a popular platform not only for DevOps, but for everything an organization needs to save, host or consume.
"It's agile, capable of setting up and scaling systems to a global level in a matter of minutes to hours -- versus the weeks and months it takes in on-prem environments," Bisappa said.
All major cloud platforms provide backup and restore capabilities for the products and services available on their platform, either through automatic backups, on-demand backups or both. Yet backup integration with the DevOps process continues to evolve.
"This evolution will occur either natively from the cloud platform providers or through third-party integration plugins," Bisappa said.