Hands-On Docker for Microservices with Python
上QQ阅读APP看书,第一时间看更新

Understanding continuous integration practices

Continuous integration (usually abbreviated as CI) is a series of software engineering practices that ensure that code is always in a working state. 

The term continuous integration comes from historically having to integrate software frequently, often multiple times a day. This arose from the fact that developers worked with local code that was not necessarily joined with other people's code automatically. Nowadays, using a source-control versioning software such as Git makes some of the elements automatically available.

Continuous integration emphasizes on having potentially releasable code at all times. This makes releases possible very often, with small increments of code.

Making more releases more often actually generates an increase in the quality of each release. More deployments also mean that each deployment is smaller, reducing the possibility of a big problem. Even if it sounds counterintuitive, faster deployment is highly correlated with higher quality in deployments and fewer production problems.

The objective here is to be able to increase the deployment speed. But for that, we need to be sure to build a good safety net that checks (automatically) that what we're doing is safe to release. That's where all the CI practices come into play.

It is quite possible, after setting all the processes and infrastructure in place, to implement releases multiple times a day (assuming that the code is generated fast enough). It can take a while to get there, but be sure to take your time to understand the process and produce all the necessary tools to be certain that you gain speed without sacrificing stability. And, trust me, it is totally achievable!