What are orchestrators and why do we need them?
In Chapter 9, Learning about Distributed Application Architecture, we learned which patterns and best practices are commonly used to successfully build, ship, and run a highly distributed application. Now, if our distributed application is containerized, then we’re facing the exact same problems or challenges that a non-containerized distributed application faces. Some of these challenges are those that were discussed in that chapter, namely service discovery, load balancing, scaling, and so on.
Similar to what Docker did with containers—standardizing the packaging and shipping of software with the introduction of those containers—we would like to have some tool or infrastructure software that handles all or most of the challenges mentioned. This software turns out to be what we call container orchestrators or, as we also call them, orchestration engines.
If what I just said doesn’t make much sense to...