What is Cloud Native & Orchestrator?

What is Cloud Native

In one of my interview, for a cloud based position, I asked my interviewer a question at the end, "could you give some advice to be a real cloud engineer?".

And the answer I get is, "you can play with some cloud native things".

So what is Cloud Native?

A cloud-native application must :

  • Scale on demand
  • Self-heal
  • Support zero-downtime rolling updates
  • Run anywhere that has Kubernetes

Scale on demand

Scaling on demand is the ability for an application and associated infrastructure to automatically scale up and down based on demand.

If configured correctly, Kubernetes can automatically scale your applications and infrastructure up when demand increases and scale them down when the demand drops off.

Self-heal applications

Kubernetes can also self-heal applications and individual microservices.

When you deploy an application on Kubernetes, you will have to specify what the application should look like. The following specifications will be necessary:

  • The number of instances of each microservice
  • The names of the networks to attach to

Kubernetes saves this as your desired state and monitors your application to make sure it always matches this desired state. If something changes, for example if an instance crashes, Kubernetes notices this and spins up a replacement. This is called self-healing.

Zero-downtime rolling updates

Zero-downtime rolling updates is just a fancy way of saying you can incrementally update parts of an application without having to shut it down and without clients even noticing.

Run anywhere

One final point of interest regarding cloud-native is that a cloud-native application is not an application that only runs in the public cloud. No! A cloud-native application can run anywhere you have Kubernetes, such as AWS, Azure, Linode, your on-premises datacenter, or even your Raspberry Pi cluster at home.

To summarize, cloud-native applications can self-heal, automatically scale, and be updated without downtime. They can also run wherever you have Kubernetes.

What is an orchestrator?

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.

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.

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.