Software Architecture - The Hard Parts#

There is no single development, in either technology or management technique, which by itself promises even one order of magnitude [tenfold] improvement within a decade in productivity, in reliability, in simplicity. Fred Brooks from “No Silver Bullet

“Don’t try to find the best design in software architecture; instead, strive for the least worst combination of trade-offs.”

Excerpt From: Neal Ford. “Software Architecture: The Hard Parts”. Apple Books.

For many in architecture, data is everything. Every enterprise building any system must deal with data, as it tends to live much longer than systems or architecture, requiring diligent thought and design

Microservices - domain-driven design - limiting scope to a single function, single model

  • Operational data - used frequently for transactions
  • Analytical data - used for analysis, strategy and predictions

ADR’s - architectural design records - describe an architectural decision

  • ADR: A short noun phrase containing the architecture decision
  • Context: In this section of the ADR we will add a short one- or two-sentence description of the problem, and list the alternative solutions.
  • Decision: In this section we will state the architecture decision and provide a detailed justification of the decision.
  • Consequences: In this section of the ADR we will describe any consequences after the decision is applied, and also discuss the trade-offs that were considered.

Architectural governance - ensure implemented solution abides by design. Devops spawned - automating manual chores Continuous integration makes integration phase of code faster Linux, open source and virtual machines. Code reviews.