Consider an orchestra. It is a group of individual musicians who play different musical instruments. Each musician and instrument can be different and have a different role to play when the music starts. There are violins, cellos, harps, oboes, flutes, clarinets, trumpets, trombones, drums, and even triangles. Each one is different from the other and has a separate role in the orchestra.
As shown in the illustration below, each one is an individual and has not been assigned a role –it is a mess, even the drum is upside-down.
An orchestra
A conductor comes along with the sheet music and enforces order. She groups the strings together at the front of the stage, woodwind in the middle, brass a little further back, and percussion high up and right at the back. She also directs everything, telling each group when to play, how loud or soft to play, and how fast to play.
In short, the conductor takes the chaos from the above illustration, imposes the order, and produces beautiful music along the way, as can be seen below:
The conductor
Well, cloud-native microservices applications are just like orchestras.
Each cloud-native application consists of numerous small microservices that carry out different jobs. Some serve web requests, authenticate sessions, and conduct logging, while others persist data and generate reports. But just like an orchestra, they need someone, or something to organize them into a useful application.
An orchestrator is a system that deploys and manages applications. It can deploy your applications and dynamically respond to changes. For example, Kubernetes can:
Deploy your application
Scale it up and down dynamically according to demand
Self-heal it when things break
Perform zero-downtime rolling updates and rollbacks
And the best part about Kubernetes: it can do all of that without you having to supervise or get involved in decisions. Obviously, you have to set things up in the first place, but, once you’ve done that, you can sit back and let Kubernetes work its magic.