Cloud-native computing takes advantage of many modern techniques, including PaaS, multicloud, microservices, agile methodology, containers, CI/CD, and devops
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.
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 how applications are created and deployed, not where. It implies that the apps live in the public cloud, as opposed to an on-premises data center.
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 microservices-oriented 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.”
Cloud-native app development typically includes devops, agile methodology, microservices, cloud platforms, containers like Kubernetesand Docker, and continuous delivery—in short, every new and modern method of application deployment.
Because of this, you really want to have a platform-as-a-service (PaaS) model. A PaaS is not required, but it makes things a lot easier. The vast majority of cloud customers start out with infrastructure-as-a-service (IaaS), 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.
The challenges of cloud-native computing
One of the big mistakes customers make is trying to lift and shift 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 agile development 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 devops model.
There are many aspects to being cloud-native, including infrastructure services, automation/orchestration, virtualization and containerization, microservices architecture, 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.