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 full-size slide

  2. Photo by Rafael Dohms
    Bassano del Grappa !

    View full-size slide

  3. Photo by Rafael Dohms
    Bassano del Grappa !

    View full-size slide

  4. Live software!
    Photo by Rafael Dohms
    Software
    engineers

    View full-size slide

  5. Luís Cobucci

    @lcobucci
    https://jobs.usabilla.com

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  23. The big and scary
    application

    View full-size slide

  24. The big and scary
    application
    Dummy proxy

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  30. “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 full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  34. Event storming

    View full-size slide

  35. Context mapping

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  45. Partitioned
    Low latency delivery
    Fast
    Fault tolerant
    Scalable

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  48. Feedback
    Collection

    View full-size slide


  49. The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View full-size slide

  50. … Feedback
    Collection
    The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View full-size slide

  51. … Feedback
    Collection
    The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

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

    View full-size slide

  58. Luís Cobucci

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

    View full-size slide

  59. Thanks!
    @lcobucci

    View full-size slide