How the hell do I run my microservices in production, and will it scale?

How the hell do I run my microservices in production, and will it scale?

by Daniel van Gils
DevOps Pro Vilnius 2016

6d46284ef16436cb154adf4963e236f0?s=128

DevOps Pro

June 01, 2016
Tweet

Transcript

  1. Daniël van Gils @foldingbeauty daniel@cloud66.com www.cloud66.com How the hell do

    I run Docker in Production?... and will it scale?
  2. UX DevOps Business Developer Advocate

  3. Established in 2012 Build, deploy and maintain any application on

    any server, on the cloud provider of your choice or bring your own servers. Running Docker in production for almost 1½ years for our customers. We simplify DevOps. Average of 4000+ servers.
  4. How the hell do I run Docker in Production?... and

    will it scale? Daniël van Gils @foldingbeauty daniel@cloud66.com www.cloud66.com
  5. None
  6. None
  7. NOISE $docker run alpine echo 'hello world’ you don’t know

    what kind of skills you need production you know what kind of skill you need you think you know your gained all the skills but you don’t know time skills
  8. technology ǽ ♥ NOISE Minimal Lovable Service

  9. Ɨ ǽ #1 the right container image #2 containers in

    production Ɨ Ɨ
  10. Ɨ Ȑ Ȑ containers Ɨ ƗƗ Ɨ Ɨ Ɨ Ɨ

    bin/libs os bin/libs bin/libs Ǹ Ȑ server os bin/libs Ǹ Ȑ Ȑ cloud/VM os bin/libs Ǹ Ȑ os bin/libs
  11. Ǹ cloud/VM Ǹ containers Ǹ server dev ops ops ops

    dev dev
  12. Containers need a smooth DevOps team

  13. service Ɨ containers server cluster(s) Ȑ image Ɨ ǽ Ɨ

    Ɨ = code = docker file = docker engine = platform Ɨ build ship deploy
  14. None
  15. containerisation Ǹ the containerisation machine ƗƗƗ

  16. you can’t polish a turd Ɨ containerisation Ǹ Dž ƗƗƗ

    =
  17. Keep Images Slim Stupid dev » test » stage »

    production ǽ Minimal Lovable Service Image
  18. SMALL SECURE SPEEDY / PERFORMANT STABLE
 SET / IMMUTABLE Ɨ

    ǽ Keep Images Small, Secure, Speedy, Stable and Set Stupid
  19. SMALL Start with the smallest minimal image you can find.

    Remove compile time dependencies. Remove packages you don’t need. Run stats for the image. Ɨ ǽ “I didn't have time to create a slim image, so I created a fat one instead.”
  20. SMALL SECURE PERFORMANT STABLE
 IMMUTABLE Ɨ ǽ

  21. SECURE Remove all the secrets. Patch to the latest security

    updates. Run the image with the right UID. Test the image. Ɨ ǽ
  22. SMALL SECURE PERFORMANT STABLE
 IMMUTABLE Ɨ ǽ

  23. PERFORMANT Optimise code. Memory and cpu usage. One process. Load

    testing. Ɨ ǽ
  24. SMALL SECURE PERFORMANT STABLE
 IMMUTABLE Ɨ ǽ

  25. STABLE Lock the image version. Lock the runtime version(s). Tag

    your image. Proper logging. Image guideline for your team. Ɨ ǽ
  26. SMALL SECURE PERFORMANT STABLE
 IMMUTABLE Ɨ ǽ

  27. IMMUTABLE Use volumes wisely. Loosely coupled. Don’t use databases inside

    a image. Use external services for persistency. Ɨ ǽ
  28. dev » test » stage » production ǽ Minimal Lovable

    Service Image Keep Images Small, Secure, Speedy, Stable and Set Stupid
  29. None
  30. Ɨ ǽ Ɨ  monolith containerisation ± 70 % monolith

    1x monolith image FAT
  31. Ɨ ǽ Ɨ  API first containerisation ± 20% Ɨ

    ǽ Ɨapi 1x frontend 1x image frontend FAT image api FAT
  32. Ɨ ǽ Ɨ  splitting monolith containerisation ± 6% Ɨ

    ǽ api 6x frontend 1x Ɨ ǽ Ɨ workers 10x ƗƗ Ɨ ƗƗƗ Ɨ ƗƗ image frontend FAT image api THIN image workers THIN ƗƗƗ ƗƗ Ɨ
  33. Ɨ ǽ Ɨ ǽ A 6x B 12x Ɨ ǽ

    Ɨ C 10x ƗƗ Ɨ ƗƗƗ Ɨ ƗƗ image B THIN image A THIN image C THIN ƗƗƗ ƗƗ Ɨ microservice architecture ± 4% ƗƗƗ ƗƗ ƗƗ Ɨ Ɨ ƗƗ Ɨ  message queue
  34. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING DATA MANAGMENT MONITORING SECURITY

  35. DEV/OPS/DESIGN FLOW Have an image guideline. Create a workflow using

    the same image in all the software cycle stages. From design to production mimic the environment. Test heavily. Ǻ
  36. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING DATA MANAGMENT MONITORING SECURITY

  37. ORCHESTRATION Isolation of services. Make use of the resource available.

    Self healing. Load distribution. Adding nodes to your cluster. Ǻ
  38. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING DATA MANAGMENT MONITORING SECURITY

  39. DISCOVERY Find your services and datasources with minimal code change.

    Versioning of running services. Automagically update discovery when new services are online or scaled up/down. Ǻ
  40. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING/SCHEDULING DATA MANAGMENT MONITORING SECURITY

  41. SCALING/SCHEDULING Scale your containers. Scale your docker cluster. Scale your

    on/off jobs. Failover groups. Cross cloud clusters. Load balancing. Ǻ
  42. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING DATA MANAGMENT MONITORING SECURITY 

  43. DATA MANAGEMENT Backup and restores. Clustering. Verify your backups. Run

    natively not in a container for non cloud native DBs. Ǻ 
  44. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING DATA MANAGMENT MONITORING SECURITY ǟ

  45. MONITORING Get all the statistics of resources (mem/load/net/res) used. Aggregating

    of logs. Debugging your containers. Ǻ ǟ
  46. DEV/OPS/DESIGN FLOW ORCHESTRATION DISCOVERY SCALING DATA MANAGMENT MONITORING SECURITY Ǻ

  47. SECURITY Intrusion detection and prevention systems. Denial of service protection.

    Firewalling. Failover groups. Segregate container groups VPC / bastion servers. Verification of images. Ǻ Ǻ
  48. SMALL SECURE PERFORMANT STABLE
 IMMUTABLE Ɨ ǽ DEV/OPS/DESIGN FLOW ORCHESTRATION

    DISCOVERY SCALING/SCHEDULING DATA MANAGMENT MONITORING SECURITY MLI PLATFORM CONTAINERS AS A SERVICE
  49. When you get DevOps right, Microservices architecture right and creating

    the right minimal lovable Image and having the right platform to run containers. Ohh man, the future is bright and you don’t go to hell! ǽ
  50. www.cloud66.com blog.cloud66.com habitus.io startwithdocker.com ready for your quest? thank you

    Daniël van Gils @foldingbeauty daniel@cloud66.com www.cloud66.com