Software Architectural Pattern

A way of organizing code and abstracting concepts to build a software system often with the goals of robustness, reliability, extensibility, performance, and correctness.

See also:

  • Code Architecture Docs Decrease the Time Spent Searching for Where to Make a Change

    A software architecture doc (e.g. ARCHITECTURE.md) is a way of stating the overall structure of the code. This makes it easier for new people to ramp up on the code base and trims down the time it takes to find where to make a code change.

  • Use a Monolith-First Architecture Because You Don’t yet Know the Boundaries

    It’s difficult to start with microservices because that requires knowing more about the domain and boundaries within the domain that one could know up front. Due to lack of understanding, a microservices-first architecture often fails and it’s easier to start with a monolith and slowly peel away services.

  • Conceptual Integrity

    As mentioned in The Mythical Man Month, good system design (user friendly) requires a small (ideally singular) team of architects, separated from implementation, that decide what goes into the system and what stays out. This avoids rogue ideas making it in that muddy the overall product.

  • ECS

    An entity component system (ECS) model is a software architectural pattern way of organizing a program that is oriented around and is easily extensible often used in games.

  • Event Sourcing

    A method for representing state of a system using immutable events over time that can be aggregated to derive state at a particular moment. This software architectural pattern has the advantage of replay-ability (events can be re-processed as needed), time travel debugging (view of state at a specific moment in time), and decoupling systems (event emitters separate from consumers and aggregations).