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.

DockerCon SF 2015: The Distributed System Toolkit

11,067 views

Published on

Slides from Brendan Burns Advanced Tech Talk at DockerCon SF 2015:

Talk Description:
People often adopt containers for the dramatic improvements in application packaging and deployment that they provide. However, possibly more important, is the abstraction layer that containers provide. By encouraging users to build their distributed applications through containerized modules, rather than monolithic systems, developers are building composable, reusable distributed applications. In this talk we will explore both the development of abstract application patterns for distributed systems, as well as introduce a set of reusable, composable containers that radically simplify the process of distributed application design and construction.

Published in: Technology

DockerCon SF 2015: The Distributed System Toolkit

  1. 1. The Distributed System Toolkit Composite Containers for Modular Architectures Brendan Burns - Google Cloud Platform @brendandburns
  2. 2. https://www.flickr.com/photos/greeblie/2224507899
  3. 3. Modular Container Design “Good fences make good neighbors” - Robert Frost
  4. 4. A Quick Look @ Your Code
  5. 5. & Your Code Community Contribute Share Use Keep
  6. 6. Quick Look @ Your Cluster
  7. 7. Your Next App. Design Don’t think of a container as the boundary of your application A container is more like a class in an object oriented language.
  8. 8. Benefits... Build applications more quickly ● Re-use existing containers in more places ● Build things that are easy to use ● Container boundaries are natural boundaries for teams
  9. 9. Benefits... Build applications more reliably ● Leverage expert knowledge everywhere ● Only make mistakes once ● Only update the bits that need updating
  10. 10. Modular Container Design ● Separate concerns (e.g. “webserver”, “git syncher”) ● Build consistent experiences ● Avoid NIH
  11. 11. Requirements... Sharing between containers ● Share namespaces (esp. PID, Network and IPC) ● Share filesystems
  12. 12. Requirements... Co-scheduling of containers ● Composition requires co-location
  13. 13. Requirements... Parameterization of containers ● Configurable at runtime ● Documented and discoverable
  14. 14. Patterns... ● Don’t design in a vacuum! ● Don’t think that you are special! ● Do share best practices and ideas!
  15. 15. Composite Container Application Sidecars Application Container node.js Git Synchronizer Sidecars extend and enhance Sidecar Container
  16. 16. Composite Container Application Sidecar Pattern Application Container nginx Git Synchronizer Sidecars extend and enhance Sidecar Container
  17. 17. Composite Container Application Ambassador Pattern PHP app twemproxy Ambassadors represent and present localhost Application Container Ambassador Container Memcache Shards
  18. 18. Composite Container Application Adapter Pattern redis redis exporter Adapters normalize and abstract localhost Application Container Adapter Container Monitoring System Other adapters
  19. 19. Demo
  20. 20. From Legos to Starships
  21. 21. Replication
  22. 22. Micro-Service Load Balancer Consistent, Discoverable Name
  23. 23. Complete Application “Cassandra” Cassandra Template “Frontend” NodeJS Template
  24. 24. Thank you Brendan Burns #google-containers - @brendandburns - bburns [at] google.com github.com/GoogleCloudPlatform/kubernetes

×