Part 3.0 – A Fr-Agile Architecture

Picture showing how the situation on top can look solid, but underneath it is not well underpinned
This entry is part 1 of 3 in the series Part 3 – A Fr-Agile Architecture

You want an architecture to be able to respond quickly to changes in requirements or technology. Often the latest cloud services promise simpler architecture patterns, or the latest tech promises faster solution delivery. What those promises don’t cover off is that you need to plan to offset the benefits because they are generally not 100% reliable.

Modern jets (like the Euro Fighter) are a good example of what to aim for architecturally. The planes are significantly more manoeuvrable in the air than older designs. They do this by moving the stability from hardware to software, allowing changes to be made (literally) on the fly. This does carry extra risk, a software failure can crash the plane. They mitigated that with multiple redundancies, exhaustive testing and underpinning the aircraft with  modern, light weight, and well understood materials – making it strong and reliable.

To keep your product in that sweet spot, you need to guard against:

  • Fragility – to many quick fix patches can mount up and then a small change can trigger significant automated testing failures or unreliability in production
  • Stagnant – complexity and coupling meaning that every change takes forever. As as an illustration, think of the impact of building with concrete. It is dense and hard to move, and concrete gets stronger as it ages, making it even harder to change the foundations in the future
Part 3.1 – Riding on the wave of other people’s problems