What are orchestrators and why do we need them?
In Chapter 6, 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 highly 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 discussed in Chapter 6, Distributed Application Architecture, 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 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 orchestrators or, as we also call them, orchestration engines.
If what I just said doesn't make much sense to you yet, then let's look at it from a different...