Why do I need a CI / CD and how to learn how to configure it?





Navigating CI / CD is useful for both infrastructure engineers and developers. Konstantin Bryukhanov, Lead DevSecOps, explained how valuable this methodology is and how students learn to customize its processes in the online CI / CD course .



Hello! I'll start by telling you about the meaning of using CI / CD. I can single out 5 reasons:



1. Saving time due to reuse of code and fast deployment of projects



Having described some kind of pipeline for the delivery and deployment of code, you can always reuse it. For example, you have 5 Django projects, and you have already described in one of them how everything should unfold and work. These developments can be taken and copied by automating other Django projects with a little reconfiguration.



2. Getting the expected result from the deployment



The expected result means that if you once described the infrastructure or a process in the form of code, then every time you perform some automatic deployment processes, they will be the same. You always know what you get in the end.



CI / CD allows you to prevent situations when today you have deployed in one way, and tomorrow someone corrected something for themselves, you come, but everything does not work, and you need to figure out why. You have the opportunity to guarantee the business that the processes will lead to exactly the result that you regulate.



3. Project independence from the environment



Remember the frequent situation when you deployed the code to the server, nothing starts up for you, but the developer says that everything works for him. And you have to spend time to find out that in fact he changed some kind of addiction, which he kept silent about, for example. You have to reverse engineer and figure out the situation.



In CI / CD, everything that is needed for the service to work already comes with it. That is, you put your code, databases, dependencies in the container and give it to the server. Everything goes in one essence. Wherever you transfer this container, it has everything to work with. You don't have to waste time setting up your environment.



4. Immutable infrastructure and easy migration



Immutability means that the infrastructure is always in the same state. You have deployed a server that has launched all the necessary processes, and any changes on this server will not be reflected on it. If you restart this server and re-run the server deployment process, it will return to its original position. There is no way to make and write any changes to the server infrastructure. There is no way to harm him.



And the ease of migration means that you just need to describe everything once. And when you need, for example, to deploy from one data center to another, you simply change the end point where to deploy, and move with ease, deploy the same code without any additional changes.



5. Possibilities of the "Infrastructure as Code" approach



This means that all programming patterns and approaches that are used for code are applicable to the infrastructure.



The most important thing is the presence of full-fledged versioning, which is done in the code, not the servers. This allows you to roll back, if necessary, to a previous version of the infrastructure. And an equally important opportunity to test the infrastructure, that is, to do a test deployment of the server, configure it so that it does not affect the rest of the servers.



In summary: what is CI / CD?



The concept allows to reduce the time to market without losing non-functional requirements: scalability, fault tolerance, documentation, etc. It consists of 2 things:



  • CI (Continuous Integration) allows you to quickly integrate code changes into the working version of the code. Make sure that the new code gets into the last stable one.
  • CD (Continuous Delivery / Deployment) allow not only integrating functionality into the working version of the code, but also bringing a new working version of the code to market as quickly as possible. Depending on the tasks of the project, this happens either automatically, or we ourselves send the code using refined scripts.


From here it is obvious that it is not enough just to study the technologies Gitlab CI, Doker, Ansible, terraform, etc., on which the CI / CD is built. Therefore, on the course, we were especially attentive to working out the practice. Design work is the final part of the training, where you will implement the CI / CD processes for any opensource project of your choice. The sequence of students' actions is as follows:



  • CI/CD Workflow, Gitlab CI. : , , .. .
  • , , . , . , Django. Java ..
  • CI/CD, , CI. , , . , .
  • : terraform-, Ansible-, , Doker-, , .
  • pipeline, .
  • pipeline , , .


The goal of the final work is to get a completely finished solution, acceptable for the business, that can be added to the portfolio and demonstrated at the interview. In fact, if you come to a company and say that you have developed universal solutions from scratch for three different projects, this is a serious argument for getting a position.



Classes begin on August 27, but you can join the group within two weeks after the start. The course is designed for professionals with experience in development and operation, for training you will need to pass an entrance test . I am waiting for everyone who decided to master this useful technology for their projects and career growth. See you at OTUS!



All Articles