Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture (Addison-Wesley Signature Series (Vernon))
amazon.com
Strategic Monoliths and Microservices: Driving Innovation Using Purposeful Architecture (Addison-Wesley Signature Series (Vernon))

A business capability answers the “What?” question regarding the means by which the company will generate revenues. A substantive question with regard to a business capability is “How?” Impact Mapping, discussed in Chapter 2 in the section “Strategic Delivery on Purpose,” explains driving software deliverables starting with the question “Why?” By
... See moreThe greatest innovations have come from relentless experimentation coupled with continuous improvement.
Assertion: Those who want to build good software that innovates must get this communication–learning–innovation pathway right before trying anything else.
Why do large systems disintegrate? The process seems to occur in three steps, the first two of which are controllable and the third of which is a direct result of our homomorphism. First, the realization by the initial designers that the system will be large, together with certain pressures in their organization, make irresistible the temptation to
... See moreThe quickest way to deliver the best outcomes for users is by driving in the straightest possible lines of incremental improvement. Select from the best service-level architecture and deployment options based on full knowledge of need and purpose.
When the team has decided on modules first, and when deployment options start out as simple as possible, that approach puts them on solid ground to make decisions based on empirical information at the most responsible time.
Imitation is not a strategy. Differentiation is.
Even so, problems will occur when trying to apply Bounded Contexts with distributed computing before the teams have a good reason to, or when trying to understand the strategic goals and solve business problems using single-process modularity first. Such a bias will likely lead to over-engineered technical approaches, putting too much emphasis on
... See moreIn the end, making some decisions early on is irresponsible. For example, settling upfront on architecture, such as using Microservices, or trying to create generalized solutions and modeling abstractions, is wrong. These decisions should be postponed until we prove that those choices are justified and necessary.