Book Image

Cloud-Native Continuous Integration and Delivery

By : Onur Yılmaz
Book Image

Cloud-Native Continuous Integration and Delivery

By: Onur Yılmaz

Overview of this book

<p>Cloud-native software development is based on developing distributed applications focusing on speed, stability, and high availability. With this paradigm shift, software development has changed substantially and converted into a more agile environment where distributed teams develop distributed applications. In addition, the environment where the software is built, tested and deployed has changed from bare-metal servers to cloud systems. In this course, the new concepts of cloud-native Continuous Integration and Delivery are discussed in depth. Cloud-native tooling and services such as cloud providers (AWS, Google Cloud) containerization with Docker, container-orchestrators such as Kubernetes will be a part of this course to teach how to analyze and design modern software delivery pipelines.</p>
Table of Contents (6 chapters)

Building Cloud-Native Applications


CI does not only test applications but also creates deliverables such as executable binaries or UI packages. With the cloud-native applications, CI pipelines are expected to create production-ready containers as deliverables. Containers should already include the required libraries and binaries, and they should be ready to consume external volumes, environment variables, or configurations during runtime. With Docker runtime and tooling, it is easy to build and deliver containers; however, there are three critical points for the containers of cloud-native applications:

Single Application Packaging: Container runtime and the orchestrators such as Kubernetes work best when only one application is packaged to run in one container. For instance, only book-server should run in the container, and it should gracefully close its network resources when SIGTERM signals are received, as shown in the following code. Signal handling and the graceful shutdown of resources...