The development of cloud native applications brings along several challenges and complexities that need to be addressed. This videos introduces the cloud native stack with its anatomy and key technologies to meet those challenges and presents the stack used throughout this course.
- [Instructor] Hi, and welcome back. Introduction to the Cloud Native Stack. So, in this video, we're going to take a look at the anatomy of the Cloud native stack, and we will have a look at the Cloud native's landscape with some of this key technologies. Also, we're going to introduce the Cloud native stack used throughout this course, so let's get started then! So what is the Cloud Native Stack? Well, you see its anatomy here, and it's a four-layered architecture.
At the very bottom, we have the Cluster Virtualization. This one's concerned with the resources in your cluster, in your cloud, and it decouples everything above it from the physical hardware. On top of the Cluster Virtualizer, there sits the Cluster Scheduler, and the Cluster Scheduler is mainly concerned with containers, and all it does is, it manages the cluster resources and executes individual container on top of those resources.
On top of the Scheduler, there's the Cluster Orchestrator, and the Orchestrator is mainly concerned with running whole applications, so it dynamically executes applications on the Cluster, so the Orchestrator talks to the Scheduler, and tells him, "Hey, here's a container to execute for you. Please execute it, and I need three instances of this." So this is all the Orchestrator does, and the Orchestrator and the Scheduler and the Virtualization all together, this can be referred to as the Cluster Operating System, and on top of this Operating System, well, there are your applications.
And you have something called an Application Platform, a Cloud Native Application Platform, which you will use to implement your Cloud native applications, and this platform provides runtime environment, and an API for your applications. So you might ask, which technology do I actually use for my Cloud Native Stack? Well, there's good news. You have a lot of choice, and maybe that's also the bad news because you need to make the right choice. You need to combine the right technologies to make a good choice, so if you have a look at the Cluster resources and then Cluster Virtualization, you will find old friends such as docker, or rkt, or runC, Cluster Scheduler, MESOS, docker SWARM, kubernetes, YARN, CoreOS fleet, those are all Cluster Schedulers.
Cluster Orchestrators, well, maybe kubernetes here, or Marathon, or AURORA, Chronos, so there are other Orchestrators here to choose from as well. Same goes for the Application Platform. Maybe you implement your Microservices using lagom, or Java, or Spring Cloud, or maybe Go, and this leads me to the Cloud Native Stack we will use throughout this course, and of course, we will use the Go language as an Application Platform, and as the Cluster Operating System, well, we use the Cluster Orchestrator kubernetes, which is also a Cluster Scheduler, and at the very bottom, we use docker for our Cluster Virtualization.
So let me summarize, what have we learned throughout this section? Well, first of all, Cloud native applications, they promise superior reliability and arbitrary scalability. We covered some of the important design principles for the development of Cloud native applications. We also talked about certain decomposition trade-offs when using microservices. Remember, nothing is for free. Everything comes at a cost, and the Cloud native stack addresses the inherent challenges and complexities associated with the development of Cloud native applications, and one thing is for sure, Go is a suitable Cloud native application platform, which we are going to see for the rest of this course.
So, in the next section, we will finally get our hands dirty and we will implement a Simple Go Microservice. Hope to see you there!
This course was created and produced by Packt Publishing. We are honored to host this training in our library.
- Implementing Go HTTP Server
- JSON marshalling and unmarshalling of Go structs
- Implementing a simple REST API
- Using Docker workflows and commands
- Building a naïve Docker image
- Running a containerized Go microservice
- Kubernetes architecture and concepts
- Deploying a Go microservice to Kubernetes
- Implementing service descriptors
- Performing rolling updates