Author: Yonatan Huber
The ‘Tech CHEQ’ series offers internal expertise from CHEQ’s cybersecurity team.
In the last few years, a lot has been spoken about DevOps. As businesses are looking for faster solutions and increasing product innovations, more companies are adopting what is called a DevOps culture, focusing on collaboration between development and IT.
But instead of speaking about agile business strategies, I want to explain the process of our work. As a DevOps engineer, I will cover the DevOps phases, tips for enabling creativity, as well as how to make sure you are on the right track to make product innovation possible.
The Three Phases
In developing the tools streamlining product development, it is important to understand we follow the developers in their three phases: development, staging, and production. Others divide DevOps into more phases, but I believe these three can summarize it all.
Development & Staging
At first, in the development phase, we are responsible for creating several product developers’ codes. This is where the project vision starts to take form and, like all beginnings, is a crucial step for creating the structures that will make testing and experimenting possible – two key components for anyone looking for product innovation.
In the second phase, integration happens and the various “parts” and codes we created are deployed together. This is what we call staging. Here, we run “end to end” tests and replicate the production environment, enabling real-world testing. After all, we are aiming to give life to production.
Production and Continuous deployment
Finally, we get to the third phase. Here the challenge for DevOps, among others, is to ensure that the production environment developers are using is the same environment in which the product will be deployed and that users will have their experience. As said, we want to see production alive, and this is the phase where it happens.
Automation is crucial
To allow developers to test and simulate the real user environment, the DevOps team must automate the whole process. Without it, the possibility of testing, deploying, and innovating is compromised.
Just imagine, let’s say, that developers had to manually provision every computer or every cloud node, to be able to use the production environment and experiment with new things. What a nightmare it would be.
In this sense, by having continuous integration and deployment made possible through the tools DevOps create, we allow for faster and better product innovation.
Rolling Back: The creativity enabler
But if you are interested in the subject, you are probably saying: “well, Yonatan, this is all good, but what if something goes wrong? Not always everything works smoothly.”
It is true. Sometimes a “bad code” happens and enters the production and live environment. That’s why in DevOps we must work in a way to be able to always roll back. By facilitating quick and easy small steps to roll back the code, we are given a certain level of security to try out new things, experiment, and deploy new codes faster.
Monitoring: The Ops in DevOps
Besides being able to roll back, we must take monitoring seriously. Taking responsibility to install tools that monitor and quantify, allows us to know about issues at their early stages.
With this, we can alert developers and secure that the problems will not evolve. For instance, by monitoring, we can check if a certain infrastructure is reaching its limit and needs more resources, or if the resources are being underused, turning into waste.
You will see that, because we have implemented the infrastructure of the live environment correctly, as well as testing and monitoring, we will have minimal troubleshooting to do. With fewer bugs, issues, and events scaping the “dome”, as we call it, more time can be invested in development.
Balance: The Key Word
Finally, the focus of our job is to make sure all teams can use the product environment just as a user would. We structure ourselves to enable product innovation, to enable creativity.
At the end of the day, we create the shortcuts to make this possible, so developers can test new things and we can limit the impact on user experience.
That’s why the last important word is balance. If you can reach the level of having a dynamic deployment environment, that balances the developers’ freedom to create, business agility, and costs, you will be on the right track.