Successfully reported this slideshow.
Your SlideShare is downloading. ×

Evolutionary Architecture at Work

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 66 Ad
Advertisement

More Related Content

Similar to Evolutionary Architecture at Work (20)

Advertisement

More from Phil Calçado (20)

Advertisement

Evolutionary Architecture at Work

  1. 1. Monday, April 22, 13
  2. 2. Evolutionary Architecture at Work phil calçado @pcalcado http://philcalcado.com Monday, April 22, 13
  3. 3. 2011: Phil decides to move to Berlin Monday, April 22, 13
  4. 4. Monday, April 22, 13
  5. 5. Monday, April 22, 13
  6. 6. Monday, April 22, 13
  7. 7. ~ 180 million users / month > 10 hours of audio uploaded every minute Monday, April 22, 13
  8. 8. Organisation challenges Monday, April 22, 13
  9. 9. SoundCloud was born on Rails It allowed us to iterate real fast and keep code quality up(-ish). Monday, April 22, 13
  10. 10. Controller ActiveRecord Model Database Rails is simple. Monday, April 22, 13
  11. 11. Controller ActiveRecord Model Database Rails is simple. But it leads you to monoliths SoundCloud .com Monday, April 22, 13
  12. 12. Conway’s Law kicks in Monolithic applications lead to monolithic teams Controller ActiveRecord Model Database SoundCloud .com ? Monday, April 22, 13
  13. 13. Big teams == overhead Who is doing what? Monday, April 22, 13
  14. 14. Big teams == overhead Stand-ups become the main communication channel Monday, April 22, 13
  15. 15. Big teams == overhead Massive backlog requires constant grooming and management Monday, April 22, 13
  16. 16. Big teams == overhead In the end you’ll need a full time “Iteration Manager” Monday, April 22, 13
  17. 17. technical challenges Monday, April 22, 13
  18. 18. There is one system SoundCloud .com Monday, April 22, 13
  19. 19. There is one system not really. Sounds & Sets Social Graph Premium Features Search Activity Stream ... Monday, April 22, 13
  20. 20. Multiple subsystems Ruby/Rails are a horrible Golden Hammers Monday, April 22, 13
  21. 21. Multiple subsystems The stability of the system is pretty much the same as the less stable subsystem’s Monday, April 22, 13
  22. 22. We need to split Monday, April 22, 13
  23. 23. Controller ActiveRecord Model Database SoundCloud .com ? Monday, April 22, 13
  24. 24. Sounds & Sets Social Graph? Premium Features Monday, April 22, 13
  25. 25. How? Have an enterprise Architect? Monday, April 22, 13
  26. 26. How? Create an architecture Steering Group? Monday, April 22, 13
  27. 27. What about Everyone is an architect? Monday, April 22, 13
  28. 28. Enabling the teams Monday, April 22, 13
  29. 29. Step 1) Stabilise the legacy app Monday, April 22, 13
  30. 30. Idiomatic Rails is funny Monday, April 22, 13
  31. 31. Understanding the Rails mindset: http://bit.ly/not-a-virtue Monday, April 22, 13
  32. 32. Understanding the Rails mindset: i do not think it means what you think it means http://bit.ly/not-a-virtue Monday, April 22, 13
  33. 33. Stopgap Solution Monday, April 22, 13
  34. 34. Stopgap Solution Monday, April 22, 13
  35. 35. Stopgap Solution (A lot like java circa 2005) Monday, April 22, 13
  36. 36. Step 2) Create a common protocol Monday, April 22, 13
  37. 37. Sounds & Sets Social Graph Premium Features Search Activity Stream ... Monday, April 22, 13
  38. 38. Sounds & Sets Social Graph Premium Features Search Activity Stream ... Ruby Clojure Go Haskell Scala Ruby Monday, April 22, 13
  39. 39. We want to try things before making a call Monday, April 22, 13
  40. 40. Don’t publish rules, publish guidelines Monday, April 22, 13
  41. 41. Step 3) Minimise non-technical overhead Monday, April 22, 13
  42. 42. Social Graph? Monday, April 22, 13
  43. 43. Step 4) Minimise technical overhead Monday, April 22, 13
  44. 44. Pushing a micro-service to production should be easy Monday, April 22, 13
  45. 45. Monday, April 22, 13
  46. 46. Monday, April 22, 13
  47. 47. Monday, April 22, 13
  48. 48. Monday, April 22, 13
  49. 49. People solving the same problems over and over Monday, April 22, 13
  50. 50. Monday, April 22, 13
  51. 51. (with the same code...) Monday, April 22, 13
  52. 52. Monday, April 22, 13
  53. 53. Monday, April 22, 13
  54. 54. Current status Monday, April 22, 13
  55. 55. About 6 application teams, 3 engineers + 1 product person Monday, April 22, 13
  56. 56. Micro-services in Clojure, Scala and (J)Ruby Monday, April 22, 13
  57. 57. Pull Request lead time reduced from 3 to 1 week Monday, April 22, 13
  58. 58. Still afraid of deleting old code Monday, April 22, 13
  59. 59. We have “black hole” teams Monday, April 22, 13
  60. 60. There is a lot of infrastructure to build Monday, April 22, 13
  61. 61. In 4 slides Monday, April 22, 13
  62. 62. Step 1) Stabilise the legacy app Don’t stop the world, but don’t let the code base deteriorate even more Monday, April 22, 13
  63. 63. Step 2) Create a common protocol Guidelines and examples, not rules Monday, April 22, 13
  64. 64. Minimise non-technical overhead Small teams don’t need... a lot Monday, April 22, 13
  65. 65. Step 4) Minimise technical overhead Only try to re-use after you use Monday, April 22, 13
  66. 66. phil calçado http://philcalcado.com @pcalcado www.soundcloud.com Monday, April 22, 13

×