What is cloud-native? The modern way to develop software


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 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.”

For cloud-native applications, the big difference then is really how the application is built, delivered, and operated, says Andi Mann, chief technology advocate at Splunk, a cloud services provider. “Taking advantage of cloud services means using agile and scalable components like containers to deliver discrete and reusable features that integrate in well-described ways, even across technology boundaries like multicloud, which allows delivery teams to rapidly iterate using repeatable automation and orchestration.”

Cloud-native app development typically includes devopsagile methodology, microservicescloud platforms, containers like Kubernetes and 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.

Differences between cloud-native and on-premises applications

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

Languages

On-premises apps written to run on company servers tend to be written in traditional languages, like C/C++, C# or another Visual Studio language if deployed on a Windows Server platform, and enterprise Java. 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, GoNode.js, PHP, Python, 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

Swiftype Trends

Be the first to comment

Leave a Reply

Your email address will not be published.


*