The term “cloud-native” gets thrown around a lot, especially by cloud providers. Not only that, but it even has its own foundation: the Cloud Native Computing Foundation (CNCF), launched in 2015 by the Linux Foundation.

‘Cloud-native’ defined

In general usage, “cloud-native” is an approach to building and running applications that exploits the advantages of the cloud computing delivery model. “Cloud-native” is about howapplications are created and deployed, not where. It implies that the apps live in the public cloud, as opposed to an on-premises datacenter.

The CNCF defines “cloud-native” a little more narrowly, to mean using open source software stack to be containerized, where each part of the app is packaged in its own container, dynamically orchestrated so each part is actively scheduled and managed to optimize resource utilization, and to increase the overall agility and maintainability of applications.

“A cloud native app is architected specifically to run in the elastic and distributed nature required by modern cloud computing platforms,” says Mike Kavis, a managing director with consulting firm Deloitte. “These apps are loosely coupled, meaning the code is not hard-wired to any of the infrastructure components, so that the app can scale up and down on demand and embrace the concepts of immutable infrastructure. Typically, these architectures are built using microservices, but that is not a mandatory requirement.”

, which allows delivery teams to rapidly iterate using repeatable automation and orchestration.”

Cloud-native app development typically includes , , , , containers like and , and —in short, every new and modern method of application deployment.

Because of this, you really want to have a . A PaaS is not required, but it makes things a lot easier. The vast majority of cloud customers start out with , which helps abstract their apps from the underlying hardware. But PaaS adds an extra layer to abstract the underlying OS, so you can focus entirely on the business logic of your app and not worry about making OS calls.

Differences between cloud-native and on-premises applications

Cloud-native application development requires a very different architecture than the traditional enterprise applications.

. And if it’s on a mainframe, it’s likely in Cobol.

Cloud-native apps are more likely to be written in a web-centric language, which means HTML, CSS, Java, JavaScript, .Net, , , PHP, , and Ruby.

Updatability

Cloud-native apps are always current and up to date. Cloud-native apps are always available.

On-premises apps need updates and usually are delivered on a subscription basis by the vendor, and require downtime while the update is installed.

Elasticity

Cloud-native apps take advantage of the elasticity of the cloud by using increased resources during a use spike. If your cloud-based e-commerce app experiences a spike in use, you can have it set to use extra compute resources until the spike subsides and then turn off those resources. A cloud-native app can adjust to the increased resources and scale as needed.

An on-premises app can’t scale dynamically.

Multitenancy

A cloud-native app has no problem working in a virtualized space and sharing resources with other apps.

Many on-premises apps either don’t work well in a virtual environment or don’t work at all and require a nonvirtualized space.

their old on-premises apps to the cloud, Mann says. “Attempting to take existing applications—especially monolithic legacy applications—and move them onto a cloud infrastructure will not take advantage of essential cloud-native features.”

Instead, you should look to do new things in new ways, either by putting new cloud-native applications into new cloud infrastructure or by breaking up existing monoliths to refactor them using cloud-native principles from the ground up.

You also need to dispense with your old developer methods. The waterfall model certainly won’t do, and even might not be enough. So, you must adopt new cloud-native approaches like minimum viable product (MVP) development, multivariate testing, rapid iteration, and working closely across organizational boundaries in a .

There are many aspects to being cloud-native, including infrastructure services, automation/orchestration, virtualization and , , and observability. All of these mean a new way of doing things, which means breaking old habits as you learn the new ways. So do it at a measured pace.

Learn more about related cloud-native technologies