"In the 1620's Sweden and Poland were at war. Wanting a quick end to
this costly war, the King of Sweden commissioned the building of a ship
called the "Vasa".
Now, this was no ordinary ship. The
requirements for this ship were unlike any other ship of that time; it
was to be over 200 feet long, carry 64 guns on two gun decks, and have
the ability to transport 300 troops safely across the waters into
Poland. The ship architect had never designed such a ship before.
Smaller, single gun deck ships were his area of expertise. Nevertheless,
the ship's architect extrapolated on his prior experience and set out
designing and building the Vasa. The ship was eventually built to
specifications, and when the eventful day came for the launch, the ship
proudly sailed into the harbor, fired its gun salute, and promptly sank
to the bottom of the ocean. The problem with the Vasa was obvious;
anyone who has ever seen the deck of a large fighting ship from the
1600's and 1700's knows that the decks on those ships were crowded and
unsafe, particularly in battle. Building a ship that was both a fighting
ship and a transport ship was a costly mistake. The ship's architect,
in an attempt to fulfill all of the kings wishes, created an unbalanced
and unstable ship"
Software architects can learn a lot
from this story and apply the learnings from this unfortunate event to the design of
software architecture. Trying to fulfill each and every requirement (as
with the Vasa) creates an unstable architecture that essentially
accomplishes nothing well.
Lesson to remember:
Every software architect should know and understand that you can't have it all. It is virtually impossible to design an architecture that has high performance, high availability, a high level of security, and a high degree of abstraction all at the same time
#ArchitecturalTradeoffs ( Mark Richards )
#97 Things Every Software Architect Should Know ( book )
No comments:
Post a Comment