Today, it’s become almost sacrilegious to think about running microservices on anything but Kubernetes. But in 2016, when we first began our journey to microservices, Kubernetes didn’t have the level of maturity that it has now. Back then, we just wanted the benefits of breaking up our monolithic application into loosely coupled services. Like most organizations, the monolith served us as well as it could. But when Docker made containers easy, a whole new world opened up. At the time, docker-compose was the easiest way to start a group of containerized application services, but the very next consideration was orchestrating those containers. We soon found that docker-compose does not allow the easy distribution and orchestration of components across cluster nodes. There were also challenges with multi-node networking and shared storage across the nodes. And then Kubernetes came along.
Microservices are all well and good, but these are just our modern day applications. And all applications, especially enterprise applications need to be secure. In my previous post I talked about how we were able to dynamically manage Java memory for each of the processes running in our re-architected microservices application. This was just one example of the realities we face when building an enterprise microservices application. We re-architected our application to scale with and automate some of the world’s largest hybrid cloud estates. With that kind of responsibility, every service of this application must be secured.
Containers provide a lightweight alternative to virtual machines that isolate the application from wherever it’s running. This way, developers can install only what they need to run the application and nothing more, allowing them to work with identical development environments and stacks. They can also develop directly in a container as it gives developers a separate network stack and storage without the overhead of building and running a virtual machine.
PaaS is a platform upon which developers can build and deploy applications. Within the PaaS market, two of the major players are Pivotal Cloud Foundry and Kubernetes. They’re both platform services for deploying cloud-native apps, and they both deal with containers, and the list goes on. These products offer a higher level of abstraction than we get from IaaS products meaning that, beyond networking, storage and servers, the application’s O/S, middleware and runtime are all managed by the PaaS.