In modern software development, CI/CD pipeline is really important. It can help the team focus on actual development work and reduce manual processes. With an automatic pipeline, the development workflow is more productive and less error-prone.
CI/CD stands for continuous integration and continuous deployment and/or continuous delivery. It is a process that automates the workflow in the development pipeline and standardizes the development pipeline for the development team. In a microservices architecture, we have different services that need to be built and it is hard to run the build manually. Without an automated pipeline, it is hard to manage the services’ deployment and testing. Also, the developers need to spend a lot of time running the build manually. From here, I think you will know the manual build process is inefficient for the development team especially since some teams build their apps quite frequently. So, we need a CI/CD pipeline to help us manage the development workflow.
Continuous Integration
In continuous integration, we want to make sure the code is reliable and executable. Therefore, in this stage, we run the test, build, and package to build the app and ship the image to a container registry. Also, it provides version control for our code and a unified workflow for code integration.
Continuous Delivery
In continuous delivery, we want to extend the functionality from continuous integration to create an automated release process. Any deliverable can be deployed to a non-production or production environment by clicking a button.
Continuous Deployment
In continuous deployment, we want to have a more automatic way to deploy the image to the actual backend infrastructure without clicking anything.
Benefits
Faster and reliable development workflow
Automated build and delivery
Fast feedback loop
Application version control
Less context switching because developers can focus on actual development work
Frequent iteration
Post-deployment
After deploying the app to the backend infrastructure, we need to have different monitoring tools such as APM and log monitoring to help us visualize the performance or observe application behaviors. I created a topic related to log monitoring and alerting before, please check it out if you want to know more.