Chapter 3. How to Manage Your Apps by Using Orchestration Tools
In Chapter 2, you learned how to manage your infrastructure as code. In this chapter, you’re going to shift your focus from managing infrastructure to managing apps. This brings us to the domain of orchestration tools, which are tools designed to handle the many requirements that are unique to running apps.
For example, one requirement is figuring out how many copies of your app to run. Running a single copy of your app, as you did in the previous chapter, is fine for learning, and for some use cases, a single copy may be all you ever need. But if your business depends on that app, having just a single copy may cause problems, such as outages due to hardware issues (e.g., the server dies), outages due to software issues (e.g., a bug that causes your app to crash), and outages due to load (e.g., your app becomes so popular, it exceeds the capacity of a single server). In short, a single copy of your app is a single point of failure. To run applications in production, you typically need multiple copies, called replicas, of your app.
Some of the other requirements of running an app include automatically restarting it if it crashes, deploying more replicas when there is heavy load, balancing load across multiple replicas, communicating with other apps, and so on. If you search around, you’ll quickly find many orchestration tools that can handle these requirements for you, such as Kubernetes, OpenShift, EC2, Amazon Elastic ...