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

No Future-Proof Architecture

No Future-Proof Architecture

Architecture: This is supposed to be the stable element! And choosing the right architecture ensures that the software can be developed and maintained in the future! What initially appears to make sense often in reality turns out to be the first step toward an architectural failure. Unfortunately, when requirements, insights, or technologies change, the architecture must change as well. How can it then be future-proof? This presentation shows how the paradox can be resolved, and maybe not future-proof architecture - but long-term project success.

Eberhard Wolff

October 11, 2022
Tweet

More Decks by Eberhard Wolff

Other Decks in Technology

Transcript

  1. There is no such thing as future-proof architecture! Here is

    how to prepare for it. Eberhard Wolff Head of Architecture https://swaglab.rocks/
  2. Consequences •Architecture important •Architecture hard to change •Ideally: No need

    to change!! •Make architecture “future-proof” •Note: Fowler did not suggest that.
  3. A True Story •Plan at start: Migrate the system module-by-module

    •Prototype to validate migration. •Prototype quite expensive.
  4. A True Story: The Start •Project start •Learn more about

    the domain •Migration by module makes it impossible …to improve support for business.
  5. Intuitive Lesson Learned •Do more research up front! •Be more

    restrict in approving projects! •Require a future-proof architecture! •IMHO this is wrong.
  6. Why You Must Work in Iterations These [domain] models are

    never perfect; they evolve. Eric Evans
  7. Why You Must Work in Iterations Actually, we all learn

    how to architect! My approach to architecture changes. That is why we do talk, go to conferences…
  8. The Real Lesson Learned •You will always learn about the

    domain! •Requirements change. •We learn how to architect. •I.e. there will always be something to improve. •Always - not just at the start.
  9. Recommended Lesson Learned •Hypothesis: Not changing the architecture when we

    need to is our core problem. •Be prepared to change the architecture. •Be careful with proofing the architecture! •But: don’t be intentionally stupid!
  10. Domain Prototyping •No technology at the start •Easy to iterate

    •Introduce server / database only if needed.
  11. Domain Prototyping •Nothing to work with except for domain logic.

    •Introduce technologies when you really need them …based on more information
  12. Last Responsible Moment •Domain prototyping is quite radical. •Needs courage.

    •What is the last responsible moment for each decision? •How much do you have to decide at the beginning?
  13. Last Responsible Moment •What is the last responsible moment for

    the migration strategy in the example? •How risk-adverse are you?
  14. YAGNI •You Ain‘t Gonna Need It! •I.e. do not add

    functionality until deemed necessary. •XP (eXtreme Programming) principle
  15. Why YAGNI Was Needed •Anti BDUF brain washing •Big Design

    Upfront •There is no way to predict what is really needed! •So a sophisticated BDUF is a bad idea
  16. Why YAGNI Might Be Bad •It makes no sense to

    ignore information. •So: Really ignore a potential requirement? •Is YAGNI too radical?
  17. Architecture IMHO What is the next step? How can we

    implement the current requirements and approach the goal e.g. a better modularization? How do we overcome the next obstacles? Current requirements Don’t ignore Focus Goal: Peak Project Goal Successful migration to a great, all modularized system.
  18. Change “Future-proof Architecture” Should be possible to put this in

    the future- proof architecture. Let’s see… Here is a change…
  19. End

  20. Prototype •Would a prototype make you stick to the architecture?

    •You might be too (emotionally) invested. •Admitting that you wasted money: hard.
  21. Result •Architecture based on historic mistakes. •Architecture supports current needs

    well. •I.e. architecture makes business sense •Architecture probably not aesthetical.
  22. Is This a Great Structure? Data Fetching Service Business Logic

    Data Service Write Workflow Service UI Aggregation Service API Gateway
  23. Future-proof Structure •Hypothesis: We cannot predict changes •Hypothesis: Some changes

    require fundamental adjustments to the structure •How can systems be future proof then???
  24. Domain-driven Design (DDD) •Let the domain drive the design! •I.e.

    built software specific for the domain! •Not generic •Hypothesis: will support changes in the domain best •No unneeded flexibility
  25. Is This a Great Structure? Data Fetching Service Business Logic

    Data Service Write Workflow Service UI Aggregation Service API Gateway
  26. What DDD Means •Can you tell which domain the architecture

    is for? •Can you use the architecture for a self-driving car or a video game? •My experience: Technical architecture much too common
  27. Technology: Means to an End •What is the business value

    of modern technologies? •Easy to change / maintain? •Might impact qualities. •E.g. no security updates anymore?
  28. Future-proof Technologies •Software development has a constant stream of new

    technologies •Old technologies might have known security issues •So: Prepare for technology changes! •I.e. technology-independent code
  29. Prepare for Technology Changes? •How often do you change the

    technology? •New technologies also influence logic e.g. mobile
  30. Prepare for Technology Changes? •Most consulting gigs: change technology and

    logic •Logic badly structure and hard to maintain •Do you want to keep the code? And use a new technology?
  31. Conclusion •We cannot build “future-proof” architectures. •Future-proof is about adjusting

    to change. •Aiming at “future-proof” might lead to avoiding needed adjustments. •Avoiding needed adjustments leads to a mess.
  32. Send email to [email protected] Slides + Sample Microservices Book DE

    / EN + Sample Practical Microservices DE/EN + Sample of Continuous Delivery Book DE Powered by Amazon Lambda & Microservices EMail address logged for 14 days, wrong addressed emails handled manually