This series started with the statement, what do you mean by “You can’t ignore the stack anymore?”.
When your background is application development, you have spent many hours, days and years perfecting your craft. You have not only learned languages and concepts, you have made it a point to learn to make good architectural decisions when pulling together the applications you develop.
The problem is, we tend to ignore the stack we are working on as much as we can. Well it’s time that we as application developers broadened our horizons a bit, expanding our understanding of the stack we work on with the introduction of Cloud, Platform As A Service (PaaS) and containers to our toolboxes.
Our tour of your Cloud stack continues from our previous article in this series where we laid the first foundational bricks, our reliable and container supporting operating system. The core machines on which our Cloud will rest, that support containers but obviously don’t do much more than that.
These foundational bricks only scale in one direction, vertically.
What scaling containers vertically means, why it would not make a very good Cloud stack and what we really need for our Cloud stack will be the focus of this article.
Containers at scale
The idea that we can put together an OS that enables all the tooling we need for generating and hosting containers for our application is exciting.
Every application developer that is looking at moving their applications into the Cloud will start by putting together containers to run their applications as microservices. The problem is that when you start to host these containers, just like putting containers on a cargo ship, you have a limit as to the number you can pile onto your OS.
This is the vertical scaling limits based on the resources a single machine can host. Just like there are only so many containers you can stick up on a cargo ship before it either become just dangerous or an accident happens.
There are also some issues you will run into as you scale vertically with your containers. You have to determine how to manage these containers, monitor their usage, charge back to the original departments for use of the resources and more as you deal with the increased demands your excited application developers will be putting on the limited resources.
As an administrator of these new containers you will begin to feel the need for a solution that can provide containers at scale. This would be a solution that allows you to scale the containers out vertically. This would be the same as putting more cargo ships into the fleet and spreading the containers across these new ships as the need grows.
This is done with virtualization solutions to provide Infrastructure as a Service (IaaS), but has it’s limitations.
This is fine if you can expect to have linear growth and constant usage of the underlying infrastructure, but what to do when you need to scale down, load balance for a specific container that is short term resource intensive or if you just need to manage the entire infrastructure as it scales out across more resources?
The next step is to provide abstraction from the individual resources and allow for the management of the entire set of resources for each specific container, application or microservice. This can be solved with Open Source solutions such as Red Hat Atomic Enterprise that leverages projects like Docker, Kubernetes among others to provide containers at scale based on your current infrastructure, providing a powerful IaaS to the rest of the enterprise.
This is akin to having a shipping company that can now make use of a new cargo ship when the need arises due to a flood of extra containers needing to be shipped, say around the beginning of the new year as new car models are shipped globally tomeet new consumer demands. It’s like having instant access to an almost unlimited supply of cargo ships and loading facilities to process any amount of cargo containers we might be asked to ship on the high seas.
This layer is crucial to what an application developers does. By providing proper container hosting, proper container management and containers that scale out as needed, it keeps both application development and application deliver running smoothly across an enterprise infrastructure.
What is left to consider?
How do we manage all this IaaS so that we have some insights into who to charge for usage? How can we monitor for stress on our infrastructure resources? How can we determine when we need to take action, preventing any failures of our IaaS?
These are all questions that will be covered in the following article from this series, where we talk about why scale matters and what some of the issues are that will arise for application developers as well as those responsible for maintaining this new Cloud stack.
App Dev Cloud Stack series
Missed a previous article or looking for a specific article in the series?
- Can’t ignore the stack anymore
- Foundations for a stable Cloud
- Beginners guide to containers at scale
- Why containers at scale matter (coming soon…)
- It’s all about the PaaS baby (coming soon…)
- Open interoperability critical to success (coming soon…)
- Securing containers at scale (coming soon…)