Continuous integration is a software development practice which we use to regularly merge code changes into a central repository, after which automated builds and tests are run. The key goals of continuous integration are to find and address bugs quicker, improve software quality, and reduce the time it takes to validate and release new software updates.
Continuous delivery is a software development practice, which we follow,where code changes are automatically built, tested, and prepared for a release to production. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage. We will always have a deployment-ready build artifact that has passed through a standardised test process.
The microservices architecture is a design approach which we use to build a single application as a set of small services. Each service runs in its own process and communicates with other services through a well-defined interface using a lightweight mechanism using an HTTP-based application programming interface (API). Our Microservices are built around business capabilities; each service is scoped to a single purpose. We use different frameworks or programming languages to write microservices and deploy them independently, as a single service, or as a group of services.
We monitor metrics and logs to see how our application and infrastructure performance impacts the experience of our product’s end user. By capturing, categorising, and then analysing data and logs generated by applications and infrastructure, we understand how changes or updates impact users, shedding insights into the root causes of problems or unexpected changes. Active monitoring becomes increasingly important as services must be available 24/7 and as application and infrastructure update frequency increases. Creating alerts or performing real-time analysis of this data also helps us more proactively monitor these services.