This post focuses on solution architectures.
For a mind map version, click here
Inspiration came from the following excellent sessions:
- Amazon Technology Platform - Werner Vogels (CTO)
- Putting qualities into architecture - Kevlin Henney
- Modifiability - Martin Fowler
- Operational Manageability - Dan Prichett, ebay Technical Fellow
- Agile Architecture is not Fragile Architecture - Kevlin Henney and James Coplien
Replacing Amazon's architecture
- Monolithic application to SOA
- Took 6 years
- Cost $2 billion
- Only 30% of cost delivered visible business value
- 70% was on the "heavy-lifting"
Architecture relates to
- how it runs
- how it fails
- how its developed
- how it changes during
- development time
Architecture is interwoven with the development process
- Design for
- operational configuration
- operational monitoring
- failure (no SPOF's)
- Maintain clear dependencies
Design up-front the parts that are costly to change
- Reduce the significance of remaining decisions
- Defer decisions to the last responsible moment
- Metric is cost of reversing decision
- Its like putting stones in a bucket.
How much up front design (UFD)?
- BUFD - Big
- RUFD - Rough
- NUFD - None
- Time spent should be inversely proportional to
- Knowledge of domain
- Experience in design
- "A stable architecure is not the same as a frozen architecture"
- "Doing the simplest thing that works is not same as doing the easiest thing"