Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cloud Foundry Diego: The New Cloud Runtime - CloudOpen Europe Talk 2015


Published on

A talk on the extensibility of the new Cloud Foundry platform runtime presented at the CloudOpen Europe conference in Dublin, Oct 2015.

Outlines how the new, flexible cloud primitives in the upcoming Cloud Foundry Diego platform runtime were adapted to support additional workloads and environments, including Docker images and the Lattice project for local development. The talk included a live demo of deploying Docker images to a Lattice runtime running on Amazon EC2. One hour talk given at CloudOpen Europe in 5th October 2015.

CloudOpen EU Conference - and
OSS Projects - and
Talk Photos -

Abstract: An overview of Diego, the new Cloud Foundry runtime design for orchestrating heterogeneous containerized workloads across multiple cloud infrastructures. Learn how Diego manages tasks and long-running processes using auction-based scheduling and monitoring for Docker and Garden containers.

Credit to the Cloud Foundry dev team and more, including Onsi Fakhouri, Eric Malm, Matt Stine, Amit Gupta, Bridget Kromhout, Renee French and Cornela Davis.

Published in: Technology
  • Be the first to comment

Cloud Foundry Diego: The New Cloud Runtime - CloudOpen Europe Talk 2015

  1. 1. Cloud Foundry Diego: The New Cloud Runtime Heterogeneous Container Scheduling, Docker & More
  2. 2. How many people here are already running containers?
  3. 3. Open source and 6 commercial distros Global 2000 focus Launched 2011 Cloud Native Application Platform A single API for managing applications on 4 infrastructures
  4. 4. 32,000 meetup members 2,100 committers 50+ foundation companies Major enterprise adoption: Huawei running 5,000+ apps GE next-gen Internet of Things platform Baidu has 700+ CF devs $ cf scale
  5. 5. David Soul Platform Technical Marketing, Pivotal @davidsoul
  6. 6. 1. Designed for openness and extensibility 2. Flexible cloud primitives and processes 3. A platform that can keep promises What Makes This Runtime Interesting?
  7. 7. An Extensible Cloud Platform New Workloads New Environments
  8. 8. Develop and administer thousands of cloud native applications with heterogeneous workloads and architectures The Problem
  9. 9. 1. Design 2. Build 3. Configure 4. Deploy 5. Run 1. Provision 2. Authorize 3. Integrate 4. Monitor5. Audit 6. Scale 7. Recover 8. Upgrade Dev Loop Ops Loop
  10. 10. • Role-based to resource access • Run code on demand • Coordinate cross-service configuration • Route public requests • Read and write persistent data • Record internal and external events • Isolate resources and failures • Measure performance/health • Detect and determine failure • Failure recovery • Work tomorrow • Add and remove resources Runtime Capabilities
  11. 11. The Diego Runtime A distributed system that orchestrates containerized workloads
  12. 12. Core Runtime Concepts Cells Container Execution Brain Container Scheduler & Health Monitor BBS Shared Runtime State
  13. 13. Container Scheduler & Health Monitor Container Execution Shared Runtime State
  14. 14. Auctions Rep Auctioneer Desired Tasks Desired Processes Executor Cell Garden Containers Bids Rep Executor Cell Garden Containers
  15. 15. Platform Abstractions NSync
  16. 16. Layers of Abstraction NSync Generic Specific
  17. 17. Garden WindowsGarden Linux Garden API Garden Container Abstraction A platform-neutral API for containerization
  18. 18. Run Dockerized applications Run .NET applications Run workers and tasks Develop Cloud Foundry applications locally Extending the Cloud Foundry Runtime
  19. 19. How can I run Dockerized applications?
  20. 20. Extend the deployment API to run a Docker image on our native Garden-Linux container backend. cf push APP DOCKER-REPO POST /containers { "bind_mounts": [], "grace_time": 1200, "handle": 'user-supplied-handle', "network": 'network', "rootfs": 'rootfs', "properties": [], "env": [] } 200 Ok { handle: 'handle-of-created-container' } Deploy the container image root filesystem. Attempt to parse container image metadata for memory, disk, user, launch command and port.
  21. 21. Run Docker Images on Linux Cells Garden Linux Cells Docker Linux Cells
  22. 22. How can I run .NET applications?
  23. 23. Container Scheduler & Health Monitor Windows Cells Container Execution Nodes Shared Runtime State Service Discovery & Monitoring
  24. 24. Windows Cells Garden Linux Cells .NET Windows Cells
  25. 25. How can I run workers and tasks?
  26. 26. New Workload Types Tasks A single unit of work Runs at most once N long running instances Distributed across cells for HA Monitored and restarted Long Running Processes
  27. 27. RunAction: run process in container DownloadAction: fetches and extract archive UploadAction: POST file from container to URL ParallelAction: run multiple actions in parallel SerialAction: runs multiple actions in order EmitProgressAction: wraps action and logs progress TimeoutAction: wrap action and fail if timed out TryAction: wrap action and ignore errors Workload Primitives
  28. 28. Desired Task { ... "rootfs": "docker:///docker-org/docker-image", "env": [ {"name": "ENV_NAME_A", "value": "ENV_VALUE_A"}, {"name": "ENV_NAME_B", "value": "ENV_VALUE_B"} ], "cpu_weight": 57, "disk_mb": 1024, "memory_mb": 128, "privileged": true, "action": ACTION(s) TO RUN, ... }
  29. 29. Desired LRP { ... "instances": 17, "rootfs": "VALID-ROOTFS", "env": [ {"name": "ENV_NAME_A", "value": "ENV_VALUE_A"}, {"name": "ENV_NAME_B", "value": "ENV_VALUE_B"} ], "cpu_weight": 57, "disk_mb": 1024, "memory_mb": 128, "privileged": true, "setup": ACTION, "action": ACTION, "monitor": ACTION, "start_timeout": N seconds, "ports": [8080, 5050], ... }
  30. 30. How can I develop Cloud Foundry applications on my local machine?
  31. 31. • Single-tenant • Everyone is ‘cluster root’ • Wide-open networking • Not all components are HA • Red-black upgrades • No data services • Multi-tenancy with resource quotas • Role-based access control • Application security groups • Highly-available components • Zero-downtime, rolling upgrades • Backing data service orchestration Repackaging the Runtime Production usage with 20+ VMs Local development on a single host
  32. 32. 10,000 “real app” container instances (100 per cell) 4,000 concurrent tasks 4,000-instance LRPs Scalability Runtime testing with tens of thousands of containers:
  33. 33. Garden WindowsGarden Linux Garden API Multiple Workloads
  34. 34. Multiple Environments Garden Linux Cells Docker Linux Cells .NET Windows Cells
  35. 35. The Extensible Cloud Platform Tasks Docker Windows Lattice
  36. 36. Try the New Runtime Today >LATTICE
  37. 37. Discussion? #cloudopen @davidsoul Diego >LATTICE