CI/CD - Continuous Integration and Continuous Deployment
CI/CD
CI (Continuous Integration)
Continuous Integration (CI) is a method for running tests whenever application code is added or modified and keeping the code in a reliably working state. CI is a development process designed to improve software quality.
- Automates builds and tests.
- Addresses the limitations of the traditional approach, where code quality is managed only after all development is complete.
- Maintains quality by continuously integrating code during development.
CD (Continuous Deployment or Delivery)
- Automates deployment.
- A concept for continuously managing software so that it can always be deployed at a reliable level.
Fault-tolerant system
- A fault-tolerant computer system is designed so that even if one component or module in the system has a fault, system operation is not affected.
- A fault-tolerant system can continue to operate normally or partially even when some components have a fault or failure.
Types of deployment
Rolling Deployment
- A rolling update gradually shifts traffic from old-version servers to new-version servers while creating servers with the new version.
Blue-Green Deployment
- An application release model that gradually transfers user traffic from a previous version of an application or microservice to a new version that is almost identical.
- The previous version can be called the blue environment, and the new version can be called the green environment. Once production traffic has fully moved from blue to green, blue can be kept on standby for rollback or taken from production and updated as a template for the next update.
Canary Deployment
- The origin of the term Canary makes the idea easier to understand. A canary is a bird said to be very sensitive to carbon monoxide and toxic gas. In the past, miners kept canaries nearby while working in mines and evacuated if the canary suddenly died.
- Canary deployment is a deployment technique that detects risk quickly, like a canary. A new version is deployed only to some servers, around 10%, and after confirming there are no problems, it is gradually deployed to all servers.
CI/CD tools
- Jenkins
- Travis CI
- Bamboo
- CircleCI
- TeamCity