Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Minimum Viable Docker: our journey towards orchestration

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Ops is dead. long live ops.
Ops is dead. long live ops.
Chargement dans…3
×

Consultez-les par la suite

1 sur 42 Publicité

Minimum Viable Docker: our journey towards orchestration

Télécharger pour lire hors ligne

While Kubernetes and Mesos are all the rage, you don't necessarily need a complex orchestration layer to start using and benefiting from Docker. We will present how Babylon Health is running its dockerised AI microservices in production, pros and cons, and what we have in store for the future.

While Kubernetes and Mesos are all the rage, you don't necessarily need a complex orchestration layer to start using and benefiting from Docker. We will present how Babylon Health is running its dockerised AI microservices in production, pros and cons, and what we have in store for the future.

Publicité
Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Similaire à Minimum Viable Docker: our journey towards orchestration (20)

Publicité

Plus par Outlyer (20)

Plus récents (20)

Publicité

Minimum Viable Docker: our journey towards orchestration

  1. 1. Minimum Viable Docker Our journey towards orchestration
  2. 2. What this talk is about How we’ve been surviving with Docker running in production without any orchestration tool. What we have in store for the future.
  3. 3. To provide affordable and accessible healthcare to everyone on earth
  4. 4. Very first version of the Chatbot Micro Service Architecture 8 Stateless Applications HTTP Based Start simple. Build fast.
  5. 5. How should our applications artefacts look like ? How to deploy them ? Criteria: Multiple languages (Java, Python, …) Good dependency management Good artefact tracking Separate build time / deploy time Dev/Prod parity
  6. 6. How should our applications artefacts look like ? How to deploy them ? Criteria: Multiple languages (Java, Python, …) Good dependency management Good artefact tracking Separate build time / deploy time Dev/Prod parity
  7. 7. FROM python:3.6-alpine MAINTAINER "Jeremie Vallee" <jeremie.vallee@babylonhealth.com> COPY . /app WORKDIR /app RUN pip install -r requirements.txt ENTRYPOINT ["python"] CMD ["app.py"] Dockerfile
  8. 8. How to manage our Dockerized applications ? Objectives: Fast deployments Service routing & Authentication Monitoring High Availability Scalability
  9. 9. How to manage our Dockerized applications ? Objectives: Fast deployments Service routing & Authentication Monitoring High Availability Scalability Constraints: Time (of course) Docker beginner level No AWS/GCP Limited resources
  10. 10. How to manage our Dockerized applications ? Objectives: Fast deployments Service routing & Authentication Monitoring High Availability Scalability Constraints: Time (of course) Docker beginner level No AWS/GCP Limited resources
  11. 11. Keep it simple! What is the minimum we need to run our applications with the objectives we have ?
  12. 12. Linux box Docker
  13. 13. MyAppA Linux box Docker
  14. 14. /usr/bin/docker run --rm -p 127.0.0.1:8805:7799   --env-file /opt/babylon/myapplicationA/environment --name myapplicationA myrepo.io/babylon/myapplicationA:master Running myapplicationA
  15. 15. [Unit] Description=My Application A Requires=docker.service After=docker.service [Service] Restart=always TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker rm -f myapplicationA ExecStartPre=-/usr/bin/docker pull myrepo.io/babylon/myapplicationA:master ExecStart=/usr/bin/docker run --rm -p 127.0.0.1:8805:7799   --env-file /opt/babylon/myapplicationA/environment --name myapplicationA myrepo.io/babylon/myapplicationA:master ExecStop=/usr/bin/docker stop myapplicationA [Install] WantedBy=local.target /etc/systemd/system/myapplicationA.service
  16. 16. [Unit] Description=My Application A Requires=docker.service After=docker.service [Service] Restart=always TimeoutStartSec=0 ExecStartPre=-/usr/bin/docker rm -f myapplicationA ExecStartPre=-/usr/bin/docker pull myrepo.io/babylon/myapplicationA:master ExecStart=/usr/bin/docker run --rm -p 127.0.0.1:8805:7799   --env-file /opt/babylon/myapplicationA/environment --name myapplicationA myrepo.io/babylon/myapplicationA:master ExecStop=/usr/bin/docker stop myapplicationA [Install] WantedBy=local.target /etc/systemd/system/myapplicationA.service
  17. 17. service myapplicationA start /etc/systemd/system/myapplicationA.service Start service myapplicationA stop Stop service myapplicationA restart Deploy
  18. 18. MyAppA MyAppB MyAppC Easy deployments
  19. 19. MyAppA MyAppB MyAppC https:// myendpoint / myapplicationA https:// myendpoint / myapplicationB https:// myendpoint / myapplicationC MyAppA MyAppB MyAppC Service routing
  20. 20. MyAppA MyAppB MyAppC https:// myendpoint / myapplicationA https:// myendpoint / myapplicationB https:// myendpoint / myapplicationC MyAppA MyAppB MyAppC Service routing Authentication
  21. 21. MyAppA MyAppB MyAppC Easy deployments Service routing Authentication
  22. 22. MyAppA MyAppB MyAppC Monitoring ? All applications must have a health check endpoint https:// myendpoint / myapplicationA / health
  23. 23. MyAppA MyAppB MyAppC Monitoring ? Logstash on the box to collect application logs and metrics Data gets shipped to Elasticsearch and visualised with Kibana
  24. 24. MyAppA MyAppB MyAppC Easy deployments Service routing Authentication Monitoring
  25. 25. MyAppA MyAppB MyAppC Easy deployments Service routing Authentication Monitoring High Availability ? Scalability ?
  26. 26. MyAppA MyAppB MyAppC
  27. 27. MyAppA MyAppB MyAppC MyAppA MyAppB MyAppC
  28. 28. MyAppA MyAppB MyAppC MyAppA MyAppB MyAppC Load Balancer
  29. 29. MyAppA MyAppB MyAppC MyAppA MyAppB MyAppC Load Balancer Easy deployments Service routing Authentication Monitoring High Availability Scalability
  30. 30. What was good about this design ? Matched all our objectives Very simple and fast to set up Allowed us to learn a lot about Docker
  31. 31. What are the limitations ? HTTP based applications only External health checks limited with multiple servers Each application must be deployed on all servers
  32. 32. THE FUTURE
  33. 33. New needs 50+ micro services GPU Based Applications Queue based Applications (Kafka) gRPC Internationalisation
  34. 34. The next generation of our Infrastructure Calico And much more …
  35. 35. In conclusion Very simple architecture Great solution if you face the same constraints as we did Allowed us to quickly deliver our Medical Chatbot into the real world We learned a lot Ready to take it to the next level
  36. 36. We’re hiring!
  37. 37. Thank you!

×