cloud-native' ecosystem - aug 2015
TRANSCRIPT
• 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 yeto 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
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 systemSpecification 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
The “Cloud-Native” Stack – Select Products / Vendors
(Machine, Swarm, Compose)
(Serf, Terraform)
Physical Infrastructure
Virtual Infrastructure
Minimal OS
Container Engine
Service Discovery
Orchestration: Scheduling & Cluster Management
Workflow / Management
Code
Tools (Fleet)
Infrastructure
The “Cloud-Native” Ecosystem
• Consul (Hashicorp)• etcd (CoreOS)• Eureka (Netflix)• Zookeeper (Apache)• SmartStack (AirBnB)
• Mesos-DNS (Mesosphere)
Minimal OS
Container Engine
Service Discovery
Orchestration: Scheduling & Cluster Management
Tooling & Management • Cloud Foundry (Pivotal)
• ActiveState (HP)• HP Helion• IBM Bluemix
• Open Shift / Project Atomic (Red Hat)
• Elastic Container Service (AWS)
• Google Container Service• Triton (Joyent)• Rancher• Flynn• Tutum• Terminal.com
• CoreOS (CoreOS)• Project Atomic (Red Hat)• Photon (VMware)• RancherOS (Rancher)• Snappy Ubuntu Core (Canonical)• Windows Nano Server (Microsoft)
• libcontainer (Docker)• runC (Open Container Foundation)• appC (CoreOS)• Ubuntu LXD (Canonical)• Drawbridge? (Microsoft)• LXC/libvirt (Red Hat)
• Kubernetes (Google/CoreOS)
• Mesos, Marathon (Mesosphere)
• Swarm, Machine, Compose (Docker)
• Fleet (CoreOS)• Serf, Terraform, Atlas
(Hashicorp)• Helios (Spotify)• Project Titan (Netflix)• Chronos (AirBnB)
• Auroroa (Apache)• Cloudify (Gigaspaces)• Magnum+Heat
(OpenStack)
• Chef• Puppet• Ansible• SaltStack• Deis
(EngineYard)
• Glider Labs• CircleCI• TravisCI• Bouyant.io• WeaveWorks• SysDig
• Panamax (CenturyLink)
• CloudNative• Wercker• Shippable• Brooklyn
(Apache)• Giant Swarm• DCHQ.io• Nirmata• Cloud66• StackEngine
• Convox.io• Magnetic.io• Dozens more…
Platform
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
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