Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Help! I've created a serverless monolith - Azure Lowlands

Help! I've created a serverless monolith - Azure Lowlands

Slides for my session at Azure Lowlands.

Fd55de4174accaf3b4f030e43a8a70c6?s=128

Marc Duiker

June 30, 2022
Tweet

More Decks by Marc Duiker

Other Decks in Programming

Transcript

  1. @MarcDuiker

  2. @MarcDuiker Marc Duiker Sr Developer Advocate

  3. @MarcDuiker 3

  4. @MarcDuiker 4

  5. @MarcDuiker 5

  6. @MarcDuiker 6

  7. @MarcDuiker 7

  8. @MarcDuiker 8

  9. @MarcDuiker 9 https://en.wikipedia.org/wiki/Monolithic_application “In software engineering, a monolithic application describes

    a software application that is designed without modularity.”
  10. @MarcDuiker 10 https://en.wikipedia.org/wiki/Modularity “…modularity is the degree to which a

    system's components may be separated and recombined, often with the benefit of flexibility and variety in use.”
  11. @MarcDuiker App Server DB Server

  12. @MarcDuiker 13 Function App Function App Queue Storage

  13. @MarcDuiker 14 Function App Function App Queue Database

  14. @MarcDuiker 15

  15. @MarcDuiker 16

  16. @MarcDuiker 17

  17. @MarcDuiker 18

  18. @MarcDuiker 19 https://martinfowler.com/articles/agileStory.html “We eventually agreed on "agile" as we

    felt that captured the adaptiveness and response to change which we felt was so important to our approach…”
  19. @MarcDuiker 20

  20. @MarcDuiker 21

  21. @MarcDuiker 22

  22. @MarcDuiker 23

  23. @MarcDuiker

  24. @MarcDuiker

  25. @MarcDuiker Task on backlog Work started Work completed

  26. @MarcDuiker 29 https://www.atlassian.com/incident-management/kpis/common-metrics

  27. @MarcDuiker 30 https://www.atlassian.com/incident-management/kpis/common-metrics

  28. @MarcDuiker https://www.atlassian.com/incident-management/kpis/common-metrics

  29. @MarcDuiker 32

  30. @MarcDuiker 33

  31. @MarcDuiker 35 Caused by the nature of the (business) problem.

    Can’t be easily reduced. Caused by decisions we make related to architecture, frameworks, packages, code style etc. Can be reduced. https://en.wikipedia.org/wiki/Programming_complexity
  32. @MarcDuiker 36 https://en.wikipedia.org/wiki/Programming_complexity Caused by decisions we make related to

    architecture, frameworks, packages, code style etc. Can be reduced. Caused by the nature of the (business) problem. Can’t be easily reduced.
  33. @MarcDuiker 37

  34. @MarcDuiker 38

  35. @MarcDuiker 40

  36. @MarcDuiker 41

  37. @MarcDuiker 42

  38. @MarcDuiker 45

  39. @MarcDuiker 46

  40. @MarcDuiker 47

  41. @MarcDuiker 48

  42. @MarcDuiker 49 Domain Bounded Context Bounded Context Bounded Context Bounded

    Context https://thedomaindrivendesign.io/bounded-context/
  43. @MarcDuiker 50 Ecommerce Product Catalog Inventory Billing Shopping Basket https://thedomaindrivendesign.io/bounded-context/

  44. @MarcDuiker “Ubiquitous language identifies the terms and concepts within a

    bounded context that are unambiguous and agreed upon by all stakeholders.” https://thedomaindrivendesign.io/what-is-strategic-design
  45. @MarcDuiker 52 Banking Context Ecommerce Context https://thedomaindrivendesign.io/what-is-strategic-design

  46. @MarcDuiker 53

  47. @MarcDuiker 54

  48. @MarcDuiker “Resilience is the ability to provide and maintain an

    acceptable level of service in the face of faults and challenges to normal operation.” https://en.wikipedia.org/wiki/Resilience_(network)
  49. @MarcDuiker

  50. @MarcDuiker https://docs.microsoft.com/en-us/azure/architecture/patterns/

  51. @MarcDuiker 60

  52. @MarcDuiker 61

  53. @MarcDuiker 62 Function App B Function App A Queue Storage

  54. @MarcDuiker 63

  55. @MarcDuiker 64 Increase number of (virtual) machines Increase CPU /

    memory of one machine
  56. @MarcDuiker 66

  57. @MarcDuiker

  58. @MarcDuiker 68 Fan out Fan out No fan out No

    fan out
  59. @MarcDuiker 69 Fan out Fan out No fan out No

    fan out https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#scale Use dedicated resource to its fullest
  60. @MarcDuiker 70 Fan out Fan out No fan out No

    fan out https://docs.microsoft.com/en-us/azure/azure-functions/functions-scale#scale Use higher tier / sku Use regular tier / sku
  61. @MarcDuiker 74 Ask yourself these questions before adding any code:

    - Do *I* need to write this? - Is this a good fit with the rest of the app? - What is the impact regarding resilience/scalability of the app?
  62. @MarcDuiker 75 https://quest.ably.dev/

  63. @MarcDuiker 76 Twitter: @marcduiker YouTube: http://bit.ly/marc-serverless Ably Discord: https://discord.gg/q89gDHZcBK