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.

Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

A talk given to Container Summit 2015, Taipei on 2015-12-10.

【Docker 對傳統 DevOps 工具鏈的衝擊】

Docker 爆紅,以及隨之而來的生態圈,衝擊傳統 DevOps 工具鏈,任何人都無法忽視 Docker 帶來的威脅或機會。

已經上手、或正在評估 DevOps 工具的我們,該如何看待這個新局面?對哪些舊方法該持保留態度?對哪些新方法該積極學習?

本講座會鳥瞰檯面上的 DevOps 工具,提出新舊交替世代的建議方針。

Docker 對傳統 DevOps 工具鏈的衝擊 (Docker's Impact on traditional DevOps toolchain)

  1. 1. William Yeh Architect @ Gogolook 
 2015-12-10
  2. 2. Albert Camus
  3. 3. 
 
 

  4. 4. 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong Do you have basic infrastructure? (2015-11-18) http://www.robustperception.io/do-you-have-basic-infrastructure/
  5. 5. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN LB API servers DB servers 1.1 - 1.2 -
  6. 6. 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN LB API servers DB servers public network .1 - .2 -
  7. 7. 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN LB API servers DB servers public network detection recovery diagnosis
  8. 8. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN LB API servers DB servers 1.1 - 1.2 -
  9. 9. hardware bare metal OS runtime app VM hardware OS runtime app hypervisor
  10. 10. VM hardware OS runtime app hypervisor
  11. 11. VM hardware OS runtime app hypervisor Docker hardware OS runtime app hypervisor container
  12. 12. Docker hardware OS runtime app hypervisor container We know: • Container is faster than VM • Container is lightweight • Dockerized app anywhere… What if… • An OS runs only containers?
  13. 13. Docker hardware OS runtime app hypervisor container CoreOS RancherOS Red Hat Atomic VMware Photon Snappy Ubuntu Core Windows Nano Server
  14. 14. Docker hardware OS runtime app hypervisor container Container per VM hardware OS runtime app hypervisor container
  15. 15. Container per VM hardware OS runtime app hypervisor container Intel Clear Linux http://www.ithome.com.tw/news/96119 Hyper https://hyper.sh/
  16. 16. Container per VM hardware OS runtime app hypervisor container Unikernel hardware library OS app hypervisor unikernel
 app stack
  17. 17. Unikernel hardware library OS app hypervisor unikernel
 app stack Unikernels are constructed by using “library operating systems,” from which the developer selects only the minimal set of services required for an application to run.
  18. 18. Unikernel hardware library OS app hypervisor unikernel
 app stack MirageOS https://mirage.io/ Boxfuse https://boxfuse.com/ ClickOS Clive HaLVM LING Rump Kernels OSv
  19. 19. Unikernel image Immutable infrastructure
  20. 20. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN ELB API servers DB servers 1.1 - 1.2 -
  21. 21. service consolidation resourceisolation native app VM container per VM unikernel Docker
  22. 22. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN LB API servers DB servers 1.1 - 1.2 -
  23. 23. public network private network API servers JDK app server (Tomcat, …) app (jar, war, …) Node.js runtime npm app source Python runtime pip uWSGI/Gunicorn app source
  24. 24. public network private network DB servers JDK Elasticsearch JDK CassandraMongoDBMySQL dependenciesdependencies
  25. 25. public network private network LB HAProxynginx AWS ELB dependenciesdependencies
  26. 26. JDK app server (Tomcat, …) app (jar, war, …) Node.js runtime npm app source Python runtime pip uWSGI/Gunicorn app source JDK Elasticsearch JDK CassandraMongoDBMySQL dependenciesdependencies HAProxynginx AWS ELB dependenciesdependencies
  27. 27. JDK app server (Tomcat, …) app (jar, war, …) Node.js runtime npm app source Python runtime pip uWSGI/Gunicorn app source JDK Elasticsearch JDK CassandraMongoDBMySQL dependenciesdependencies HAProxynginx AWS ELB dependenciesdependencies DevOps tools • Configuration management • Build system • Deployment pipeline • Continuous integration
  28. 28. JDK app server (Tomcat, …) app (jar, war, …) Node.js runtime npm app source Python runtime pip uWSGI/Gunicorn app source JDK Elasticsearch JDK CassandraMongoDBMySQL dependenciesdependencies HAProxynginx AWS ELB dependenciesdependencies Docker runtime app image immutable image versioned image dev/prod parity Dockerfile docker build docker push docker pull
  29. 29. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN ELB API servers DB servers 1.1 - 1.2 -
  30. 30. uniform Docker Config management will only be used to install Docker, an orchestration system, configure PAM/SSH auth, and tune OS sysctl values. traditional DevOps toolchain tedious … Basically anything not having to do with app deployment. https://blog.containership.io/containers-vs-config-management-e64cbb744a94
  31. 31. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN LB API servers DB servers 1.1 - 1.2 -
  32. 32. public network private network API servers As the number of machines grows… how to ensure better allocation?
  33. 33. pets cattle
  34. 34. pets cattle naming?
  35. 35. pets cattle dispensable?
  36. 36. pets cattle naming? dispensable?
  37. 37. pets cattle PaaS Hadoop MapReduce AWS Lambda AWS Kinesis Google Dataflow
  38. 38. public network private network API servers As the number of machines grows… how to ensure better allocation?
  39. 39. Traditional app OS runtime app tight interaction host resources pets
  40. 40. https://prezi.com/e7sdy9rdujgp
  41. 41. public network private network API servers better mobility cattle
  42. 42. public network private network API servers even better mobilitycontainer cattle independent of underlying machines
  43. 43. cattle Docker Swarm Mesos Kubernetes allocation, orchestration
  44. 44. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN ELB API servers DB servers 1.1 - 1.2 -
  45. 45. Docker Swarm Mesos Kubernetes Config management will only be used to install Docker, an orchestration system… traditional DevOps toolchain … Don’t assume too much about underlying infrastructure. cattlepets
  46. 46. cattle Long Running Services • Aurora • Marathon • Singularity • SSSP Batch Scheduling • Chronos • Jenkins • JobServer Big Data Processing • Cray Chapel • Dpark • Exelixi • Hadoop • Hama • MPI • Spark • Storm Data Storage • Cassandra • Elasticsearch • Hypertable Mesos framework
  47. 47. cattle Mesos
  48. 48. 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong .1 - .2 - private network CDN LB API servers DB servers public network
  49. 49. private network LB API servers DB servers • Rolling upgrade • Blue/green deployment • Canary deployment Traditional app • in-place update • immutable infra
  50. 50. public network private network API servers immutable imagescontainer cattle independent of underlying machines
  51. 51. cattle Docker Swarm Mesos Kubernetes allocation, orchestration
  52. 52. kubectl rolling-update my-nginx --image=nginx:1.9.1 • Rolling upgrade • Canary deployment • use label Kubernetes
  53. 53. Mesos http://blog.qubit.com/opensourcing-bamboo-automated-mesos-marathon-load-balancing http://www.slideshare.net/johnadowns/making-developers-happier-with-mesos-docker-and-marathon
  54. 54. Universal Control Plane https://www.docker.com/universal-control-plane
  55. 55. public network 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong private network CDN ELB API servers DB servers .1 - .2 -
  56. 56. Docker Swarm Mesos Kubernetes traditional DevOps toolchain Consider the benefits: • immutable infrastructure • automated allocation • automated orchestration cattlepets
  57. 57. private network CDN LB API servers DB servers Key Takeaways
  58. 58. 1. How to recreate your system 2. How to safely change your system 3. When something has gone wrong Do you have basic infrastructure? (2015-11-18) http://www.robustperception.io/do-you-have-basic-infrastructure/
  59. 59. service consolidation resourceisolation native app VM container per VM unikernel Docker Immutable infrastructure
  60. 60. uniform Docker Config management will only be used to install Docker, an orchestration system… anything other than app deployment. traditional DevOps toolchain tedious
  61. 61. Docker Swarm Mesos Kubernetes traditional DevOps toolchain … Don’t assume too much about underlying infrastructure. cattlepets
  62. 62. cattle Docker Swarm Mesos Kubernetes allocation, orchestration
  63. 63. http://send.wtf/docker2015

×