In a previous article, we talked about Continuous Integration (CI). We will now discuss the principle of Continuous Deployment (or CD) which is also an important DevOps concept.
DevOps according to Padok
Padok has a simple DevOps philosophy, it's all about accelerating the delivery of quality features to users. This is achieved by accelerating development and release as well as by implementing an automated test chain. The key is to simplify the life of developers so that they can focus on their code and not on Ops issues (servers down, slow development environment, etc.). Ops provides developers with the best tools to work in the best conditions.
More globally, DevOps is the fact of having a stable and scalable website, software or app in production, and this in an automated and continuous way. But it requires a change in the organization of the team to achieve this result.
To know which DevOps tools and DevOps processes to implement, Ops and Developers must collaborate, they need common goals and a desire to progress in the same direction. To learn more, see this article on how to align your Devs and Ops.
What is Continuous Deployment (CD)?
As a reminder, Continuous Integration (CI) is an automated testing phase integrated into the deployment flow.
Continuous Deployment (CD) is the continuation of Continuous Integration. Once the tests have been validated on the dev environment, it must be put into production. Continuous deployment, therefore, consists of automating deployment actions that were previously performed manually. This is why we often talk about CI/CD together.
To automate deployment actions, tests on the qualification environment need to be automated to ensure that the new functionality to be pushed works properly.
The difference between continuous deployment and continuous delivery
Continuous deployment is an ideal that few companies have implemented. Most of the time, IT teams prefer to have control over the last stage of the deployment. In this case, we talk about continuous delivery, all the steps of the deployment are automated except for the last one: the production launch.The continuous deployment includes continuous delivery. Continuous deployment goes beyond continuous delivery by automatically orchestrating the deployment of new features.
The advantages of continuous deployment and continuous delivery?
The advantages of continuous deployment and continuous delivery are numerous. For developers, deployments are less tedious and most tasks are automated. They quickly know whether their code works or not thanks to automated testing. They can focus on development.
There is also less risk of possible errors since there are fewer manual actions. The continuous deployment process is, therefore, more reliable.
And for the company, the main advantage of the CI/CD is the increased frequency of production releases. Time-to-market is considerably reduced, which allows for faster innovation. This gives the company an additional competitive advantage.
Continuous deployment tools
The tools for continuous deployment are often the same as those for continuous integration :
Jenkins is an open-source integration and continuous deployment tool developed on Java. Jenkins can be installed and launched on our own server. This CI/CD software has many plugins that allow you to add more functionality to your CI server.
Travis CI is a CI/CD hosting software that integrates with your GitHub projects. Travis CI is free for open-source projects. They work hand in hand with GitHub to have a smooth deployment chain.
If you're using Gitlab, you already have access to integration and ongoing deployment tools. Gitlab CI even allows you to run integration tests locally on your machines. If you're looking for feedback, Trainline has switched from Jenkins to Gitlab CI and is featured in this article. You can also follow this tutorial to install an automated pipeline on Gitlab.
Circle CI is a CI/CD hosting service. It integrates perfectly with GitHub and Bitbucket. However, it is not possible to connect GitLab projects to Circle CI.
TeamCity is a CI/CD software that is simple to install and use. TeamCity is available free of charge.
Continuous deployment is, therefore, the goal of continuous delivery. And to be able to implement Continuous Deployment, a continuous integration process must be in place beforehand. There are many CI/CD tools available, some of them free of charge. You will need to assess your needs to find the one that will be best suited to your project. If you have any questions about implementing the DevOps CI/CD concept, please do not hesitate to contact us.