Evolutionary Architecture at Work

  • 2,056 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
2,056
On Slideshare
0
From Embeds
0
Number of Embeds
4

Actions

Shares
Downloads
28
Comments
2
Likes
12

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Monday, April 22, 13
  • 2. EvolutionaryArchitecture at Workphil calçado@pcalcadohttp://philcalcado.comMonday, April 22, 13
  • 3. 2011: Phil decidesto move to BerlinMonday, April 22, 13
  • 4. Monday, April 22, 13
  • 5. Monday, April 22, 13
  • 6. Monday, April 22, 13
  • 7. ~ 180 million users / month> 10 hours of audiouploaded every minuteMonday, April 22, 13
  • 8. Organisation challengesMonday, April 22, 13
  • 9. SoundCloud wasborn on RailsIt allowed us to iterate realfast and keepcode quality up(-ish).Monday, April 22, 13
  • 10. ControllerActiveRecordModelDatabaseRails is simple.Monday, April 22, 13
  • 11. ControllerActiveRecordModelDatabaseRails is simple.But it leads you tomonolithsSoundCloud.comMonday, April 22, 13
  • 12. Conway’s Law kicks inMonolithic applicationslead to monolithic teamsControllerActiveRecordModelDatabaseSoundCloud.com?Monday, April 22, 13
  • 13. Big teams == overheadWho is doing what?Monday, April 22, 13
  • 14. Big teams == overheadStand-ups become themain communicationchannelMonday, April 22, 13
  • 15. Big teams == overheadMassive backlog requiresconstant grooming andmanagementMonday, April 22, 13
  • 16. Big teams == overheadIn the end you’ll need a fulltime “Iteration Manager”Monday, April 22, 13
  • 17. technical challengesMonday, April 22, 13
  • 18. There is one systemSoundCloud.comMonday, April 22, 13
  • 19. There is one systemnot really.Sounds& SetsSocialGraphPremiumFeatures SearchActivityStream...Monday, April 22, 13
  • 20. Multiple subsystemsRuby/Rails are a horribleGolden HammersMonday, April 22, 13
  • 21. Multiple subsystemsThe stability of the systemis pretty much the sameas the less stablesubsystem’sMonday, April 22, 13
  • 22. We need to splitMonday, April 22, 13
  • 23. ControllerActiveRecordModelDatabaseSoundCloud.com?Monday, April 22, 13
  • 24. Sounds& Sets SocialGraph?PremiumFeaturesMonday, April 22, 13
  • 25. How?Have an enterpriseArchitect?Monday, April 22, 13
  • 26. How?Create an architectureSteering Group?Monday, April 22, 13
  • 27. What aboutEveryone is an architect?Monday, April 22, 13
  • 28. Enabling the teamsMonday, April 22, 13
  • 29. Step 1)Stabilise the legacy appMonday, April 22, 13
  • 30. Idiomatic Rails is funnyMonday, April 22, 13
  • 31. Understanding theRails mindset:http://bit.ly/not-a-virtueMonday, April 22, 13
  • 32. Understanding theRails mindset:i do not think it meanswhat you think itmeanshttp://bit.ly/not-a-virtueMonday, April 22, 13
  • 33. Stopgap SolutionMonday, April 22, 13
  • 34. Stopgap SolutionMonday, April 22, 13
  • 35. Stopgap Solution(A lot like java circa 2005)Monday, April 22, 13
  • 36. Step 2)Create a common protocolMonday, April 22, 13
  • 37. Sounds& SetsSocialGraphPremiumFeatures SearchActivityStream...Monday, April 22, 13
  • 38. Sounds& SetsSocialGraphPremiumFeatures SearchActivityStream...Ruby ClojureGo HaskellScalaRubyMonday, April 22, 13
  • 39. We want to try thingsbefore making a callMonday, April 22, 13
  • 40. Don’t publish rules,publish guidelinesMonday, April 22, 13
  • 41. Step 3)Minimise non-technicaloverheadMonday, April 22, 13
  • 42. SocialGraph?Monday, April 22, 13
  • 43. Step 4)Minimise technicaloverheadMonday, April 22, 13
  • 44. Pushing a micro-service toproduction should be easyMonday, April 22, 13
  • 45. Monday, April 22, 13
  • 46. Monday, April 22, 13
  • 47. Monday, April 22, 13
  • 48. Monday, April 22, 13
  • 49. People solving the sameproblems over and overMonday, April 22, 13
  • 50. Monday, April 22, 13
  • 51. (with the same code...)Monday, April 22, 13
  • 52. Monday, April 22, 13
  • 53. Monday, April 22, 13
  • 54. Current statusMonday, April 22, 13
  • 55. About 6 application teams,3 engineers + 1 productpersonMonday, April 22, 13
  • 56. Micro-services in Clojure,Scala and (J)RubyMonday, April 22, 13
  • 57. Pull Request lead timereduced from 3 to 1 weekMonday, April 22, 13
  • 58. Still afraid of deletingold codeMonday, April 22, 13
  • 59. We have “black hole”teamsMonday, April 22, 13
  • 60. There is a lot ofinfrastructure to buildMonday, April 22, 13
  • 61. In 4 slidesMonday, April 22, 13
  • 62. Step 1)Stabilise the legacy appDon’t stop the world, butdon’t let the code basedeteriorate even moreMonday, April 22, 13
  • 63. Step 2)Create a common protocolGuidelines and examples,not rulesMonday, April 22, 13
  • 64. Minimise non-technicaloverheadSmall teamsdon’t need... a lotMonday, April 22, 13
  • 65. Step 4)Minimise technicaloverheadOnly try tore-use after you useMonday, April 22, 13
  • 66. phil calçadohttp://philcalcado.com@pcalcadowww.soundcloud.comMonday, April 22, 13