Abstraction Matters: Containers and App Delivery
Abstraction Matters: Containers and App Delivery
Let's look at the role abstraction plays with containerization and how container platforms should position themselves for the best app delivery experience.
Join the DZone community and get the full member experience.Join For Free
Learn how to migrate and modernize stateless applications and run them in a Kubernetes cluster.
Today's enterprise workloads are itching to ride on containers. Enough has been written on why container technology benefits enterprises looking for application portability, faster provisioning, higher density, and a suitable technology for modern app architectures like microservices, 12-factor apps, Cloud Native, etc.
As enterprises look at using containers at scale for the continuous delivery of apps, they are mostly concerned about container management. See the study below:
Cloud Foundry Foundation, 2016 Global Perception Study
Additionally, enterprises need developer agility, easy application composition, security, and the ability to manage the overall lifecycle of the app. In order to make an enterprise truly agile with containers, the real question is:
What is the right level of abstraction required for achieving rapid delivery of enterprise app workloads?
In order to answer this question, lets us understand the different layers of container technology.
The container stack, as I would like to call it, has the following layers:
Layer 0: Container engine that deals with container semantics and virtualization of the operating system for deploying containers.
Layer 1: Container orchestration layer that deals with optimizing infrastructure for running containers at scale.
Layer 2: Container management layer that enables a flow between apps and containers such that apps can be securely provisioned, deployed, and managed in a continuous fashion.
Layer 3: Application composition layer that enables composing the app and its dependencies such that it can be deployed and managed as a single unit. This layer shields the low-level container and infrastructure semantics from app delivery.
Layer 3 becomes the right level of abstraction such that app delivery teams can focus on the application and not on aspects of containerization. Platforms that focus on Layer 3 are what I call as app-centric container platforms. Lets us understand that it really means, and how it can turbocharge application delivery.
Basic Tenets of App-Centric Container Platforms
Focus is on Application Delivery Optimization and not on Infra Optimization
An app-centric container platform is optimized for enabling rapid application delivery of any workload. Many other container managed platforms focus on infrastructure cost optimization of running the workloads. While infra optimization is important, it should not be the primary driver of the platform.
App Composition and Dependency Management
Modern applications are composed of multiple stack components and microservices. Application developers know best about the application and its various dependencies. An app-centric container platform allows developers to easily define the entire custom app stack, dependencies, and configuration in a unified manner. This serves as a blueprint for provisioning and deploying the application across various stages.
No Need for Docker Expertise
An app-centric container platform enables developers to continue using existing tools, processes, and application artefacts. Developers don't need to be Docker experts, as the platform takes care of automatically creating Docker images, stitching together the app dependencies, and provisioning the app with configuration to various environments — without developers needing to manually script it.
The Right Level of Abstraction: Application vs. Container
Application delivery teams should be talking the language of application and not infrastructure. It is counterintuitive to have application delivery teams worry about infrastructure engineering — as in pods, network interfaces, ports etc. The platform should translate the application blueprints into underlying infrastructure configuration required to containerize and deliver the app workloads effectively.
Orchestration Layer: Enterprise App Workloads vs. Data Center Workloads
The orchestration layer helps in scheduling, allocating, and provisioning containers in order to run and manage your app workloads. Enterprise app workloads typically need, at most, thousands of containers. Many container vendors use an orchestration layer that is designed for data center workloads scaling up to millions of containers, which not only makes it complicated to understand but also overkill for enterprise app workloads. An app-centric container platform provides an orchestration layer that is purpose-built for enterprise app workloads supporting thousands of containers.
Enterprises looking to adopt containerization for application release automation and continuous delivery will benefit by embracing an app-centric container platform.
Published at DZone with permission of Mayur Shah . See the original article here.
Opinions expressed by DZone contributors are their own.