Grounded in the Cloud
cancel
Showing results for 
Search instead for 
Did you mean: 

Real World Advice on How to Write a Cloud Native Application

TerenceNgai

cloud-app.jpgThere has been a lot of discussions out there about moving applications to the cloud for the benefits of scale and agility. However, not too many people truly understand how to reap the full benefits of cloud. I like to touch on a few basic concepts here on how to write a cloud-native application that is smart enough to take advantage of a true cloud infrastructure environment.

 

There is a common misconception among many IT professionals and business executives that if you simply move an existing application to run on top of a virtualized infrastructure, you’ll gain additional scalability and performance improvement. That is simply not the case. If you truly want to take advantage of the benefits of cloud computing, you need to develop your application to take advantage of the underlying cloud infrastructure.

 

To fully take advantage the dynamic scalable nature of cloud environment, you have keep these 4 key requirements in mind when developing or rewriting your application to run on the cloud:

 

  1. Decouple from physical infrastructure
  2. Design to tolerate infrastructure failure
  3. Multi-tenant
  4. Stateless

 

Decouple from physical infrastructure

 

The nature of cloud is one in which the infrastructure is very dynamic. A compute node could be running on this machine at one moment, and at the next moment, another compute node could be spun up at another machine. So, a cloud native application, first and foremost, need to be decoupled from the physical infrastructure elements. It should have the ability to move across different servers or networks freely. If a physical server is down, you can move the application instance to run on another server without waiting for that physical server to be fixed. That’s how you get the agility and the flexibility without the need for over-provisioning.

 

Design to tolerate infrastructure failure

 

A traditional client/server application is typically designed to run on a dedicated server and network. To ensure the application is up and running, you typically put a lot of effort in ensuring the underlying infrastructure is highly available and fault tolerant. In the cloud world, it’s actually quite different. A cloud application must be designed to tolerate the failure of its underlying infrastructure. For instance, if a compute node fails, the application has to be smart enough to recognize the hardware failure and automatically remap the IP address to another node. It has to be smart enough to know the changes in the infrastructure layer and make the adjustments on the fly.

 

Multi-tenancy

 

The third requirement of a cloud native application is multi-tenancy. You can achieve horizontal scalability by having multiple nodes running concurrently that share the same configuration. You can add more servers quickly and spin up more instances to deal with higher demand, or close down the instances when the demand drops. That is how you achieve the flexibility of horizontal scale out as opposed to vertical scaling up which of course is limited by the size of your server.

 

Stateless Components

 

Finally, a cloud-native application needs to be stateless – meaning it does not record any data generated in a session such as the user settings or events that just occurred. This is primarily for scalability and portability reasons, a stateless application can be scaled horizontally much more easily and runs much better under high load compared to application that needs to keep track of every session state.

 

There are certainly many other technical considerations or recommendations you can add on to this list, such as asynchronous communication, distributed database, continuous delivery/continuous integration, etc. Some are certainly sound design principles and some are nice to have. Identify the cloud service requirements and performance metrics you are designing for. Use the right tools that can help you build the cloud applications that are smart, resilient and portable.

 

To learn more, please visit hp.com/helion.

0 Kudos
About the Author

TerenceNgai

cloud SaaS hybrid IT

Events
28-30 November
Madrid, Spain
Discover 2017 Madrid
Join us for Hewlett Packard Enterprise Discover 2017 Madrid, taking place 28-30 November at the Feria de Madrid Convention Center
Read more
HPE at Worldwide IT Conferences and Events -  2017
Learn about IT conferences and events  where Hewlett Packard Enterprise has a presence
Read more
View all