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

Decomposing a live application with confidence (v2)

Decomposing a live application with confidence (v2)

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

June 09, 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. https://goo.gl/HyzXpQ
    It’s all fine…

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. https://goo.gl/CNzhi7
    Saved searches

    View Slide

  19. https://goo.gl/QrVWpC
    +50k emails

    View Slide

  20. https://goo.gl/zoWGug
    Quality increase

    View Slide

  21. Photo by Rafael Dohms
    Remember?

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  28. The big and scary
    application

    View Slide

  29. The big and scary
    application
    Dummy proxy

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  34. Photo by Rafael Dohms
    Ohh yeah!

    View Slide

  35. Argh!

    View Slide

  36. Decomposing
    https://goo.gl/YCrvVL

    View Slide

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

    View Slide

  38. “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

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

    View Slide

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

    View Slide

  41. Event storming

    View Slide

  42. Context mapping

    View Slide

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

    View Slide

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

    View Slide

  45. SLI
    SLO
    https://goo.gl/LAa8Ex

    View Slide

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

    View Slide

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

    View Slide

  48. Service A
    Service B
    Service C

    View Slide

  49. Service A
    Service B
    Service C
    Service A’

    View Slide

  50. Service A
    Service B
    Service C
    Service A’

    View Slide

  51. Service A
    Service B
    Service C
    Service A’

    View Slide

  52. Service B
    Service C
    Service A’

    View Slide

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

    View Slide

  54. https://github.com/chimeraphp

    View Slide

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

    View Slide

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

    View Slide

  57. Service A
    Service B
    Service F
    Service E
    Service G
    Service C
    Service D
    Events Store

    View Slide

  58. Service A
    Service B
    Service F
    Service E
    Service G
    Service C
    Service D

    View Slide

  59. Partitioned
    Low latency delivery
    Fast
    Fault tolerant
    Scalable

    View Slide

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

    View Slide

  61. https://goo.gl/28tBqA
    Dem
    o

    tim
    e!

    View Slide

  62. +

    View Slide

  63. Uhm… NO!

    View Slide

  64. https://github.com/arnaud-lb/php-rdkafka

    View Slide

  65. https://github.com/weiboad/kafka-php

    View Slide

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

    View Slide

  67. Feedback
    Collection

    View Slide

  68. View Slide

  69. View Slide


  70. The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View Slide

  71. … Feedback
    Collection
    The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View Slide

  72. … Feedback
    Collection
    The big and scary

    application - Channel 5
    The big and scary

    application - Channel 0

    View Slide

  73. View Slide

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

    View Slide

  75. It’s not the end!
    https://goo.gl/Uv7KyB

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  79. “Organisations which design
    systems (…) are constrained to
    produce designs which are copies of
    the communication structures of
    these organisations”
    Melvin Conway

    View Slide

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

    View Slide

  81. https://goo.gl/R6PFZa

    View Slide

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

    View Slide

  83. Luís Cobucci

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

    View Slide

  84. Thanks!
    @lcobucci

    View Slide