7

I have heard this term a couple of times. What exactly does a Cloud-Native application refers to? What are the features of a Cloud-Native applications?

  • 4
    Easy: a buzzword. – Andres F. Nov 4 '16 at 0:07
3

tl;dr

As other answers have said, it's an application that is designed to run in the cloud and not just adapted later to shoehorn into the cloud. It's mainly a marketing term, not so meaningful in technical terms.

Product Manager Perspective

As a commercial product manager, I find it occasionally a useful concept because the customer generally wants to feel that he has bought a product that's better than the alternatives, or that is at least "authentic" and not a fake. So product marketers tend to conveniently define this in ways that make make as many competitors as possible sound non-authentic. In some industries the usefulness of this tactic is long over. Everyone is Cloud.

Developer Perspective

As a software engineer the term is pretty ineffective for conveying technical information. It relies on the audience's perceptions, opinions, and knowledge of Cloud based applications. Since the essence of delivering a cloud based product is that customers should have a great experience without worrying about the implementation details, a product that achieves that should seem native to the customers.

Having built commercial products for the cloud from the ground up, and having architected migration of large pre-cloud products to the cloud, I can say that in each case the provenance of a product is not all that predictive of how the cloud version will turn out. One pre-cloud product set I worked on had major problems getting to cloud with effects quite apparent to customers and in terms of infrastructure and devops costs. Another was a relative cake walk and once migration is complete no one would ever have to know where it came from.

Software designed for the cloud from day one is not always 'well designed' for the cloud. It often perpetuates assumptions that are not particularly scalable or serviceable, overlooks security or isolation concerns, or does not deliver the benefits typically associated with Cloud.

Is There an Authoritative Reference?

There's no universally accepted standard list of properties to define a 'Native Cloud Application'. If you seek a fairly neutral definition of Cloud Computing, there's always the NIST Definition from the US Government. Already feeling a bit old after four years. It outlines five characteristics...

  1. On Demand Self Service
  2. Broad Network Access
  3. Resource Pooling
  4. Rapid Elasticity
  5. Measured Service

Notice it does not appear to mention things that are often seen as essential to Cloud-ness, such as...

  • A UI that requires zero IT resources to deploy. (Browser or App Store for example). We could fit that under "Self Service"
  • A multi-tenant shared database. Some people incorrectly assume that's essential to cloud. The real answer there depends on the application and relevant regulations. There are lots of ways to pool resources.

So I would suggest you look at it this way...Does the product deliver the characteristics of a cloud application, including NIST's characteristics and any that are important to you. That UI characteristic has always turned out really important to me.

Also, especially if you are buying the company, or just joining as an employee, consider whether the product has behind the scenes problems for devops, security, infrastructure costs that would not be there if it had been designed well for cloud.

  • In terms of practical development experience, is a cloud native application developed locally or in the cloud? E.g. is a developer sshed into an AWS EC2 instance making changes to server code and checking in features from the compute resource? – Andrew Allbright Oct 21 '18 at 16:49
  • @AndrewAllbright Either or Both. A "cloud native" application can be developed locally and deployed to the cloud, or developed in a cloud environment, or both. It mainly depends on your preferences and the tools you use. I develop locally with java, tomcat (for AWS Elastic Beanstalk), jetty, mysql (to RDS), javascript (deployed to S3). AWS Lambda has, for me, always required some development environment in the cloud for debugging and testing. For me the choice is mainly about reducing test-code-test cycle time and avoiding collisions with other developers. – joshp Oct 21 '18 at 21:02
2

A "cloud native" application is simply an application designed from the ground-up to run in a cloud environment.

Contrast this to an application that runs in the cloud, but was originally designed for non-cloud contexts. For example, a web application that can run on a regular web server or in a cloud environment.

For a real-world comparison, look at actual cloud offerings. Environments such as Amazon EC2 are more like dynamically-scalable non-cloud environments, while products such as Salesforce are propriety cloud-only environments. Running cloud-native applications is what Salesforce is all about, while in EC2 the distinction is less clear.

0

Cloud-Native simply refers to applications that are born in the cloud — as opposed to applications that are born and raised on-prem. A Cloud-Native application is designed specifically for a cloud computing architecture. Cloud-Native are designed to take advantage of cloud computing frameworks, which are composed of loosely-coupled cloud services.

Not the answer you're looking for? Browse other questions tagged or ask your own question.