If you like this presentation – show it...
The ‘Cloud-Native’ Ecosystem August 2015 : @lennypruss
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 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 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
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