Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Make architecture great again

275 views

Published on

Talk from Agile Tour London 2017.

Architecture is a dirty word in some circles within the Agile community. However, it was never the intention of the original signatories.

In this talk I try to show why getting the architecture right is so important and how we can make that happen.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Make architecture great again

  1. 1. #MAGA – MAKE ARCHITECTURE GREAT AGAIN Reda Hmeid
  2. 2. A little about me • Reda Hmeid – Ree-da H—meed • Architect • Twitter: @softwareda • LinkedIn: redahmeid • Blog: https://medium.com/openlight
  3. 3. THE YEAR WAS 2000 I was on my first software project
  4. 4. The architecture was….interesting Built upon servlets that served dynamically generated Javascript and HTML, calling an EJB 1.0 backend system, off a single codebase
  5. 5. The code versioning strategy was….interesting We used to code directly on the Unix box.
  6. 6. My day consisted of vi FrontEndControllerServlet.java
  7. 7. My day consisted of Edit edit edit
  8. 8. My day consisted of :wq
  9. 9. My day consisted of vi AnotherControllerServlet.java
  10. 10. My day consisted of Edit edit edit
  11. 11. My day consisted of :wq
  12. 12. My day consisted of javac */*/*.java
  13. 13. My day consisted of restart.sh
  14. 14. But then…. I discovered the Unix command – Escape K
  15. 15. My day now consisted of vi FrontEndControllerServlet.java
  16. 16. My day now consisted of Edit edit edit
  17. 17. My day now consisted of :wq
  18. 18. My day now consisted of vi AnotherControllerServlet.java
  19. 19. My day now consisted of Edit edit edit
  20. 20. My day now consisted of :wq
  21. 21. My day now consisted of Escape-K; Enter
  22. 22. As you can see It saved me so much time
  23. 23. One day I used Escape-K as normal Except someone had logged onto the unix box with the same logon
  24. 24. And so the most recent command was rm –r */*/*
  25. 25. HOW DID THIS MESS HAPPEN? Or…whose fault is it that I fell into the pits of hell?
  26. 26. Businesses have always wanted to deliver business features and benefit quickly Some things are still the same
  27. 27. What tools and processes were used • TeamConnect - VCS • Scripted builds (we didn’t even use Ant yet) • Waterfall
  28. 28. They were no…. • Agile • CI/CD • Cloud • Git • TDD • Docker
  29. 29. The problem was this… Built upon servlets that served dynamically generated Javascript and HTML, calling an EJB 1.0 backend system, off a single codebase
  30. 30. A flawed architecture • Wrong technology choice (Javascript) • No separation between the view or the controller • Untestable code in isolation • Leading to bad code • Leading to slow deployments • Making it difficult to debug
  31. 31. Your architecture is the foundation upon which the rest of your software is built. A good architecture is not just optional
  32. 32. HOW TO MAKE AN ARCHITECTURE GREAT Principles and guidelines
  33. 33. A product of circumstance A great architecture is shaped by its environment and ecosystem.
  34. 34. A product of circumstance A great architecture is shaped by the tools, processes, people and technology available. These are both limitations and opportunities
  35. 35. We have these available to us • Agile • CI/CD • Cloud • Git • TDD • Docker • Plus many more…
  36. 36. This is tiki taka….and it is sh*t We encourage a purist approach to architecture but not a dogmatic one
  37. 37. For example Microservices are self contained, separately deployable, separately running application code doing just one thing.
  38. 38. Change the emphasis Every era requires a different emphasis upon its architecture.
  39. 39. Change the emphasis The emphasis used to be on reuse in our architecture. This was in response to slow release cycles and difficulty in testing
  40. 40. Change the emphasis Today, we have the ability to deploy within minutes. But to achieve those quick deployments, our emphasis has to be on loose coupling components
  41. 41. Loose Coupling No Frameworks…avoid libraries….better APIs…physical segregation
  42. 42. Final Thoughts • “Continuous attention to technical excellence and good design enhances agility.” • The architecture of your software is its foundation • A great architecture is the first step towards technical excellence • A great architecture may have prevented my hell in 2000

×