DevOps looks like an interesting concept, but do you really want to apply it? Yes, you do! The same question was asked when industrial revolution has started: do we want to use the machines? Or when integrated-chips were developed and computer revolution was on its way, the question was do we want to use the computers? It is clear now how the use of computers and machines has increased over time. They have become part of our daily jobs for most of us.
The ones who adopted the use of computers in the early days, they did it to get assistance, to get things done faster and more precise. Some of the critical things were not even possible to be done by humans, e.g. fast calculations for encryption of messages or detailed calculations needed for landing the spacecraft to the moon. More and more tasks which were done manually by humans were handled by the computers and other machines and they are still improving and becoming more efficient.
Many people were not comfortable by being replaced by the machines and many did not like to use the computers. For many people computers were confusing and it was hard to change the old habits but as we can see today, these changes were evolution and it was inevitable. You either embrace it and adapt or you lose.
The same thing is happening today in IT related businesses in respect of delivering the changes to the systems in production. It is an evolution to automation of tasks. It starts slowly, step by step. After the development team makes the requested changes, they need to deliver the changes. In the beginning they do it manually. If it happens that number of deliveries increases, they notice that much time is spent on the process of the delivery of changes. And as it is done manually, human errors can happen in the process as well. If the system grows larger and more complex, it happens that one needs to deliver changes to more and more servers and again, the time for this delivery increases.
Automation of tasks saves time which can be used to focus on business requirements and new changes. As it is done by the computers, logs are produced which helps in better monitoring of processes. Popular tool Jenkins can be used to detect the changes of code which can be named and described in versioning system. Jenkins can start the testing of changes and deliver the changes to the system. These changes are logged and are visible in the dashboard which can be supervised by relevant stakeholders which can include developers, product managers etc. The process of changes gets more visible and can be monitored better.
To allow the automation of tasks there are few things which are required in order to make it efficient. DevOps team, which includes development and operations team, needs to choose the proper tools and document the procedures and workflows for automation. This brings new concepts which help the teams grow and to recognize the new opportunities to become more efficient. Versioning systems are needed to describe the changes, see what has changed and easily switch amongst different versions. The most popular tool today is Git and most popular providers for Git are GitHub, GitLab and BitBucket. Jenkins can be used to automate the tasks and workflows like testing, deployment, reporting. It has variety of plugins and it also visualizes the steps in the workflow. Docker is popular tool where one can use software in efficient virtualized environment. It uses less resources and has expected behavior on all systems. This is a solution to problem of installing a software to different environments which can have different versions of OS or it can have tools which are present in the system which all affects the behavior of the software in various ways. Docker is popular as an image of the product which needs to be delivered but also as an image of software which we want to use. Docker images are configurations expressed in a code which extend the base image. DevOps practices promote configuration management expressed as code since this brings also a level of control which can be automatized and monitored. One level more is infrastructure expressed in the code. Cloud is a popular environment where these principles can be applied. One can use Terraform scripts to provision the needed infrastructure in Oracle Cloud. These scripts are files versioned in the version control system which gives an opportunity to monitor and change the infrastructure by changing the code in scripts. This means that provisioning can be automated as well by the computers according to the parameters of business requirements and amount of usage of the system.
Our applications and our systems are growing bigger and in order to stay efficient, we need to apply DevOps tools and concepts. To achieve that, a good collaboration is needed between business, development and operations. This brings new opportunities which help us to optimize the process of applying the changes to the systems.
Does #StayAtHome actually make a difference?
Intelligent execution of ETL processes
DevOps is a set of automated tools or set of practices that must be adopted
Use benefits of cloud on premises (private cloud)
How to avoid mistakes with multiple developers on tight deadlines