A good foundation is flexible and stands the test of time for a Cloud stack.
This series started with the statement, what do you mean by "Can't ignore the stack anymore?"
When your background is in 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.
Everything in this world we build needs a foundation. A solid basis that starts with a first brick being laid before moving forwards. It does not matter if you are building a physical construction or something existential like applications and Cloud stacks, it all starts the same with some first brick.
From our first article, where we introduced the idea application developers can't ignore their Cloud stack anymore, we now have arrived at the point where we need to lay our first brick.
To examine this first brick, we find it at the bottom of our Cloud stack and need to understand that it is also the foundation to all of our application development. When we sit on top of a Cloud stack, we can easily get lost in a sea of complexity offered to us to facilitate our containerized workflows and application development.
Before we end up with a Cloud stack where we have Platform as a Service (PaaS), containers at scale, and the various tools in our development toolboxes, we start with the foundation of an operating system (OS) that supports containers.
The basis of our Cloud stack will be the enterprise version of Linux known as Red Hat Enterprise Linux (RHEL).
Cloud foundation starts with RHEL and RHEL Atomic.
The version we focus on is from RHEL 7 release, which contains fully integrated support for creating and hosting containers.
Along with RHEL as our OS, we have the option to support containers in our foundation layer with RHEL Atomic. This is a lightweight Linux-based distribution designed with containers in mind. It contains just enough to run containers, so think of it as an appliance as you can not add any other software to it.
As an application developer, you might love the flexibility of your personal development operating system, be that Windows or some flavor of Unix, but when wanting to deploy and host containers, the consensus has been to use Docker tooling for containerized images. It is enough to know that your Cloud environment can host these no matter where you develop them, no matter how you get them onto this foundation based on RHEL or RHEL Atomic.
What you will encounter when trying to manage your entire enterprise with just this foundation layer is that spinning up containers, managing them across the development, test and productions deployments can quickly become an intensive effort.
Outside of the operations tasks that go with managing your various enterprise infrastructure, there are also the issues that DevOps tackle that require managing modern containerized development workflows. These are the structured environments that support agile development methodologies needed for modern enterprises to keep pace with their customers ever changing needs.
This part of the containerized development environment must support continuous integration (CI), the ongoing testing of containerized microservices, and continuous deployments (CD) that through automation are able to support the continuous change that is the modern agile enterprise developers daily life.
Trying to maintain, update, and manage a flexible DevOps infrastructure with just the foundation described is going to quickly become a large endeavor. You might even feel like you are swimming in a sea of containers that slowly seem to spread across the application development and deployment landscape.
Touring the Cloud stack.
Have no fear, the problem being faced is how to provide all these containers at scale. There is not only a need for scalability, but also to manage all these containers across the multitude of hosts that are sure to be growing in your enterprise as you attempt to provide infrastructure and tooling to your application development teams.
Next up, we will take you behind the scenes to explain how your Cloud stack can provide you with containers at scale horizontally across your foundation of hosts.
Stay tuned for the Beginners Guide to Horizontal Scaling.