Three Billy Goats Gruff
: from a monolith to containers to functions

Three Billy Goats Gruff
: from a monolith to containers to functions

Talk at GopherCon UK, see https://www.gophercon.co.uk

5c3807aaaf0ffefe6c75e3dbbb8588b5?s=128

Michael Hausenblas

August 02, 2018
Tweet

Transcript

  1. Three Billy Goats Gruff
 A developer's tale: from a monolith

    to containers to functions Michael Hausenblas
 @mhausenblas
 Developer Advocate, Red Hat
 2018-08-02, GopherCon UK, London
  2. Hit me up on Twitter: @mhausenblas 2 • Developer Advocate

    @ Red Hat (Go, Kubernetes, OpenShift) • Developer Advocate @ Mesosphere • Chief Data Engineer @ MapR • Applied research (IE/AT) • Nowadays mainly Go (Python, Node, Java, C++) • Dev turned ops $ whois mhausenblas
  3. Hit me up on Twitter: @mhausenblas 3 admin SRE developer

    info sec architect PM PHB
  4. https://unsplash.com/photos/m0wptz8vYpw motivation

  5. Hit me up on Twitter: @mhausenblas 5 https://www.pexels.com/photo/people-running-during-daytime-33703/ out-perform competition

  6. Hit me up on Twitter: @mhausenblas 6 https://pixabay.com/en/logistics-stock-transport-shipping-852936/ ship around

    the clock!
  7. Hit me up on Twitter: @mhausenblas 7 togetherness

  8. The app …

  9. Hit me up on Twitter: @mhausenblas

  10. Hit me up on Twitter: @mhausenblas

  11. Hit me up on Twitter: @mhausenblas

  12. Hit me up on Twitter: @mhausenblas

  13. Hit me up on Twitter: @mhausenblas

  14. Meet the three billy goats …

  15. Hit me up on Twitter: @mhausenblas M C F

  16. Hit me up on Twitter: @mhausenblas As monolith … M

    • Two Go routines: • serving static assets and API for Web app • metadata extraction • Using Go stdlb only • Deployed directly as a binary along with static assets (e.g. Terraform on a VM)
  17. M

  18. Hit me up on Twitter: @mhausenblas As containerised microservices …

    C • Two containers: • serving static assets and API for Web app • metadata extraction • Using Minio as shared storage • Deployed using Kubernetes primitives
  19. C

  20. Hit me up on Twitter: @mhausenblas Alternative container-based architectures C

    • lift and shift (aka: put monolith into a container) • both app containers in one pod, share data via local volume • app containers in different pods, share data via persistent volume
  21. Hit me up on Twitter: @mhausenblas F As functions …

    • Three functions: • upload an image • list images along with metadata • metadata extraction • Using S3 as shared storage (also: static assets served from bucket) • Deployed using Lambda, API Gateway, and CloudWatch
  22. F

  23. Demo time! github.com/mhausenblas/imgn

  24. Lessons learned

  25. Hit me up on Twitter: @mhausenblas 25 • From monolith

    to containers: pretty straight-forward • Functions requires different way of thinking • Both containers & functions increase dev/deploy velocity
 but also introduce new challenges: • containers: how to build/maintain images, routing • functions: how to debug and orchestrate Lessons learned
  26. Hit me up on Twitter: @mhausenblas 26 • Containers: big

    advantage is due to Kubernetes you now have portability and avoid lock-in (but also: do containers make sense here?) • Functions: big advantage is devs don’t need to bother with the infra bits but low-level CLI unusable (need CF, SAM, Serverless framework) • Ratio of “code to config” (deployment descriptors, etc.) Lessons learned
  27. Hit me up on Twitter: @mhausenblas 27 • What about

    observability? • Monitoring • Logging • Distributed tracing • What about security? Lessons learned
  28. Resources

  29. Hit me up on Twitter: @mhausenblas 29

  30. plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews learn.openshift.com