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.

62e128858ac2533534b93d96575b4a87?s=128

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

  2. Photo by Rafael Dohms Bassano del Grappa !

  3. Photo by Rafael Dohms Bassano del Grappa !

  4. Live software! Photo by Rafael Dohms Software engineers

  5. Luís Cobucci
 @lcobucci https://jobs.usabilla.com

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

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

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

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

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

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

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

  13. https://goo.gl/HyzXpQ It’s all fine…

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

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

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

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

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

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

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

  21. Photo by Rafael Dohms Remember?

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

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

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

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

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

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

  28. The big and scary application

  29. The big and scary application Dummy proxy

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

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

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

    and shiny! Nice and shiny!
  33. Proxy Nice and shiny! Nice and shiny! Nice and shiny!

    WOW Much strangle So shiny
  34. Photo by Rafael Dohms Ohh yeah!

  35. Argh!

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

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

  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
  39. https://goo.gl/62BNwH Domain knowledge

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

  41. Event storming

  42. Context mapping

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

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

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

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

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

  48. Service A Service B Service C

  49. Service A Service B Service C Service A’

  50. Service A Service B Service C Service A’

  51. Service A Service B Service C Service A’

  52. Service B Service C Service A’

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

  54. https://github.com/chimeraphp

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

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

  57. Service A Service B Service F Service E Service G

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

    Service C Service D
  59. Partitioned Low latency delivery Fast Fault tolerant Scalable

  60. Group 1 Brokers Producer 1 Producer 2 Topic Partition 1

    Partition 2 Consumer 1 Consumer 2 Streamer A
  61. https://goo.gl/28tBqA Dem o
 tim e!

  62. +

  63. Uhm… NO!

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

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

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

  67. Feedback Collection

  68. None
  69. None
  70. … The big and scary
 application - Channel 5 The

    big and scary
 application - Channel 0
  71. … Feedback Collection The big and scary
 application - Channel

    5 The big and scary
 application - Channel 0
  72. … Feedback Collection The big and scary
 application - Channel

    5 The big and scary
 application - Channel 0
  73. None
  74. Feedback Collection Feedback Consolidation Feedback Processing Topic A Topic B

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

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

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

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

  79. “Organisations which design systems (…) are constrained to produce designs

    which are copies of the communication structures of these organisations” Melvin Conway
  80. Communication https://goo.gl/fnG848

  81. https://goo.gl/R6PFZa

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

  83. Luís Cobucci
 @lcobucci confidence Decomposing a live app with https://goo.gl/Nv1sV8

  84. Thanks! @lcobucci