Cloud Native Stack: “One can now build applications that were previously unimaginable”
Josef Adersberger and Mario-Leander Reimer’s W-JAX 2016 session „A Hitchhiker’s Guide to the Cloud Native Stack“ will focus on teaching how to deploy Spring Cloud applications as Docker containers with Kubernetes on the DC/OS platform. In this interview, they explain why they utilize the stated technologies and what the Cloud Native Stack actually is.
Josef Adersberger and Mario-Leander Reimer: The term Cloud Native is establishing at the moment – not only because of the Cloud Native Computing Foundation under the umbrella of the Linux Foundation. Applications are called Cloud Native if they are inherently designed to run in the cloud, e.g. microservices, Twelve-Factor apps, self-contained systems and big data applications. This brings a number of advantages: better scalability (according to the load and to additional features), the ability to process larger amounts of data, a more efficient operational behavior, and the opportunity for Continuous Delivery.
We coined the term Cloud Native Stack, because you need a stack that Cloud Native applications can be run. The exciting thing is that there isn’t the “one and only stack”, but a whole range of alternative components from which you can assemble your own. All relevant components are open source and often originate from cloud giants like Google, Netflix or Twitter.
JAXenter: What is the Cloud Native Stack made of and what is its purpose?
Josef Adersberger and Mario-Leander Reimer: The purpose of the Cloud Native Stack is to hide the additional complexity which results from running an application in the cloud. Inside a cloud, applications are highly distributed and everything can fail at any time. This creates a significantly higher complexity.
Although there are many alternative components in the Cloud Native Stack, the structure is always the same: At the bottom of it all is a Cluster Scheduler, which executes Containers on available resources. This Cluster Scheduler is used by the Cluster Orchestrator to run whole applications. Those applications are developed using an application platform. This can be compared to a classic stack, such as JEE: The Cluster Scheduler corresponds to the operating system, the Cluster Orchestrator to the JEE application server and the application platform to the JEE API.
JAXenter: “The cloud” has been ever-present in the IT scene for many years now. Which new impulses are brought along by the above-mentioned Cloud Native Stack?
Josef Adersberger and Mario-Leander Reimer: The significant impulse of the Cloud Native Stack is that the infrastructure of cloud giants is now available for the development and operation of our own applications. This is also called GIFEE: Google Infrastructure For Everybody Else. One can now build applications that were previously unimaginable. Since Infrastructure-as-a-Service (IaaS) is well established in Cloud Computing, the Cloud Native Stack will establish the domain of Platform-as-a-Service (PaaS) as well.
JAXenter: You will also show the attendees how to deploy Spring Cloud applications as Docker Containers with Kubernetes on the DC/OS-platform. Let’s start from the beginning. What do you like about Spring Cloud?
Josef Adersberger and Mario-Leander Reimer: Spring Cloud has the typical advantages of a Spring project: a simple and catchy programming model, a lot of drive as an open source project and a good tooling support. Spring Cloud remains faithful to the principles of the Spring Framework and abstracts from the surrounding infrastructure. This is extremely helpful for Cloud Native applications since the field is still young and infrastructure components, i.e. the elements of the Cloud Native Stack, still evolve and come and go.
JAXenter: Why Docker Containers?
Josef Adersberger and Mario-Leander Reimer: Docker unifies transport and execution of application elements. We call them ops components: a continuation of the genuine idea of software components up to the the operational level. Something like that has been achieved by means of hardware virtualization already. However, the transport of those bulky virtual images is lengthy and the resource consumption during execution is high. As a solution for operating system virtualization, Docker makes things much easier: virtual images are smaller, there is an integrated image logistics and the resource overhead is virtually zero.
JAXenter: Let’s shift our attention to Kubernetes – What does this component bring to the table?
Josef Adersberger and Mario-Leander Reimer: Kubernetes basically is a Cluster Orchestrator. It needs an application blueprint that specifies, which Docker Containers are to be started, supplied and wired together to make the application work. In addition to the use case of launching an application, Kubernetes automates many other standard operating procedures such as application scaling, key exchange, configuration value changes or even complex rollout scenarios such as Canary releases.
JAXenter: And finally the DC/OS platform. What is its use in your setup?
Josef Adersberger and Mario-Leander Reimer: DC/OS provides two things. First of all, the most powerful Cluster Scheduler up to now: Mesos. Second of all, a comprehensive infrastructure around Mesos, which makes DC/OS an operating system for the cloud. As such, DC/OS is the foundation of the Cloud Native Stack.
JAXenter: What’s the message of your session?
Josef Adersberger and Mario-Leander Reimer: Anyone who wants to build applications that were previously unimaginable or just wants to make their existing applications more scalable and more efficient in operation should have a close look at the Cloud Native Stack. The motto of the day is “play hard”: There are many exciting technologies out there, and every developer should at least play around with them to gain experience – because the Cloud Native Stack will change the way we build applications in the future.
JAXenter: Thank you for this interview!