I was reminded this week of the words “Every company is a technology company” remarked by Accenture Group CTO Paul Daugherty that ring more true today. Companies are increasingly demanding talented IT professionals for growing cloud-based applications that lead to increasingly complex development and operating environments.
In this blog, we are going to highlight a relatively simple concept that is profound to working DevOps in the Cloud with these scaling teams. These concepts will severely help growing IT teams achieve shorter times to market with fewer disruptions: Promoting applications through environments. But what is promotion? Why do we need to do it? And how does it work? Let’s get at it.
What is promotion?
As a feature or application is developed, it gets closer and closer to its end state where it is fully functional. Application promotion is enabled by the creation of development, testing, and production environments that are isolated from one another. This allows the application to move through these environments as it matures. We can this movement a promotion.
Why Do we need promotion?
Promotion allows teams the freedom to develop as they see fit, to thoroughly test an application before it goes live, and to not interfere with the application that is already live and accessible to the end-users.
It is a process that should reduce risks, increase security and stability as well as reliability of the application and its environment.
So, how does it all work?
Imagine that we have 5 developers working on a new feature for this-awesome-application that will allow users to place very complex orders with the single click of a button. This feature needs to be added without disrupting the current correctly functioning version of the application. Also, the feature needs to be developed in stages with increasing complexity is added until the team is satisfied.
Since this whole process is buggy and is meant for development, this process should not happen within the same environment where the application is being used. Therefore we have a development environment; if you are using Openshift or Kubernetes you could say a development cluster. This digital environment is meant for testing and the developers can do whatever they want here as there are no consequences if things go wrong.
After the feature is deemed ready to be used (assuming it has successfully passed all the needed testing) this new feature can move on to the acceptance environment. This is a replica environment of the actual application that is being used by end-users. This way, the feature can be tested here to see how it plays with all the other components of the application. All integration problems that were missed by the individual tests run earlier should reveal themselves here.
After the application functions well in the acceptance environment, it is ready to go to production. Production is where the application is use resides. Once the feature has been moved here, it is available for use by the end-users.
Automation and CI/CD
A lot of these flows are customized and automated in different ways, so there is no ‘right way to promote applications. However, now you have a general idea of the concept of promotion and how it makes the application more stable and your DevOps teams more in control of the development process. DevOps Continous integration and continuous delivery/deployments are concepts we will tackle further in future blogs.
As you go move your workloads towards the cloud, it is key to remember to obtain resources that allow for the hosting of these environments. Once the environments exist, automating pipelines through them is the fun part!