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

Decomposing a live application with confidence

Decomposing a live application with confidence

We always try to avoid the famous Big Mall of Mud™ due to many reasons but what happens when we're already facing it - and making profit with it? Should we just accept our fate and keep fixing bugs for the rest of our lives or should we actually do something different?
In this presentation we'll share the challenges we're facing at Usabilla and how we're using DDD and Kafka to understand and decompose our software into services without having downtime or any impact on our users' experience.

Luís Cobucci

May 26, 2018
Tweet

More Decks by Luís Cobucci

Other Decks in Technology

Transcript

  1. Luís Cobucci

    @lcobucci
    confidence
    Decomposing a live app with
    https://goo.gl/Nv1sV8

    View Slide

  2. Photo by Rafael Dohms
    Bassano del Grappa !

    View Slide

  3. Photo by Rafael Dohms
    Bassano del Grappa !

    View Slide

  4. Live software!
    Photo by Rafael Dohms
    Software
    engineers

    View Slide

  5. Luís Cobucci

    @lcobucci
    https://jobs.usabilla.com

    View Slide

  6. Here we go…
    https://goo.gl/JF1cPb

    View Slide

  7. Oh the chaos!
    https://goo.gl/D4DvKC

    View Slide

  8. No tests
    https://goo.gl/tnbTEC

    View Slide

  9. https://goo.gl/hr22Dx
    Outdated stack

    View Slide

  10. https://goo.gl/qh3NNs
    Complexity

    View Slide

  11. Very slow
    https://goo.gl/dRfUyZ

    View Slide

  12. https://goo.gl/cuLYT9
    Random bugs

    View Slide

  13. Look, light!
    https://goo.gl/9w9EBV

    View Slide

  14. Great people
    https://goo.gl/JYsTJW

    View Slide

  15. Work in progress
    https://goo.gl/CS6azo

    View Slide

  16. Refactor all things!
    https://goo.gl/ebJsEL

    View Slide

  17. Wait, what?
    https://goo.gl/nTX7xr

    View Slide

  18. Sometime ago…
    https://goo.gl/Zr2mJy

    View Slide

  19. https://goo.gl/WdiLjf
    Big ball of mud

    View Slide

  20. Unify everything
    https://goo.gl/TGmbsc

    View Slide

  21. No major rewrite
    https://goo.gl/SfHtmY
    PLEASE

    View Slide

  22. Strangler application
    https://goo.gl/9ctdLn

    View Slide

  23. The big and scary
    application

    View Slide

  24. The big and scary
    application
    Dummy proxy

    View Slide

  25. The big and scary
    application
    Dummy proxy
    Nice and
    shiny!

    View Slide

  26. The big and scary
    application
    Proxy
    Nice and
    shiny!
    Nice and
    shiny!
    Nice and
    shiny!

    View Slide

  27. The big and scary
    application
    Proxy
    Nice and
    shiny!
    Nice and
    shiny!
    Nice and
    shiny!

    View Slide

  28. Proxy
    Nice and
    shiny!
    Nice and
    shiny!
    Nice and
    shiny!
    WOW
    Much
    strangle
    So shiny

    View Slide

  29. Uuurgh

    View Slide

  30. Decomposing things
    https://goo.gl/YCrvVL

    View Slide

  31. “If you are afraid that producing
    software with thoughtful design is
    expensive, think how much more
    expensive it’s going to be to live
    with it or even fix a bad design.”
    Vaughn Vernon

    View Slide

  32. Hurry up!
    https://goo.gl/Psv1jN

    View Slide

  33. https://goo.gl/62BNwH
    Domain knowledge

    View Slide

  34. Call the experts
    https://goo.gl/4qKJTp

    View Slide

  35. Event storming

    View Slide

  36. Context mapping

    View Slide

  37. Gherkin stories
    https://goo.gl/EJi8Xo

    View Slide

  38. https://goo.gl/KFjUHT
    Metrics

    View Slide

  39. https://goo.gl/TVBGXQ
    services
    Micro

    View Slide

  40. https://goo.gl/Nr98Mo
    Evolvability

    View Slide

  41. https://goo.gl/SwL7bh
    Ship it!

    View Slide

  42. https://goo.gl/EtNKra
    Simplicity

    View Slide

  43. https://goo.gl/Sx7TYA
    Strictness

    View Slide

  44. https://goo.gl/Sx7TYA
    Growth & scale

    View Slide

  45. Minions of users!
    https://goo.gl/7MAkHZ

    View Slide

  46. Partitioned
    Low latency delivery
    Fast
    Fault tolerant
    Scalable

    View Slide

  47. Group 1
    Brokers
    Producer 1
    Producer 2
    Topic
    Partition 1
    Partition 2
    Consumer 1
    Consumer 2
    Streamer A

    View Slide

  48. https://goo.gl/45PJ2o
    Feedback collection

    View Slide

  49. Feedback
    Collection

    View Slide

  50. View Slide

  51. View Slide


  52. The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View Slide

  53. … Feedback
    Collection
    The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View Slide

  54. … Feedback
    Collection
    The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View Slide

  55. View Slide

  56. Feedback
    Collection Feedback
    Consolidation
    Feedback
    Processing
    Topic A
    Topic B
    Topic C

    View Slide

  57. Lessons
    https://goo.gl/uDPLPA

    View Slide

  58. Constraints
    https://goo.gl/Nxo8nb

    View Slide

  59. Domain exploration
    https://goo.gl/jyxuVs

    View Slide

  60. Communication
    https://goo.gl/fnG848

    View Slide

  61. Discipline
    https://goo.gl/fnG848

    View Slide

  62. Luís Cobucci

    @lcobucci
    confidence
    Decomposing a live app with
    https://goo.gl/Nv1sV8

    View Slide

  63. Thanks!
    @lcobucci

    View Slide