Deploying in classical organizations has always been a pain. In the DevOps cycle, two roles, Dev and IT, with divergent objectives and interests battle to publish the application. These go in different work environments, such as development, integration, quality / test, pre-production, and production.
As in any chain, it’s easy to break through the weakest link. And the more steps in the deployment processes, the more possibilities of human failure. Thus, DevOps promotes the automation of deployments through tools and scripts. With the goal of solving the entire process with an approval or activation of a feature.
Between each deployment environment, we must consider the context management – create, configure and destroy environments). Then, perform and pass the specific tests of each one, such as performance, resilience, functional, safety or UX tests. After, we manage configuration management (CMDB) according to the complex needs of different deployment contexts.
The most critical in this phase is the arrival of the Cloud, with its Infrastructure capabilities as a code. This forces a change from a finite infrastructure management to a management based on permanent cost optimization.
Operations: Ensuring proper functioning
Only a minority of apps go into production without constant optimization, evolution, or support. Usually, all operations related to its operation must happen continuously throughout the life of the software. This way we have:
- Resources adjusted according to demand or growth of the application
- Dynamic change in the infrastructure due to security, performance, and availability
- Process optimization to improve execution and exploitation.
During the operations phase, the Cloud concept applies like a ring to the finger. Be it public, private or hybrid, this platform offers opportunities of scalability, persistence, availability, transformation, resilience and security. Furthermore, we automate the optimization of operations scenarios to mitigate failures that happen because of human error.
This last phase of a DevOps process is a permanent phase and applies to the entire cycle. It’s where we monitor, analyze and measure all that displays the current status overview of the application and its infrastructure. Including all the dependencies.
And it has a reactive slope, where according to the results, we adjust the platform. Moreover, continuous learning allows us to anticipate needs and risks.
Now, the continuous feedback of all the areas of the DevOps cycle is consolidated and included in the next iteration. Either during the Planning phase, or immediately with specific corrections.
About the phases of the DevOps cycle
This was a generic, and perhaps idyllic, vision of a complete DevOps cycle. One following a logical structure, based on experience and literature. However, the reality is much more complex both in the implementation and in the execution.
But without a doubt, the biggest obstacle is communication between teams with different objectives and interests. Or maybe leaving your comfort zone to follow a trend. However, the benefits remain important in the field of productivity, Time to Market, or the flexibility of the business against customer demands.