What are Cloud-Native Applications?

 

The ideas and concepts of cloud-native computing introduced a new way to implement complex, scalable systems. Even if you’re not hosting your application on a cloud platform, these new ideas will influence how you develop applications in the future.

Pivotal, the software company that offers the popular Spring framework and a cloud platform, describes cloud native as:

“Cloud native is an approach to building and running applications that fully exploit the advantages of the cloud computing model.”

The Cloud Native Computing Foundation, an organization that aims to create and drive the adoption of the cloud-native programming paradigm, defines cloud-native as:

“Cloud native computing uses an open source software stack to be:

1. Containerized. Each part (applications, processes, etc) is packaged in its own container. This facilitates reproducibility, transparency, and resource isolation.

2.Dynamically orchestrated. Containers are actively scheduled and managed to optimize resource utilization.

3. Microservices-oriented. Applications are segmented into microservices. This significantly increases the overall agility and maintainability of applications.”




Both definitions are similar, but look at the topic from a slightly different perspective. You could summarize the definitions as:

“An approach that builds software applications as microservices and runs them on a containerized and dynamically orchestrated platform to utilize the advantages of the cloud computing model.”

Let’s take a look at the different parts.

Container

The basic idea of containers is to package your software with everything you need to execute it into one executable package, e.g., a Java VM, an application server, and the application itself. You then run this container in a virtualized environment and isolate the contained application from its environment.

The main benefit of this approach is that the application becomes independent of the environment and that the container is highly portable. You can easily run the same container on your development, test or production system. And if your application design supports horizontal scaling, you can start or stop multiple instances of a container to add or remove instances of your application based on the current user demand.

The Docker project is currently the most popular container implementation. It’s so popular that the terms Docker and container are often used interchangeably.  

 

 Orchestration

Deploying your application with all dependencies into a container is just the first step. It solves the deployment problems you had previously, but if you want to benefit from a cloud platform fully, you’re experiencing new challenges.

Starting additional or shutting down running application nodes based on the current load of your system isn’t that easy. You need to

·         monitor your system,

·         trigger the startup or shutdown of a container,

·         make sure that all required configuration parameters are in place,

·         balance the load between the active application instances

·         share authentication secrets between your containers.

Doing all of that manually requires a lot of effort and is too slow to react to unexpected changes in system load. You need to have the right tools in place that automatically do all of this. This is what the different orchestration solutions are built for. A few popular ones are Docker SwarmKubernetesApache Mesos and Amazon’s ECS.

Microservices

Now that we have all the infrastructure and management in place, it’s time to talk about the changes that cloud-native introduces to the architecture of your system. Cloud native applications are built as a system of microservices.  

The general idea of this architectural style is to implement a system of multiple, relatively small applications. These are called microservices. They work together to provide the overall functionality of your system. Each microservice realizes exactly one functionality, has a well-defined boundary and API, and gets developed and operated by a relatively small team.

 

 

 

 

Comments