Make DevOps your New Year's Resolution!
Diagram of the Full DevOps Lifecycle
Continuous Automation is the Foundation of DevOps
Building a DevOps Environment can be scary because there are many technical and organizational hurdles to overcome. To address a DevOps transformation, break each aspect of the full lifecycle into components and concentrate on one small automation component at a time.
The yellow circles in the diagram above indicate the core automated development processes.
The blue circles indicate the core automated operations processes.
The DevOps ideal is to have a team own the entire stream by supporting all the interactions indicated with various arrows.
However, most teams will not be entirely automated, so start with automating Continuous Integration and Continuous Monitoring.
Start Simple with Continuous Integration and Monitoring
Continuous Integration and Monitoring are the basic and simplest units of DevOps automation and they share a common component of "Smoke Testing" as a quick test to ensure basic functions work.
Developers will often conduct a smoke test on the development stage before deployment, and then on the staged deployment afterward. Operators will perform smoke tests after promoting a staged artifact to production.
Even if your team is not doing DevOps, chances are you are still doing some sort of smoke testing. Examples of smoke testing are
Clicking on a web application and checking it renders properly
Making sure a database pipeline is up to date after a run execution
Calling a Web API and ensuring the result matches an expected value
Often these can be automated easily with technologies. Start by automating Smoke Tests and include those smoke tests into how you promote artifacts between environments.
The diagram below pulls out this crucial process along. As artifacts progress through the stages of the deployment process, they are synced, meaning that if an artifact changes, it is copied. A good DevOps foundation never changes the artifacts as they are promoted, it only inherits the properties of the new environment. In addition, if something doesn't change, it doesn't get promoted, because we want to always minimize the risk of an unexpected change.
The Artifact Waterfall from Dev -> Staged (QA) -> Production
Reduce Manual Testing during Continuous Integration
A focus on quality during continuous integration helps to minimize the cost associated with a defect by catching it as early as possible. So a defect addressed in development is far cheaper to resolve than a defect in production. Judicious use of the automated testing process over the manual testing processes will facilitate better quality.
Testing Strategy Around Continuous Integration
Each of the testing strategies with the solid black line (Unit, Smoke, and Regression Testing) works to reduce manual testing (Development and Integration).
Implicit in Unit testing is the notion that the developer starts every new unit of code with a test, and thus all code developed has test coverage.
will help by ensuring all components within the artifacts are tested fully, and regression testing will ensure that we achieve an expected result set for the artifacts as a whole.
DevOps Basic: Continuous Delivery and Regression Testing
Continuous Delivery builds on the Continuous Integration process and adds a Regression Testing component.
The Continuous Delivery process stages the new artifacts from the Continuous Integration and begins running regression tests to validate the new artifacts.
Deployment to production here is still manual, but the Operations actor has the artifacts and test results provided automatically. They can decide to promote the build candidate to production manually based on regression test output.
If a problem occurs unexpectedly, they have Continuous Monitoring in place and can revert the deployment.
Full Automation: Continuous Deployment and Recovery
Finally, once Continuous Recovery and Deployment the DevOps team owns a fully automated service.
Having both recovery and deployment in place is crucial because if an error occurs after or during deployment, then the continuous recovery can revert the changes and provided data for better smoke and regression testing to prevent defects.
A DevOps team can implement an automated production stack in stages. Members of the team perform the roles of Developer, QA, and Operations as they seek to automate their service.
Stage one is Continuous Integration. The team should implement continuous integration and a smoke testing component provides the gate to ensure a build is ready before it is deployed to a staging location for testing.
Stage two is Continuous Delivery. The team should implement automated regression testing on the staged artifacts and report to the Operations actor on their fitness for promotion to production. The Operations actor will manually deploy the artifacts to production and revert the changes if smoke or regression testing identifies any issues.
Stage three is Continuous Deployment. A Continuous Recovery process is essential to move to Continuous Deployment because the Continuous Deployment process will automatically deploy the artifacts into production and begin testing. If any issues arise the Continuous Recovery process will revert the changes and report the issues so Development can integrate into Smoke or Regression testing and we can catch issues as part of the standard development.
DevOps can seem daunting but by breaking down the automation components and starting with a phased approach, you can make 2021 the year for DevOps in your organization.