Cloud Native Apps are Designed for Automation

When you look closely at the architecture of cloud native applications, it quickly becomes clear that manual deployment and operations methods are not an option. That’s why cloud native apps are invariably orchestrated in some way to automate deployment and operations like scaling and healing. A well-designed application will be made for automation.

cloud-brain-mechanism-ideas

Cloud native applications tend to comprise a substantial number of different software components, partly because they usually implement stateless processing (and therefore have separate components for transaction processing and state storage), and partly because they are usually decomposed into a number of microservices.  Furthermore, each microservice is designed to scale out, and so multiple instances of each microservice component need to be deployed to handle the load on the application. 

For these reasons, deploying a cloud native application at scale may require the instantiation of many tens or hundreds of containers, which makes manual deployment operations entirely infeasible.

Cloud native application designers pay close attention to the requirements of orchestration and operations automation right from the outset. The focus is on achieving the simplest possible process for bringing up the components of the application, mainly by minimizing the amount of configuration that needs to be injected into each component.

The following practices are commonly employed in cloud native applications to keep things simple from an orchestration standpoint:

  •  Automated IP address assignment.  Cloud native application components invariably use Dynamic Host Configuration Protocol (DHCP) to obtain IP addresses, so the orchestrator does not need to be involved in IP address management. Note that IP addresses can also be hard assigned to cloud native network function (CNF) instances where this is necessary.
  • Shared configuration stores.  Cloud native application components invariably participate in a shared distributed key-value store from which they can obtain most or all of the day-zero configuration they need without the orchestrator having to take responsibility for this.
  •  Automated discovery.  Cloud native application components typically discover the peers with which they need to communicate either via a shared configuration store or via Domain Name Server (DNS).  Service meshes provide a more advanced means of service discovery.
  •  Elimination of hard dependencies.  Many inter-component dependencies typically exist within a given cloud native application, but the components are designed to be brought up in any order. If one component depends on a microservice exposed by another component, and that microservice is not yet available, then the component will keep trying to connect to it until it becomes available.

A word about Kubernetes

In the early days of cloud native, there were various solutions for orchestration, automation and lifecycle management, but Kubernetes has emerged as far and away the most popular of these.  Kubernetes supports deployment, monitoring, healing, scaling and software upgrade of containerized cloud native applications. Helm provides a means to template the deployment of complex Kubernetes applications in a declarative manner (similar to Heat in OpenStack), while Kubernetes Operators provides a framework for extending the native lifecycle management logic of Kubernetes to custom operations that may be required for more complex cloud native microservices, particularly stateful ones.

It is hard to overestimate the importance of Kubernetes to the cloud native movement. It shows up in every private and public cloud environment on which cloud native applications may be expected to run, and is so universal now that, if an application isn’t designed to be orchestrated by Kubernetes, it can’t really be considered cloud native.

For more on the fundamentals of cloud native application design please download our recent white paper.

And to learn how Metaswitch helps communications service providers adopt network automation, we have a white paper here for you too.