In part 1 of this blog post, I discussed the overarching principles of a DevOps methodology, and how it can bring a profound benefit to your ROI. But, another impetus for DevOps is the cloud services world. In the cloud native world, delivery is not preparing a software package for a customer to install or upgrade in their environment. Instead customers purchase a service that developer is providing, hence deployment means updating a cloud-based production environment in a seamless manner while making sure there is no disruption in service. In the cloud native world, software must be designed from the beginning with seamless upgradability, availability and scaling in mind and in close collaboration with the operations staff that will manage the production deployment.
Embracing DevOps requires a variety of tool changes. DevOps toolchains, also referred to as CI/CD pipelines (which is an acronym for Continuous Integration/Continuous Delivery and/or Deployment), provide automation assistance for a staged production line approach to rolling out code updates with modifications deployed as frequently as daily or weekly. Changes are both smaller in scope and made and unit tested in a developer sandbox. Upon successful results are scheduled and staged for system test, followed by production deployment. System test is also performed frequently and continuously. Embotics® vCommander® can be very helpful in seamlessly facilitating these continuous testing cycles. One of our customers uses vCommander to automate weekend long system test cycles for weekly software deployments. Hundreds of VMs are spun up on Friday evening, automatically fetching the latest versions of their software application. Their test suites are then executed all weekend long. Successful tests results are recorded and the resources released on Sunday, while VMs containing test failures are suspended and kept for problem diagnosis on Monday morning.
The production deployment phase is typically also done iteratively, with the new code deployed to a small percentage of servers and initially monitored there so that any problems can be detected early and if needed rolled back before the code is deployed more broadly to all the servers. Daily or weekly updates to a production system or service is better suited to cloud deployed services, not for on-premise installed software, but the principles still apply just as well during development projects targeted there as well.
Rolling out production software on such a rapid timeline can result in a lack of corporate governance. Maintaining that governance without dramatically slowing down delivery is difficult. Embotics vCommander’s policy based automation provides the proper level of control through orchestration, while still enabling engineering teams the freedom to consume public, private and hybrid cloud resources as needed. These R&D teams can even continue to leverage the cloud native APIs of their choice today, thus preserving overall corporate agility. vCommander’s self-service catalogue and provisioning automation gives system administrators the flexibility to offer and/or enforce governance policies at provisioning time through workflows.Because in the cloud services case, deployments are being done to live production servers, more automation is used in conjunction with Blue/Green deployments; a technique that reduces downtime and risk by running two identical production environments called Blue and Green. At any time, only one of the environments is live and serving production traffic, while the idle environment is used to stage the newest version. This technique enables easy roll forward and roll back in the event of a problem with minimal disruption of service. There are at least 2 flavors of this approach monolithic where the whole environment is rolled forward or fine-grained piecemeal deployment where only a portion of the service is rolled forward and controlled by a load balancer. In both cases, careful automatic monitoring is required to detect and respond to any issues quickly.
Just like DevOps brings small, manageable iterations to software development, DevOps itself is also best implemented in small iterative chunks as well! “Implement a small change, measure the result, repeat” is very much the mantra of successful DevOps deployments.
To be successful and efficient, DevOps requires the right tools throughout the software development lifecycle. Embotics vCommander has a strong role to play here with its comprehensive automation, staging and third party integration capabilities.
Read more about how vCommander can help facilitate DevOps here.