Top Banner
Benjamin Hindman – @benh Containerization as the Building Block for Datacenter Applications GOTO Amsterdam June 19, 2015
171

Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Jun 27, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Benjamin  Hindman    –  @benh  

Containerization  as  the  Building  Block  for  Datacenter  Applications  GOTO  Amsterdam  

June  19,  2015  

Page 2: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

an  emerging  trend  

microservices   containerization  

Page 3: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

(micro)services  ①  do  one  thing  and  do  it  well  (UNIX)  

②  compose!  

③  build/commit  in  isolation,  test  in  isolation,  deploy  in  isolation  (with  easy  rollback)  

④  captures  organizational  structure  (many  teams  working  in  parallel)  

Page 4: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 5: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 6: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

containerization  

now  then  

Page 7: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

containerization  

now  then  

more  moving  parts   less  moving  parts  

Page 8: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

a  reinforcing  trend  

microservices   containerization  

cluster  management  

Page 9: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

“cluster  management”  at  Twitter,  circa  2010  

(configuration/package  management)   (deployment)  

Page 10: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

“cluster  management”  at  Twitter,  circa  2010  

(configuration/package  management)   (deployment)  

Page 11: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

“cluster  management”  at  Twitter,  circa  2010  

(configuration/package  management)   (deployment)  

Page 12: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 13: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL  

Page 14: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   memcached  

Page 15: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Rails   memcached  

Page 16: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Cassandra   Rails   memcached  

Page 17: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Cassandra   Rails   Hadoop   memcached  

Page 18: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges

Page 19: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges ①  failures  

Page 20: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

failures  

Page 21: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Cassandra   Rails   Hadoop   memcached  

Page 22: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Cassandra   Rails   Hadoop   memcached  

Page 23: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges ②   maintenance  

(aka  “planned  failures”)    

Page 24: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

maintenance  ①  upgrading  software  (i.e.,  the  kernel)  

ops  developers  

Page 25: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

maintenance  ①  upgrading  software  (i.e.,  the  kernel)  

②  replacing  machines,  switches,  PDUs,  etc  

Page 26: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Cassandra   Rails   Hadoop   memcached  

Page 27: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

MySQL   Cassandra   Rails   Hadoop   memcached  

Page 28: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges ③   utilization  

Page 29: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Rails  

Hadoop  

memcached  

utilization  

Page 30: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

utilization  

Rails  

Hadoop  

memcached  

Page 31: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

utilization  

Rails  

Hadoop  

memcached  buy  less  machines  

or  run  more  applications!  

Page 32: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges ①  failures  

② maintenance  

③  utilization  

Page 33: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges ①  failures  

② maintenance  

③  utilization  

planning  for  failure?  

Page 34: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

planning  for  failure  

Page 35: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

challenges ①  failures  

② maintenance  

③  utilization  

planning  for  utilization?  

Page 36: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

planning  for  utilization  intra-­‐machine  resource  sharing:  

share  a  single  machine’s  resources  between  multiple  applications  (multi-­‐tenancy)  

intra-­‐datacenter  resource  sharing:  

share  multiple  machine’s  resources  between  multiple  applications  

Page 37: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Twitter,  circa  2010  

I  want  a  cluster  manager!  

Page 38: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

cluster  management  ①   Treat  machines  as  cattle  not  pets.  »  Keep  the  base  operating  system  small  and  simple,  

run  “containerized”  applications.  

Page 39: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

cluster  management  ①   Treat  machines  as  cattle  not  pets.  »  Keep  the  base  operating  system  small  and  simple,  

run  “containerized”  applications.  

②  Automate  with  software  not  humans.  »  Let  software  schedule  software,  i.e.,  handle  

failures,  improve  utilization,  and  manage  maintenance.  

Page 40: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

cluster  management  

industry  academia  

Page 41: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

different  software  

academia   industry  

•   MPI  (Message  Passing  Interface)   •   Apache  (mod_perl,  mod_php)  •   web  services  (Java,  Ruby,  …)  

Page 42: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

different  scale  (at  first)  

academia   industry  

•   100’s  of  machines   •   10’s  of  machines  

Page 43: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

cluster  management  

academia   industry  

•   PBS  (Portable  Batch  System)  •   TORQUE  •   SGE  (Sun  Grid  Engine)  

•   ssh  •   Puppet/Chef  •   Capistrano/Ansible  

cluster  managers  

Page 44: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

different  scale  (converging)  

academia   industry  

•   100’s  of  machines   •   10’s  of  machines  

1,000’s  of  machines  

Page 45: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

cluster  management  

academia   industry  

•   PBS  (Portable  Batch  System)  •   TORQUE  •   SGE  (Sun  Grid  Engine)  

•   ssh  •   Puppet/Chef  •   Capistrano/Ansible  

batch  computation!  

Page 46: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Apache  Mesos  is  a  modern  general  purpose  cluster  manager  (i.e.,  not  just  focused  on  batch  computing)  

Page 47: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  was  designed  to  run:  

Page 48: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 49: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 50: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

stateless  services!  

Page 51: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  is  a  cluster  manager  with  a  master/slave  architecture  

masters  

slaves  

Page 52: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

schedulers  register  with  the  Mesos  master(s)  in  order  to  run  jobs/tasks  

masters  

slaves  

schedulers  

Page 53: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

stateless  services!  

Page 54: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

service  scheduler  

service  scheduler  

Mesos  

orchestrates  services  using  Mesos  

Page 55: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

orchestration  vs  scheduling  

service  scheduler  

Mesos  

schedule  

Page 56: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

orchestration  vs  scheduling  

service  scheduler  

Mesos  

orchestrate  

schedule  

Page 57: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

orchestration  w/  Mesosphere’s  Marathon    ①   configuration/package  

management  

②   deployment  

Page 58: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

configuration/package  management  

(1)  bundle  services  as  jar,  tar/gzip,    or  using  Docker  

(2)  upload  to  HDFS,  S3,    Docker  registry,  etc  

Page 59: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

deployment  

(1)  describe  services  using  JSON  

(2)  submit  services  to  Marathon  via  REST  or  CLI  

Page 60: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

example-­‐docker.json  { "container": { "type": "DOCKER", "docker": { "image": "libmesos/ubuntu" }, "volumes" : [ { "containerPath": "/etc/a", "hostPath": "/var/data/a", "mode": "RO" }, { "containerPath": "/etc/b", "hostPath": "/var/data/b", "mode": "RW" } ] }, "id": "ubuntu", "instances": 1, "cpus": 0.5, "mem": 512, "cmd": "while sleep 10; do date -u +%T; done" }

Page 61: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

orchestration  w/  Kubernetes  on  Mesos    ①   configuration/package  

management  

②   deployment  

Page 62: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

multiple  schedulers  

Page 63: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

multiple  schedulers  

…  

Page 64: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

multiple  schedulers  

Page 65: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

multiple  schedulers  

0.8.2 0.9.0

Page 66: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

multiple  schedulers  

Page 67: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

going  deeper  …  

Page 68: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

multiple  schedulers  

Page 69: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

two-­‐level  scheduling  Mesos  influenced  by  multi-­‐level  scheduling  in  traditional  operating  systems  (user-­‐space  scheduling  and  scheduler  activations)  

 

Mesos  is  designed  less  like  a  “cluster  manager”  and  more  like  an  operating  system  kernel  

Page 70: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Apache  Mesos:  distributed  systems  kernel  

Page 71: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Apache  Mesos:  datacenter  kernel  

Page 72: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  (nodes)  

Mesos:  datacenter  kernel  

scheduler  

Mesos  (master)  

scheduler  

syscall-­‐like  API  for  datacenter  

Page 73: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos:  datacenter  kernel  +  enable  running  multiple  distributed  systems  on  the  same  cluster  of  machines  and  dynamically  share  the  resources  more  efficiently!  

Page 74: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos:  datacenter  kernel  +  enable  building  new  distributed  systems  by  providing  common  functionality  (primitives)  every  new  distributed  system  re-­‐implements  

Page 75: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  primitives  •  principals,  users,  roles  •  advanced  fair-­‐sharing  

allocation  algorithms  •  high-­‐availability  (even  

during  upgrades)  •  resource  monitoring  •  preemption/revocation  •  volume  management  •  reservations  (dynamic/

static)  •  …  

Page 76: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

build  on  top  of  Mesos  

①  don’t  reinvent  the  wheel:  leverage  primitives  to  implement/automate  failures,  maintenance,  etc.  

Page 77: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

build  on  top  of  Mesos  

② make  it  easier  for  your  users  to  use  your  software!  

Page 78: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

build  on  top  of  Mesos  

② make  it  easier  for  your  users  to  use  your  software!  

Page 79: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

built  on  Mesos  

2009   2010   2013   2014  

Page 80: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

ported  to  Mesos  

2011   2012   2013   2014  

Page 81: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  is  being  run  at:  

2010   2013   2014  …  

Page 82: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

going  even  deeper  …  

Page 83: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  resource  requests/offers  

masters  

scheduler  

request  3  CPUs  2  GB  RAM  

a  request  is  purposely  simplified  subset  of  a  specification,  mainly  including  the  required  resources  at  that  point  in  time  

Page 84: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  resource  requests/offers  

masters  

scheduler  

offer  hostname  4  CPUs  4  GB  RAM  

Page 85: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

offer  hostname  4  CPUs  4  GB  RAM  

offer  hostname  4  CPUs  4  GB  RAM  

offer  hostname  4  CPUs  4  GB  RAM  

Mesos  resource  requests/offers  

masters  

scheduler  

offer  hostname  4  CPUs  4  GB  RAM  

Page 86: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

offer  hostname  4  CPUs  4  GB  RAM  

offer  hostname  4  CPUs  4  GB  RAM  

offer  hostname  4  CPUs  4  GB  RAM  

Mesos  resource  requests/offers  

masters  

scheduler  

offer  hostname  4  CPUs  4  GB  RAM  

scheduler  uses  the  offers  to  decide  what  tasks  to  run  

Page 87: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

offer  hostname  4  CPUs  4  GB  RAM  

offer  hostname  4  CPUs  4  GB  RAM  

offer  hostname  4  CPUs  4  GB  RAM  

Mesos  resource  requests/offers  

masters  

scheduler  

offer  hostname  4  CPUs  4  GB  RAM  

scheduler  uses  the  offers  to  decide  what  tasks  to  run    “two-­‐level  scheduling”  

Page 88: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  task/executor  model  

masters  

scheduler  

scheduler  uses  the  offers  to  decide  what  tasks  to  run  

task  3  CPUs  2  GB  RAM  

Page 89: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  a  command  

mesos-slave!

Page 90: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  a  command  

mesos-slave!

task!

Page 91: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  a  command  

mesos-slave!

task! task!

Page 92: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  an  executor  

mesos-slave!

Page 93: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  an  executor  

mesos-slave!

executor!

Page 94: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  an  executor  

mesos-slave!

executor!

task!

Page 95: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  an  executor  

mesos-slave!

executor!

task! task!

Page 96: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  an  executor  

mesos-slave!

executor!!!!

Page 97: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  an  executor  

mesos-slave!

executor!

task! task!

task!

Page 98: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 99: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

containers  

Page 100: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 101: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 102: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 103: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 104: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 105: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 106: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

task/executor  isolation  

mesos-slave!

executor!

task!

task!

Page 107: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

a  task  with  a  Docker  image  

mesos-slave!

Docker!image!

Page 108: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

masters  

master  failover  

scheduler  

after  a  new  master  is  elected  all  schedulers  and  slaves  connect  to  the  new  master    all  tasks  keep  running  across  master  failover!  

Page 109: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

masters  

scheduler  failover  

scheduler  

scheduler  re-­‐registers  with  master  and  resumes  operation    all  tasks  keep  running  across  framework  failover!  

scheduler  

Page 110: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

slave  failover  

mesos-slave!

task! task!

Page 111: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

slave  failover  

mesos-slave!

task!task!

Page 112: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

slave  failover  

task!task!

Page 113: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

slave  failover  

mesos-slave!

task!task!

Page 114: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

slave  failover  

mesos-slave!

task!task!

Page 115: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

slave  

slave  failover  

mesos-slave!

(large  in-­‐memory  services,  expensive  to  restart)  

Page 116: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

down  the  rabbit  hole  …  

Page 117: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  1st-­‐level  scheduler  allocates  resources  to  frameworks  using  a  fair-­‐sharing  algorithm  we  created  called  Dominant  Resource  Fairness  (DRF)  

Page 118: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

DRF,  born  of  static  partitioning  

datacenter  

Page 119: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

static  partitioning  across  teams  

promotions   trends   recommendations  team  

Page 120: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

promotions   trends   recommendations  team  

fairly  shared!  

static  partitioning  across  teams  

Page 121: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

goal:  fairly  share  the  resources  without  static  partitioning  

Page 122: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

partition  utilizations  

promotions   trends   recommendations  

45%  CPU  100%  RAM  

75%  CPU  100%  RAM  

100%  CPU  50%  RAM  

team  

utilization  

Page 123: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

observation:  a  dominant  resource  bottlenecks  each  team  from  running  any  more  jobs/tasks    

Page 124: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

dominant  resource  bottlenecks  

promotions   trends   recommendations  team  

utilization  

bottleneck   RAM  

45%  CPU  100%  RAM  

75%  CPU  100%  RAM  

100%  CPU  50%  RAM  

RAM   CPU  

Page 125: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

insight:  allocating  a  fair  share  of  each  team’s  dominant  resource  guarantees  they  can  run  at  least  as  many  jobs/tasks  as  with  static  partitioning!  

Page 126: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

…  if  my  team  gets  at  least  1/N  of  my  dominant  resource  I  will  do  no  worse  than  if  I  had  my  own  cluster,  but  I  might  do  better  when  resources  are  available!  

Page 127: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

     tep  4:  Profit  (statistical  multiplexing)  $  

Page 128: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

in  practice,  fair  sharing  is  insufficient  

Page 129: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

weighted  fair  sharing  

promotions   trends   recommendations  team  

Page 130: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

weighted  fair  sharing  

promotions   trends   recommendations  team  

weight   0.17   0.5   0.33  

Page 131: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  implements  weighted  DRF  

masters  

masters  can  be  configured  with  weights  per  role    resource  allocation  decisions  incorporate  the  weights  to  determine  dominant  fair  shares  

Page 132: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

in  practice,  weighted  fair  sharing  is  still  insufficient  

Page 133: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

a  non-­‐cooperative  framework  (i.e.,  has  long  tasks  or  is  buggy)  can  get  hoard  too  many  resources  

Page 134: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

resource  reservations  

resources  on  individual  slaves  can  be  reserved  for  particular  roles    resource  offers  include  the  reservation  role  (if  any)  

masters  

framework  (trends)  

offer  hostname  4  CPUs  4  GB  RAM  role:  trends  

Page 135: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

reservations  

slave   *!role-foo!

reservations  

mesos-slave!

role-bar!

Page 136: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

static  reservations  

reservations  available  with  Mesos  using  the          --resources  flag  on  each  mesos-slave!

 $ mesos-slave --resources=‘cpus(role-foo):2;mem(role-foo):1024;cpus(role-bar):2;mem(role-bar):1024;cpus(*):4;mem(*):4096’!

Page 137: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

static  reservations  

+  strong  guarantees  

-­‐  set  up  by  an  operator  when  starting  slave  

-­‐  immutable  (must  drain/restart  the  slave)  

 

 

Page 138: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

dynamic  reservations  framework  scheduler  reserves  resources  at  runtime  when  it  accepts  an  offer  (allocation)  

 

 

 masters  

offer  hostname  4  CPUs  4  GB  RAM  

slave  (1)  

framework  (role-­‐baz)  

Page 139: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

dynamic  reservations  framework  scheduler  reserves  resources  at  runtime  when  it  accepts  an  offer  (allocation)  

 

 

 masters  

framework  (role-­‐baz)  

Accept  Launch/Reserve(4  CPUs,  4  GB  RAM)  

slave  (2)  

Page 140: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

dynamic  reservations  framework  scheduler  reserves  resources  at  runtime  when  it  accepts  an  offer  (allocation)  

 

 

 masters  

Launch/Reserve(4  CPUs,  4  GB  RAM)  

slave  (3)  

framework  (role-­‐baz)  

Page 141: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

promotions  40%  

trends  20%  

used  10%  

unused  30%  

recommendations  40%  

reservations  

reservations  provide  guarantees,  but  at  the  cost  of  utilization  

Page 142: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

revocable  resources  

masters  

framework  (promotions)  

resources  that  are  reserved  for  another  role  and  thus  may  be  revoked  at  any  time  

offer  hostname  4  CPUs  4  GB  RAM  role:  trends  

Page 143: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

preemption  via  revocation    

…  my  tasks  will  not  be  killed  unless  I’m  using  revocable  

resources!  

Page 144: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

oversubscription  via  revocable  resources  

masters  

framework  (promotions)  

oversubscribe  resources  by  allocating  unused  resources  as  revocable!  

offer  hostname  4  CPUs  4  GB  RAM  role:  trends  

Page 145: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

revocation  “guarantee”  

…  my  tasks  will  not  be  killed  unless  I’m  using  revocable  

resources!  

Page 146: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

revocation  “guarantee”  

what  about  when:  

① want/need  to  defrag  (think  page  replacement  algorithm!)  

② maintenance  

Page 147: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

mechanism  for  deallocation  

possible  solution:  introduce  failures  to  deallocate  resources  

 

but  why  not  communicate  explicitly!?  

Page 148: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

inverse  offer  framework  scheduler  gets  deallocation  requests  in  the  form  of  inverse  offers  

 

 

 masters  

offer-­‐1  hostname  4  CPUs  4  GB  RAM  

slave  (1)  

framework  (role-­‐baz)  

Page 149: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

inverse  offer  framework  scheduler  can  kill  tasks  and  acknowledge  deallocation  

 

 

 masters  

framework  (role-­‐baz)  

Kill/ACK  

slave  (2)  

Page 150: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

maintenance  ①  drain  machine  by  sending  out  inverse  offers  

② while  draining  can  still  send  out  offers  with  revocable  resources  

③  remove  machine  from  allocation  once  drained  (or  at  some  specific  time)  

Page 151: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

but  what  about  my  persistent  data?  

Page 152: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  framework  scheduler  creates  volumes  for  disk  resources  at  runtime  when  it  accepts  an  offer  (allocation)  

 

 

 

masters  

Offer  hostname  4  CPUs  4  GB  RAM  

slave  (1)  

scheduler  (role-­‐baz)  

Page 153: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  framework  scheduler  creates  volumes  for  disk  resources  at  runtime  when  it  accepts  an  offer  (allocation)  

 

 

 

masters  

scheduler  (role-­‐baz)  

Accept  Launch/Create(1  TB  DISK)  

slave  (2)  

Page 154: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  framework  scheduler  reserves  resources  at  runtime  when  it  accepts  an  offer  (allocation)  

 

 

 masters  

Launch/Create(1  TB  DISK)  

slave  (3)  

scheduler  (role-­‐baz)  

Page 155: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  volumes  are  created  before  launching  any  tasks  or  executors  

 

 

 slave   role-baz!

role-foo!

mesos-slave!

role-bar!

Page 156: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  volumes  are  mounted  into  the  container  when  a  task  or  executor  gets  launched  

 

 

slave  

!!!!!

role-baz!

role-foo!

mesos-slave!

role-bar!

task!

Page 157: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  volumes  persist  even  after  task  or  executor  terminate!  

 

 

slave  

!!!!!

role-baz!

role-foo!

mesos-slave!

role-bar!

task!

Page 158: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

persistent  volumes  volumes  persist  even  after  task  or  executor  terminate!  

 

slave   role-baz!

role-foo!

mesos-slave!

role-bar!

Page 159: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

the  bigger  picture  reservations  +  

inverse  offers  +  

persistent  volumes  =  

long-­‐lived  stateful  frameworks!  

Page 160: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

conclusion  

Page 161: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

our  “other”  computers  are  datacenters*  

*  collection  of  physical  and/or  virtual  machines  

Page 162: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 163: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

the  datacenter  is  just  another  form  factor  

Page 164: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesos  is  the  kernel  …  

Page 165: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

desktop server datacenter

OS  

OS  

OS  

need  a  datacenter  operating  system  

Page 166: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Mesosphere’s  DCOS  

Page 167: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,
Page 168: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Marathon  

Marathon,  a  scheduler  for  running  stateless  services  written  in  any  language  

init  for  the  datacenter  operating  system  

Page 169: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

Chronos  

Chronos,  a  scheduler  for  running  cron  jobs  with  dependencies  

cron  for  the  datacenter  operating  system  

Page 170: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

DCOS  CLI  

Page 171: Containerizationas* the*Building*Block* for*Datacenter ... · (micro)services* ① do(one(thing(and(do(it(well((UNIX)(② compose! ③ build/commit(in(isolation,test(in(isolation,

mesosphere.com  

Thanks!