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

How to Prevent Building a Serverless Monolith

Marc Duiker
November 24, 2021

How to Prevent Building a Serverless Monolith

Slides for the presentation I gave for the ForDevs Community meetup: https://www.meetup.com/ForDevs/events/282118154/
https://www.youtube.com/watch?v=_gBrWFbdy6Y

Marc Duiker

November 24, 2021
Tweet

More Decks by Marc Duiker

Other Decks in Technology

Transcript

  1. @MarcDuiker 2
    Marc Duiker
    Developer Advocate

    View full-size slide

  2. @MarcDuiker 3

    View full-size slide

  3. @MarcDuiker 4

    View full-size slide

  4. @MarcDuiker 5

    View full-size slide

  5. @MarcDuiker 6

    View full-size slide

  6. @MarcDuiker 7

    View full-size slide

  7. @MarcDuiker 8

    View full-size slide

  8. @MarcDuiker 9
    https://en.wikipedia.org/wiki/Monolithic_application
    “In software engineering, a monolithic
    application describes a software application
    that is designed without modularity.”

    View full-size slide

  9. @MarcDuiker
    App Server DB Server

    View full-size slide

  10. @MarcDuiker 11
    Function App
    Function App Queue Database

    View full-size slide

  11. @MarcDuiker 12
    Function App
    Function App Queue Database

    View full-size slide

  12. @MarcDuiker 13

    View full-size slide

  13. @MarcDuiker 14

    View full-size slide

  14. @MarcDuiker 15

    View full-size slide

  15. @MarcDuiker 16

    View full-size slide

  16. @MarcDuiker 17

    View full-size slide

  17. @MarcDuiker 18

    View full-size slide

  18. @MarcDuiker 19

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  22. @MarcDuiker 23

    View full-size slide

  23. @MarcDuiker 24

    View full-size slide

  24. @MarcDuiker 25
    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

    View full-size slide

  25. @MarcDuiker 26
    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.

    View full-size slide

  26. @MarcDuiker 27

    View full-size slide

  27. @MarcDuiker 28

    View full-size slide

  28. @MarcDuiker 29

    View full-size slide

  29. @MarcDuiker 30

    View full-size slide

  30. @MarcDuiker 31

    View full-size slide

  31. @MarcDuiker 32

    View full-size slide

  32. @MarcDuiker 33

    View full-size slide

  33. @MarcDuiker 34

    View full-size slide

  34. @MarcDuiker 35

    View full-size slide

  35. @MarcDuiker 36

    View full-size slide

  36. @MarcDuiker 37
    Domain
    Bounded
    Context Bounded
    Context
    Bounded
    Context
    Bounded
    Context
    https://thedomaindrivendesign.io/bounded-context/

    View full-size slide

  37. @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

    View full-size slide

  38. @MarcDuiker 39
    Banking Context Ecommerce Context
    https://thedomaindrivendesign.io/what-is-strategic-design

    View full-size slide

  39. @MarcDuiker 40

    View full-size slide

  40. @MarcDuiker 41

    View full-size slide

  41. @MarcDuiker 42

    View full-size slide

  42. @MarcDuiker 43

    View full-size slide

  43. @MarcDuiker 44
    Function App
    Function App Queue Database

    View full-size slide

  44. @MarcDuiker 45

    View full-size slide

  45. @MarcDuiker 46
    Fan out Fan out
    No fan out No fan out

    View full-size slide

  46. @MarcDuiker 47
    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

    View full-size slide

  47. @MarcDuiker 48
    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

    View full-size slide

  48. @MarcDuiker 49
    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/complexity
    of the app?

    View full-size slide

  49. @MarcDuiker 50
    @az_func_updates
    http://bit.ly/marc-serverless

    View full-size slide