read a book
Yay, this time didn’t take forever to finish a book 🎉 (being under 200 pages probably helped 😅).

Some interesting ideas on designing architectures that support evolution.

Three factors are pointed as key for evolutionary architectures:
- The ability to do incremental change
- Guided change with architectural fitness functions
- Appropriate coupling between components


All are relevant, but I’d highlight fitness functions, as I think they are under-used and under-discussed. 

We talk a lot about unit tests, integrations tests and so on, which can also be considered fitness functions, but not a lot about architectural fitness functions. Using architectural fitness functions we can establish a process, as fully automated as possible, to ensure that, as the system evolves, it fulfills the architecture requirements defined.

Fitness functions can be used to ensure architectural requirements like:
- Performance - e.g. we have a system that has a maximum response time requirement imposed, so we can create a fitness function to ensure it
- Coupling - e.g. we have a particular project structure for our code, and we want to enforce it (in .NET land, something like NDepend could help with this)
- Resiliency - e.g. we want to ensure our system is highly resilient to individual component failures (Netflix’s simian army would be an example of a fitness function for this scenario)
- ...


If you’re interested in the topic, definitely recommend this book. Don’t think it’s groundbreaking or anything, but it’s a nice summary of interesting ideas. Also appreciated its size, as most technical books I’ve read are much bigger, this was a much easier read.