The document discusses the emerging "cloud-native" ecosystem centered around containers. It identifies key characteristics like containers as modular compute units and microservices architectures. Popular early solutions are mentioned like Docker, CoreOS, Kubernetes, and Mesosphere, but the ecosystem remains immature with issues around persistence, security, and lack of best practices. Standards are emerging that may drive further innovation, and containers still lack a "killer app" business case like virtualization had with consolidation. The document provides a taxonomy of the technology stack and lists many active companies and projects in different layers.
2. • Characteristics of the “cloud-native” stack:
Containers as the modular compute building block with…
Composable, microservices-oriented application architectures and…
Dynamic, self-healing scheduling
• Today Docker, CoreOS, Kubernetes (Google) and Mesosphere are leaders but there are no winners yet
o We still don’t know what the components of the container stack will look like…
Distributed service discovery is still broken (etcd is not highly available)
Autonomic scheduling is promise not yet reality: Kubernetes is right abstraction, Mesos is right scheduling algos, but
neither has it nailed
There are major unresolved issues around persistence, storage and security
But the biggest issue facing the ecosystem? Lack of best practices and know-how
• Most of market is competing at management layer, but as we saw with virtualization and cloud: you win from the
bottom up – in this paradigm that’s the orchestration/cluster management layer
• Containers are still missing a “killer app” and a business case (virtualization :: consolidate IT)
• With standards now emerging (Open Container Initiative, Cloud Native Foundation) we expect to see the emergence
of a hardened toolchain which should unleash a second wave of innovation
Key Findings and Summary
3. The “Cloud-Native” Stack – Taxonomy
Physical Infrastructure
Virtual Infrastructure
Minimal OS
Container Engine
Service Discovery
Orchestration: Scheduling &
Cluster Management
Workflow / Management
Code
Tools
Infrastructure
Programming languages, frameworks and libraries that comprise applications
Code deployment pipelines, automation and configuration management frameworks,
container and infrastructure management
Tools which automatically run and manage jobs, containers and hosts in a cluster; often
modeled after Google Borg/Omega
Tools enabling an application or service to discover information about its environment
and other components needed to form a larger system
Specification and execution engine for operating-system-level virtualization
environment for running multiple isolated Linux systems
Lightweight operating system to manage compute resources necessary to deploy
applications in containers
Emulated physical compute, network and storage resources that are the basis for cloud-
based architectures
Physical servers, switches, routers and storage arrays that occupy the datacenter
6. Appendix: What are Linux Containers?
Virtual machines include
the application, the necessary
binaries and libraries and an
entire guest operating system
- all of which may be tens of
GBs in size
Containers include the application
and all of its dependencies, but
share the kernel with other
containers, runing as an isolated
process in userspace on the host
OS. Containers run on any
compute substrate (laptop, bare
metal, cloud)
• Containers are an operating-system-level virtualization environment for running multiple isolated Linux systems on a single
Linux host
• Containers package a software application in a complete filesystem that contains everything it needs to run: code, runtime,
system tools, system libraries
• Benefits:
• Small: hold only the application logic and dependencies needed to run so disk footprint is tiny
• Fast: no CPU or I/O penalty because there is no virtualized hardware to pass through or boot
• Portable: because containers are packaging format that holds an application with all of it’s dependencies and
configurations it will run the same in any environment
7. Appendix: Why Do They Matter?
As every organization becomes a software organization, faster release cycles are a source of competitive advantage
“DevOps” defined by convergence of IT ops and software development to streamline deployment cycles
Continuous deployment – practice of continually shipping code to production – could be containers’ “killer app”
Microservices architecture, a development practice of writing applications as a series of modular, discrete services,
has been increasingly adopted by organizations in an effort to improve speed-to-market and agility
All this is to say: containers enable organizations to write better software faster