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. 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. 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. 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)
  4. 17.

    M

  5. 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
  6. 19.

    C

  7. 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
  8. 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
  9. 22.

    F

  10. 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
  11. 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
  12. 27.

    Hit me up on Twitter: @mhausenblas 27 • What about

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