From the course: Cloud Native Development with Node.js, Docker, and Kubernetes

What does "cloud native" mean?

From the course: Cloud Native Development with Node.js, Docker, and Kubernetes

Start my 1-month free trial

What does "cloud native" mean?

- [Instructor] Before we can describe cloud native, we first need to talk about cloud computing, what it provides and how to use that to understand what cloud native really means. So why cloud computing? Wikipedia describes cloud computing as "the on-demand availability of cloud system resources." And this refers to the use of data storage and computing power without direct active management from the user. And this means that you can use that cloud resource in order to deploy your applications. It also helps to minimize upfront IT infrastructure costs because you don't need to buy and provision hardware for the amount of work that you are banked to do, you only need to provide hardware and buy resource for what you are currently using. So cloud computing provides a managed platform that's infinitely scalable and always available and compute on demand. Now the availability of this kind of platform is changing the way traditional computing works to a new system. Traditionally, you would have a server and on that server you'd hit a JJ EE application server which your team uses to manage your applications. And that could be several Java applications that talk to each other using Java APIs. If you need to scale that server, you then just provision a new server with a new copy of that Java EE application server and all of the applications on top of it. As we move into the cloud, microservices become a possibility. Martin Fowler, one of the thought leaders for microservices, describes them as "a suite of small services "that run on their own "and communicate with each other "using lightweight mechanisms." These are things such as HTTP, using REST APIs. He also describes that they should be independently deployable, which means they are also independently scalable. And this means that as we take our applications which would run on a Java EE application server today and we move those to the cloud, because they are now separate and have their own APIs, they are much more loosely coupled and there's a cleaner interface between them. Additionally, they can be scaled independently. We could have three instances of app one, because of the load that it receives, and four instances of app two, because it receives more load than app one. We also no longer need to use Java for everything because cloud is a multi-language platform. We can start to introduce Node.js, we could also have microservices running in Ruby or Python or Swift, as well as still keeping some services which are written in Java. So that's writing applications for the cloud but what about cloud native technologies? The Cloud Native Computing Foundation or CNCF refers to cloud native technologies as "technologies that empower you "to build scalable applications "which are deployed to hybrid public or private clouds." They also describe them as being "loosely coupled systems which are resilient, "manageable and observable." InfoWorld also describe them, but they talk about them in terms of "an approach to building "and running applications. "They exploit the advantages of cloud computing." A key part being there, that cloud native applications exploit the advantages of the cloud computing delivery model. So it's all about how applications are created and deployed, not the fact that they happen to be deployed to a cloud. So let's look at what this means. Let's say I'm building an application on my laptop. If I take that application and I just deploy it to a cloud, it's not cloud native, it's just cloud hosted. For it to be a cloud native application, it needs to be a small, lightweight service, it needs to be independently deployable and scalable but most importantly, it needs to exploit the capabilities that the cloud provides.

Contents