Leanpub Header

Skip to main content

Topics

Software Architecture

From what an architect actually does to moduliths, microservices, hexagons, event sourcing and platforms, the discipline as told through the free samples of the Leanpub books about software architecture.

Created from the free samples of 28 Leanpub books and courses and the descriptions and tables of contents of 28 more, with every source cited.

Software architecture is the set of decisions about a software system that are expensive to change: how it is divided into parts, how those parts talk to each other and to the world outside, which technologies and patterns carry it, and which qualities, performance, security, availability, cost, it is built to have. The word names both a structure and an activity. As a noun it is the decomposition of a product into building blocks and the relationships among them; as a verb it is the work of turning functional requirements, quality attributes, constraints and principles into a technical vision and communicating that vision to everyone who builds the system.[1] Grady Booch's much-quoted distinction, that all architecture is design but only the significant decisions are architecture, with significance measured by the cost of change, is the working definition most of the field's books rest on.[1]

The field has a long argument running through it. For twenty years its vocabulary came from patterns: the object-oriented patterns of the 1990s, the enterprise application patterns, domain-driven design, hexagonal and clean architecture, and from about 2014 microservices. The argument since has been about how much of that to use, and a modular monolith with well-drawn seams has become the recommended starting point for most new systems. Around the technical core sit three larger subjects that share its name: enterprise architecture, where the architect's job is as much organisational as technical; cloud and platform strategy; and, newest, the question of what architecture means when language models write and run parts of the system.

This article covers the history of the idea, what architecture is and who does it, design principles at the code and component level, patterns and architectural styles, domain-driven design and event sourcing, distributed systems and the APIs between their parts, enterprise, cloud and platform strategy, and architecture in the presence of AI. Its sources are the free samples of the Leanpub books listed at the end: where a sample states something, the sentence cites it; the rest is general knowledge of the field.

Where to start

The sources are clearest about where to start when the reader is a developer being asked to think like an architect. Software Architecture for Developers is a short guide to the role written for exactly that reader, on what architecture is, who does it and how much of it an agile team needs;[1] Master Software Architecture follows one case study through eight steps from business analysis to deployment and assumes no language or stack;[7] and The Scaling Playbook tells the story of one company growing from a WordPress store to a million orders a day, a principle per chapter and no code.[8] 37 Things One Architect Knows About IT Transformation is the equivalent for the enterprise architect who must talk to management.[2]

Two short books open the two subjects most of the field now turns on: Understand Your Domain First works one case study through Event Storming to a context map before any design,[29] and Microservices Primer says in thirty-five pages what microservices are and how big they should be.[32] A reader who wants to see the patterns in code can take the book for their language: Get Your Hands Dirty on Clean Architecture (2nd edition) in Java, Clean Architectures in Python, and Domain-Driven Design in PHP - 2n Edition or Advanced Web Application Architecture in PHP.[22][23][4][21] For the vocabulary, Architectural Metapatterns groups about a hundred patterns into a smaller set,[3] and Elegant Design Principles catalogues ninety-five principles to one template.[13]

The theory, The Architect’s Paradox and Residues: Time, Change, and Uncertainty in Software Architecture., is for readers who already practise and want to question what they do.[9][10]

History

The term is older than the discipline. The phrase "software architecture" entered research in the early 1990s, with Perry and Wolf's 1992 paper and Shaw and Garlan's 1996 book, and definitions multiplied from there. One chief architect's book collects the best known, Garlan and Perry in 1995, the ANSI/IEEE 1471 standard of 2000, later ISO/IEC 42010, and the Open Group's variation for TOGAF, all about components, their relationships and the principles governing design and evolution, and adds a less formal favourite from D'Souza and Wills: architecture is the design decisions which keep implementers from exercising needless creativity.[2]

The patterns movement gave the field its working vocabulary, and the lineage is still felt: the author of a 2026 taxonomy recalls learning from the Gang of Four and finding its patterns to be unrelated tools, hoping the POSA series would supply the pattern language it promised and finding it did not, and writing a book to classify the hundred or so architectures in use.[3] Hexagonal architecture dates from Alistair Cockburn's 2005 article, and a PHP book on domain-driven design began as a magazine article about it in 2014.[4] REST came from Roy Fielding's 2000 dissertation, and by 2008 he was objecting that APIs without hypermedia were calling themselves RESTful.[5]

Agile methods set architecture a different problem. They did not forbid up-front design but rarely mentioned it, and teams new to them drew the wrong conclusion; a guide first published in 2012 argues for a lightweight middle between big design up front and none.[1] Microservices were defined by Lewis and Fowler in 2014,[4] event sourcing emerged around 2006,[6] and the cloud turned infrastructure into an architectural choice. The most recent history is a reaction: a 2024 guide whose author confesses to having applied clean architecture, microservices and Kubernetes everywhere,[7] a scaling story in which a three-person startup finds it has none of the four prerequisites for microservices,[8] and the modular monolith's return as the pragmatic middle.[4]

Architecture and the architect

What architecture is, and what the person called an architect does, are the questions the library's most general books answer first.

Definitions

Developers asked what architecture means answer with everything from the big picture to the things that are hard to change, and the two themes underneath are structure and vision.[1] The same book sorts the IT industry's many architectures into two that are well defined. Application architecture is the inside of a single deployable unit written in one technology, mostly about code and its organisation; system architecture is one step up, where several deployable units in different technologies must work as a whole, and brings in hardware and the constraints infrastructure imposes. Software architecture is their combination, and enterprise architecture is something else: how an organisation uses people, process and technology, breadth rather than depth and strategy rather than code.[1]

Two observations recur. Every system has an architecture, whether chosen or allowed to happen, and the one that happens is the big ball of mud, which allows fast building without planning but makes a poor place to live; and an architecture is rarely good or bad, only fit or unfit for purpose, so that even the ball of mud fits when a deadline is all that matters.[2] Two short theoretical works sit at the far end of the definitional question. One examines the philosophical beliefs architects hold without knowing it, walking from Plato through Kant, pragmatism and complexity science and asking what architecture looks like under philosophies of movement rather than stillness;[9] the other introduces Residuality Theory, in which an architecture is a collection of residues that survive stressors, analysed with ideas such as Kauffman networks, attractors and criticality.[10]

The role

Architecture is a role, not a rank, and it can be held by one person or shared by a team. One guide breaks it into five parts, the architectural drivers, designing the software and selecting its technology, owning the technical risks (an architecture should be tested as early as code is), continuous technical leadership and quality assurance, and advises a team without a definition of the role to write one.[1] A chief architect lists what the role is not: a firefighter, since architecture needs thinking that cannot happen in thirty-minute slots; a senior developer, since the two are different careers; a project manager; a scientist, since the job is to make complex things easy to understand. Asked for a KPI, he rejects the number of decisions made and offers instead whether the systems still run and absorb change five years on.[2]

The same book's best-known image is the architect elevator. In a large organisation architects ride between the penthouse, where business strategy is set, and the engine room, where software is built, carrying technical reality up and strategy down; the ride must go both ways, since architects who only enjoy the view end up with authority and no responsibility.[2] A 2024 guide borrows the metaphor and adds that the role has moved out of the ivory tower towards mentoring and coding beside the team; that architects are generalists, aware of business capabilities, infrastructure, solution architecture, security and soft skills but expert in few; and that a new engagement starts with coffee and then a two-hour meeting with domain experts, asking why, what and how in that order.[7]

Decisions and documentation

What separates an architecture document from a diagram of boxes is decisions. The chief architect's test is whether a document records non-trivial decisions and their rationale, illustrated with two sketches of a house: one is cookie-cutter, and nobody would pay an architect for it; the other has a steep roof with an overhang because it is built for snow, and that single climate-driven decision, which the customer never stated as a requirement, is architecture.[2] A worked guide to the arc42 template documents seven real systems the same way, from an HTML sanity checker and a chess engine to a mass-market CRM system, each through the template's sections of context, building blocks, runtime and deployment views, cross-cutting concepts and decisions.[11] The drawings themselves are a craft. A short book for IT architects asks what it takes for a drawing to be worth the thousand words of the proverb and answers with stroke width, alignment and balance, the hidden messages carried by colour, a suitable font, two drawings rather than one overloaded one, vector tools, and the purpose of giving the viewer an insight, which no automatic tool can supply.[12]

Design principles

Below the architecture sits design: the choices made class by class and function by function, which an architecture can constrain but not make. The library's books on it fall into the object-oriented tradition and its principles, the discipline of simple design and reliability, and design with types.

Objects, principles and patterns

The vocabulary of object-oriented design, cohesion and coupling, SOLID, GRASP, design by contract, the Law of Demeter, has a reference of its own: ninety-five principles, each written to one template, framed by a Design Pyramid relating quality attributes, smells, principles and patterns.[13] A language-agnostic textbook starts from what a program is and works up to the patterns, which it treats as one family rather than a catalogue: strategy, delegates and higher-order functions as the same solution, observers as events, visitors as pattern matching, and variance as the key to the Liskov substitution principle.[14] A JavaScript book takes the functional route to the same ground, treating function composition and object composition as a single subject and grounding functors, monads, lenses and transducers in everyday code.[15] A theoretical volume locates engineering failure in human cognitive limits and the nature of complexity and builds its advice, balance concerns, defend against entropy, reduce complexity, from there, leaving the code examples to a second book.[16]

Simple design and reliability

The four rules of simple design got their book from an unusual vantage point: a facilitator who, between 2009 and 2014, watched thousands of pairs build Conway's Game of Life at day-long coderetreat workshops and saw the same designs recur across languages, companies and borders. Its sample essay shows a test named for an empty world whose body reaches into the object and counts a collection, and argues that a test, as the first consumer of a component, should mirror its own name, so that the test shapes the API into an empty? predicate and an alive_at? query.[17]

Reliability is the harder claim. A 2026 book argues that defect-free, maintainable code is achievable and cheaper than the usual kind, in forty-nine numbered recommendations. Its foreword, by a software architect, says what connects it to this article: architectures with availability, fault tolerance and integrity cannot be built on unreliable code, and generated code makes verifying what was written more important, not less. The preface opens on the author's worst project, a fifteen-year codebase begun in Fortran, rewritten in Pascal, Delphi and then C#, with twenty-five developers on three continents, nearly three million lines, a 32,000-line method nobody touched, and a feature in which two per cent of the effort went into the feature itself.[18]

Design with types

Statically typed functional languages offer a third discipline, in which the design artefact is the type or the algebra. A Haskell book with translations into Rust and Scala 3 treats type-level programming as engineering rather than art, on the argument that, like Conway's Game of Life, a type-level program starts from a few simple rules and grows into a contraption whose behaviour is hard to predict and which one misplaced change can blow up; it covers extensibility, domain modelling and layered architecture with types.[19] Its companion in spirit argues that a functional program should be designed by first finding its algebra, the operations and the laws they obey, and deriving the implementation and tests from it. John Hughes's foreword traces the idea from Landin's 1966 paper through Backus's 1978 Turing lecture and Guttag and Horning's algebraic specification of abstract data types to Henderson's functional geometry. Between two designs, choose the one with the better algebra.[20]

Patterns and architectural styles

An architectural style is a named shape for a system, and the patterns are the recurring pieces within it. The library has one atlas of the shapes, several books on the most-taught family, in which the business logic is walled off from infrastructure, and a run of books that add architecture to a framework.

A map of topologies

A 2026 compendium gathers around a hundred architectures and architectural patterns into a smaller set of metapatterns, Monolith, Shards, Layers, Services, Pipeline, Middleware, Shared Repository, Proxy, Orchestrator and others, on the premise that architectures evolve rather than being planned. It places any system in a space of three axes, abstractness (technical partitioning into layers), subdomain (domain partitioning into modules or services) and sharding (multiple instances), and flattens the space into a map with five regions: monolithic, layered, services, fragmented and plugins.[3]

The regions sort by size. A small or cohesive system stays a Monolith, whose long-running forms are the Reactor, a thread per request that blocks, the Proactor, callbacks on one thread as in embedded work, and Half-Sync/Half-Async; Shards split its data and Replicas copy it. Medium-sized projects take Layers, from Entity-Control-Boundary and the domain-driven layers of presentation, application, domain and infrastructure to the scaled service of stateless instances behind a load balancer sharing a database, which the book calls the default way to scale a server-side service. Long-lived products extract their volatile code into Plugins, a Hexagonal Architecture or a Microkernel. Large systems are decomposed into Services owned by teams, because cognitive load sets development speed, and huge ones into recursive hierarchies. No topology is a silver bullet.[3]

Layers, ports and adapters

The most-taught family puts the domain in the middle and the frameworks, databases and remote services at the edge. A PHP book derives the family's patterns by showing how they could have been invented: take legacy code that mixes SQL with business decisions, separate the core from the infrastructure, and entities, value objects, repositories and application services fall out, after which a standard set of layers, Domain, Application and Infrastructure, and the overlay of ports and adapters come for free. Its two rules define core code: it depends on no external system and on no code written for one, so that a connection interface with an insert method is still infrastructure while a repository with a save method communicates purpose; and it needs no special context to run. The author's rule of thumb is that any application meant to live longer than two years should pay for this.[21] A Java book turns Robert C. Martin's clean architecture and Alistair Cockburn's hexagonal architecture into Spring code and spends its chapters where most stop, on mapping between layers, assembling the application, enforcing boundaries, and the conscious shortcuts and their debt.[22] A Python counterpart grows one example from a single use case into a Flask application with PostgreSQL and MongoDB repositories, for readers who already practise test-driven development.[23]

Architecture inside a framework

Frameworks supply a structure, and several books argue it is not enough. The best-known Rails case is Trailblazer, whose author, hired to restructure legacy Rails applications in Berlin, Munich, Cape Town and Sydney, found the same problems in all of them, massive models, controllers seven conditionals deep, callbacks changing state where nobody wanted it, and concluded that the question developers ask most, where a piece of logic belongs, is a design flaw of the framework itself. In the style, controllers become lean endpoints that dispatch to an operation holding the business logic, models keep only persistence, and files are grouped by domain concept rather than by technology. Each operation implements one function of what the book calls the high-level domain, a use case in domain-driven terms and a command in CQRS terms.[24] For Angular, a book connects strategic domain-driven design and context mapping to project layout, enforces module boundaries with Sheriff and Nx, splits a deployment monolith into micro frontends with Module Federation and Native Federation, and offers the modulith as the alternative.[25] Spring has a book on its reactive programming model, argued from the cost of JVM threads and the faulty nature of networks.[26] Even a robotics framework has patterns and anti-patterns: a guide to building on ROS 2 is organised around when to use each of its mechanisms, nodes and lifecycle nodes, executors and callback groups, topics, services and actions, state machines and behaviour trees.[27]

Domain-driven design and event sourcing

Domain-driven design, from Eric Evans's 2003 book, puts the business domain, and a language shared by developers and domain experts, at the centre of the design; event sourcing stores that domain's history as a sequence of facts. The two have grown together, and the library's books on them are among its most recent.

Strategic and tactical design

A PHP book that began as a 2014 magazine article lays out the three pillars: a ubiquitous language built jointly by domain experts and developers, strategic design that sets the boundaries and relationships between the parts of a business, and tactical design, the building blocks that make a domain model testable. It separates the problem space, where domains and subdomains organise what a company wants solved, from the solution space, where bounded contexts and a context map say how each subdomain is implemented and how the implementations relate, and it is candid about when not to bother: an application whose use cases manipulate rows needs a fancy face in front of its database. Since its first edition, it reports, Event Storming has become the standard way to begin, and the modular monolith has returned as a middle ground, since a bounded context is a boundary whether or not it is deployed on its own; the same chapter cites the Lewis and Fowler definition under which microservices implement bounded contexts.[4]

Two shorter books do the strategic work by case study. One follows a mortgage-loan process at a fictional bank from knowledge crunching and the ubiquitous language through subdomains, bounded contexts and context maps to the tactical patterns and a hexagonal implementation in Java and Spring Boot.[28] A free guide built like a workshop takes a gym through big-picture and process-level Event Storming into subdomains, bounded contexts and a context map with upstream and downstream relationships, and stops there, before implementation.[29] The eight-step guide makes the same discovery its second step, running workshops with Event Storming and Domain Storytelling before any technology is named.[7]

Event sourcing and event modelling

Event sourcing is simple to state and, its advocates admit, hard to find guidance on. Instead of keeping data in tables and relations, a system stores the facts that happened, in order: the customer was created, then moved, then made a large purchase, then was promoted, and the current state is their sum. The usual approach ends with the same customer but loses the history, which starts to matter the moment the business asks whether the promotion came before or after the move. Modelling this way also keeps the system in the business's language, a customer-blocked event rather than a flag set on a row. The 650-page book that says all this is built around Event Modeling, Adam Dymitruk's planning method, which its author met in 2021 and credits with finally letting him talk to customers in a language they understood; it implements a shopping-cart system slice by slice with Axon and Apache Kafka, then catalogues implementation patterns.[6] A 2026 Python book, companion to its author's event-sourcing library, builds the same ideas as a pattern language in fifteen chapters, an event-sourced domain model, then an application with a notification log, snapshots and a repository, then a system of applications with policies and process managers, with bank accounts and cargo shipping as the worked examples; it traces the idea of a pattern language back through Christopher Alexander to Whitehead.[30]

Where several services each own their data, consistency across them is the problem. One short book files the familiar outbox, idempotent consumer, event store and saga patterns under legacy and puts forward exactly-once messaging and try-confirm-cancel transactions as simpler alternatives, for the payment and financial systems that need them.[31]

Distributed systems

Once a system has more than one deployable part, its architecture is a distributed-systems problem: what the parts are, how they communicate, where the data lives and what happens when a part fails. The library's advice begins, almost unanimously, with not distributing too early.

Monoliths, moduliths and when to split

A short story-driven playbook follows a fictional e-commerce company from a WordPress store in 2019 to a global marketplace, one scaling problem per chapter. It starts on WordPress, outgrows it, and migrates with the strangler fig rather than a rewrite. In early 2020, with microservices the fashionable answer, the team checks the prerequisites, a team of twenty or more, understood domain boundaries, mature operations and a stable product, finds it has none of the four, and builds a modular monolith instead: modules that own their own tables even in a shared database, talk through interfaces rather than each other's data, and expose only public contracts, so that the seams are there to cut along later. Its refrain is that microservices solve an organisational problem, not a technical one, and that a four-person startup is not Netflix.[8] The eight-step guide weighs the two deployment strategies in a table: multiple units bring independent scaling, deployment and technology choice and remove the single point of failure, at the cost of network errors, latency, operating cost and combinatorial testing; its sample chapter on release strategies explains blue-green deployment and the feature flags that separate deploying code from releasing a feature.[7] The atlas names the middle ground the Modulith, subdomain-sized components in one process, trading fault tolerance for consistency and lower operating cost.[3]

Microservices and their infrastructure

For teams that do need them, the library has a run of short, concrete books. A 35-page primer ties the size of a microservice to a bounded context and to Conway's Law, lists the reasons teams adopt them, and asks whether they are hype.[32] Its companion of recipes compares technology choices for frontend integration, asynchronous communication through Kafka or Atom feeds, and synchronous calls with Kubernetes, Consul or Cloud Foundry.[33] A hands-on Java book builds a Spring Boot e-commerce monolith, splits it along bounded contexts into Spring Cloud services, then containerises them and replaces each Spring Cloud pattern with its Kubernetes and OpenShift equivalent; its readable sample is the chapter on why containers exist, isolated partitions in one operating system that protect an application from the host's updates and give it the same environment anywhere.[34] A service mesh takes the networking concerns out of the services: a 2020 primer explains what one is, runs an executable Istio example and compares Linkerd 2, Consul and AWS App Mesh.[35] Sustainability has entered the same decision: a community book of Java essays devotes a chapter to how deployment architecture, modular monoliths, communication styles, caching and API design change a system's resource use.[36]

In front of the services stands the API gateway, a reverse proxy with a twist: it understands API traffic, decodes tokens, manages keys, and enforces security, rate limits and transformation in one place. A 2026 handbook sorts the more than sixty products on the market into kinds, edge gateways placed near users, the cloud providers' own, libraries embedded in the application, Kubernetes ingress controllers and the newer Gateway API standard, the sidecar proxies of a service mesh, and AI gateways that meter and cap spending on language models, and explains the mechanism: plugins placed in a request flow and a response flow, globally or per API.[37]

Data and persistence

Where the data lives, and how consistent it must be, is the decision the atlas calls Shards and Replicas,[3] and books from the persistence layer show what each choice costs. A PostgreSQL scaling playbook from the chief technology officer of a time-tracking company starts past query tuning, with parameters, monitoring, maintenance, connection pooling, replication and partitioning; its sample chapter is one parameter, the commit setting that decides how far a transaction's log record must travel before the database acknowledges it, from a synchronous standby for payments to nowhere at all for telemetry. Its closing habits apply beyond Postgres: measure before tuning, make the trade-offs deliberately, and build for the next order of magnitude by asking what breaks when this doubles.[38] A Java persistence book measures what JDBC drivers do with batched statements, one ignoring batching except for prepared statements and another needing a rewrite option to send a batch in one request.[39] A guide to Apache Ignite explains, through one product, the shared-nothing cluster: identical nodes with no master or coordinator, communicating by peer-to-peer messages, added and removed without disruption.[40] Two books go inside the database: one builds a small one in Go from durable files and a B+tree through tables, indexes and transactions to an SQL-like language,[41] and one builds a query engine in Kotlin on Apache Arrow, from logical and physical plans and a SQL parser through joins and optimisation to parallel and distributed execution.[42]

Real-time systems, games and peer-to-peer networks

Three corners of distributed design have books of their own. Real-time communication is where request-response fails: a client that must learn of a server-side event can poll wastefully or hold a WebSocket, a two-way connection that is efficient but exposes raw bytes, and a .NET library hides the difference, falling back from WebSocket to server-sent events to long polling with no change to the application code.[43] Multiplayer games are a distributed-systems discipline whose practices are known in the industry and rarely published, and a three-volume series by the architect of a game with four hundred thousand simultaneous players and of a stock exchange sets out to publish them together. Its first volume argues from cheating to the authoritative server, imperfectly scalable but the only workable design, and designs the client-server protocol;[44] the second builds the client on a reactor, working through eight ways of handling non-blocking returns in an event loop and arguing for deterministic logic that can be replayed to debug;[45] the third treats the server side, in-memory state, scaling out, a web-style deployment with write-back caching against a classical game server, front-end servers as concentrators, and fault tolerance.[46] At the decentralised extreme, a short book on peer-to-peer networks covers the history from early file sharing through Chord, Kademlia, Bitcoin, Cassandra and IPFS, structured and unstructured overlays, distributed hash tables with modulo, consistent and rendezvous hashing, and the author's own polyring topology.[47]

APIs

Between the parts of a distributed system, and between a company and its partners, sits the API, and its design is a specialism. One guide opens with the observation that API design combines the two hard things of computer science, cache invalidation and naming, in a distributed environment at scale. Its first chapter is about why: there are companies for which the API is the business and companies with an API among their products that often earns no direct revenue; the business cases are a mobile strategy (Netflix's API, launched seventeen months after its streaming service, put the service on every device before its competitor could), driving usage, defence and partner connectivity; the technical cases are abstracting complexity, simplifying interfaces and metered usage.[48] A PHP developer's book on APIs that survive their own changes gives its sample chapter to the least-used part of REST, hypermedia, which it reduces to two things: content negotiation through the Accept header rather than file extensions in URLs, and hypermedia controls, links with a relation and a URI in every response, a self link pointing to where the resource lives, generic relations taken from the IANA registry, and the OPTIONS method and Allow header for discovering what a link permits. It recounts the four levels of the Richardson Maturity Model and Fielding's 2008 verdict that without hypermedia an API is not REST.[5] A 37-page checklist declines the REST label on purpose, calls its target pragmatic web APIs, and gives documentation, naming, versioning, methods, caching, errors, pagination and partial responses a page or two each.[49]

Enterprise, cloud and platforms

Enterprise architecture, strategy rather than code, is where the architect's work becomes organisational, and one author's three books cover it. The first, thirty-seven short essays from a chief IT architect, is about transformation, and its chapter on economies of speed measures the gap: a large IT organisation took seven months of committee work to recommend Git while still allowing Subversion, where a startup would have a repository and a first commit in ten minutes, a ratio around thirty thousand.[2] The developers' guide adds that the central architecture groups large organisations call enterprise architects, keeping lists of approved technologies, are a useful role but not what the term means.[1] A further book takes the whole enterprise as the system to design, proposing a feedback-driven operating model across strategy, product, technology and operations in which architecture practices such as loose coupling, modularity and decision records are one section among many.[50]

The second book applies the same models to the cloud. Its thesis is that the cloud is not IT procurement but a lifestyle change: corporate IT is built on buy over build, and the processes that bought servers and licences fail on something that resembles an outsourcing of all of IT. The author sets the two models side by side, predictability against elastic pricing, a feature checklist against the provider's vision, control through sign-offs against compliance through transparency, standby servers against automation, and warns that transformation has no stock-keeping unit. A later chapter's rule is that if you cannot drive, a faster car is the worst purchase: a capability of ten thousand transactions a second is a benefit only to those who need it, and the giant leap by which a lagging organisation tries to catch up fails.[51]

The third asks what a platform is, after its author built one in financial services, advised a government, and watched nearly every large customer of a cloud provider build in-house platforms, many obsolete or unused by the time they launched. Platforms generate value through the interaction of their participants, which is why a platform without participants is a farmers' market without farmers; automotive platforms show that harmonising the chassis multiplied the models a maker could offer, and marketplace flywheels explain why winners take all. The book's central paradox is that platforms boost innovation by constraining, as the Baltimore fire of 1904 produced a hydrant standard and the strictness of HTTP produced the diversity of the web.[52]

Architecture and AI

The newest question is what large language models do to architecture, and the library has early answers from both sides of the system boundary. A course made from a book on a year of building a language-model-powered product treats integration as architecture patterns, retrieval, a multitude of workers, tool use, generative user interfaces, a human in the loop and quality control, drawn from one real product in Ruby on Rails. Its introduction says the author, a hacker since the 1980s with a long scepticism of ivory-tower architects, is excited precisely because AI challenges whether architecture can still be defined as the parts that are hard to change, now that any part can be changed at any time; its sample is a primer on how a model works.[53] An engineering text revised through 2025 approaches AI applications the way the rest of this article approaches any other, built from off-the-shelf libraries, frameworks and services, with a chapter of architecture guidelines; its first chapter contrasts machine learning, which cannot explain its decisions, with knowledge-based AI, which needs the knowledge engineered up front, and expects the hybrids to grow.[54]

From the other side, a short 2025 book treats the model as a reader of the codebase and proposes conventions for code it can navigate, feature slices, hypersemantic naming, metadata tags and flow files, built on clean and slice architecture in TypeScript.[55] The design-principles reference adds AI-first principles, semantic modularity, dynamic guardrails and a human veto, beside its classical ones.[13] Once an agent can call tools and change state, its architecture is a security problem: a 2026 field guide gives it a seven-layer reference architecture with trust boundaries, agent identity through OAuth token exchange, tool-call controls, evaluation gates, policy as code in Rego and Cedar, and a readiness checklist for whoever owns the go-live decision.[56] The gateway handbook describes AI gateways that meter, cap and reroute model calls,[37] the reliability book's foreword argues that generated code raises rather than lowers the bar for verifying it,[18] and the platform book's acknowledgements record that none of its text was generated.[52]

Sources

Every source is a Leanpub book or course. The note after each says which part of it was read; where no sample was available, only the public description and table of contents were used.

  1. 1.
    Software Architecture for Developers, Simon Brown: Technical leadership and the balance with agility Free sample: why the book was written, chapter 4 on what software architecture is (noun and verb, the types of architecture, application, system and enterprise architecture, architecture against design) and chapter 5 on the architecture role. 2022. Free sample: PDF · EPUB
  2. 2.
    37 Things One Architect Knows About IT Transformation, Gregor Hohpe: A Chief Architect's Journey Free sample: about the book and the chapters on architects, the architect elevator, defining architecture, the decision test for architecture, transformation and economies of speed. 2024. Free sample: PDF · EPUB
  3. 3.
    Architectural Metapatterns, Denys Poltorak: The Pattern Language of Software Architecture Free sample: about the book and the chapter on system topologies, the map of monolithic, layered, plugin, service and fragmented systems. 2026. Free sample: PDF · EPUB
  4. 4.
    Domain-Driven Design in PHP - 2n Edition, Carlos Buenosvinos, Christian Soronellas, Keyvan Akbary: Discover DDD, Architectural Styles, Tactical Design Implementations, and Bounded Context Integration with PHP 8.5 examples Free sample: foreword, preface, the chapter summaries, chapter 1 on domain-driven design and the start of the value objects chapter. 2026. Free sample: PDF · EPUB
  5. 5.
    Build APIs You Won't Hate, Phil Sturgeon: Everyone and their dog wants an API, so you should probably learn how to build them. Free sample: the HATEOAS chapter, on content negotiation and hypermedia controls. 2016. Free sample: PDF · EPUB
  6. 6.
    Understanding Eventsourcing, Martin Dilger: Planning and Implementing scalable Systems with Eventmodeling and Eventsourcing Free sample: contents and the two opening chapters, why the author cares and why the reader should. 2025. Free sample: PDF
  7. 7.
    Master Software Architecture, Maciej "MJ" Jedrzejewski: A Pragmatic Guide Free sample: preface, the outline of the eight steps, and the sections on who a software architect is, how to start discovering a domain, budget limitations, multiple deployment units and blue-green deployment; the rest is withheld. 2024. Free sample: PDF · EPUB
  8. 8.
    The Scaling Playbook, Andie Nguyen Free sample: introduction and chapters 1 and 2, the WordPress start and the modular monolith. 2026. Free sample: PDF
  9. 9.
    The Architect’s Paradox, Barry O’Reilly: Uncertainty and the Philosophy of Software Architecture No sample: from the description and table of contents. 2025.
  10. 10.
    Residues: Time, Change, and Uncertainty in Software Architecture., Barry M O’Reilly No sample: from the description and table of contents. 2024.
  11. 11.
    arc42 by Example, Gernot Starke, Michael Simons, Stefan Zörner, Ralf D. Müller, Hendrik Lösch: Software Architecture Documentation in Practice No sample (its download failed): from the description and table of contents. 2023. Free sample: PDF · EPUB
  12. 12.
    Drawing for IT Architects, Filip van Laenen Free sample: the introduction, with the author's main advice, and the glossary; the front matter is still unwritten. 2026. Free sample: PDF · EPUB
  13. 13.
    Elegant Design Principles, Narayanan Jayaratchagan: Foundations of Software Design Mastery No sample: from the description and table of contents. 2025.
  14. 14.
    The Object Oriented Way, Christopher Okhravi (PhD) No sample: from the description and table of contents. 2025.
  15. 15.
    Composing Software, Eric Elliott: An Exploration of Functional Programming and Object Composition in JavaScript No sample: from the description and table of contents. 2024.
  16. 16.
    Code Is for Humans, Zohar Jackson: A Guide to Human-Centric Software Engineering No sample: from the description; the table of contents was empty. 2026.
  17. 17.
    Understanding the Four Rules of Simple Design, Corey Haines: and other lessons from watching thousands of pairs work on Conway's Game of Life Free sample: introduction, about the book, the essay on test names and an object's API, and the essay on pair-programming styles. 2014. Free sample: PDF · EPUB
  18. 18.
    Extreme Reliability, Jules May: Programming like your life depends on it Free sample: contents with the table of forty-nine recommendations, the foreword and the opening of the preface. 2026. Free sample: PDF
  19. 19.
    Pragmatic Type-Level Design, Alexander Granin: Practical introduction to type-level programming: design principles, design patterns, methodologies, approaches Free sample: the author's foreword and the opening of chapter 1, the Game of Life analogy and the definition of type-level design. 2025. Free sample: PDF · EPUB
  20. 20.
    Algebra-Driven Design, Sandy Maguire: Elegant Solutions from Simple Building Blocks Free sample: contents and the foreword. 2023. Free sample: PDF
  21. 21.
    Advanced Web Application Architecture, Matthias Noback Free sample: preface, why decoupling matters, the overview of the book and chapter 1 on the two rules for core code. 2021. Free sample: PDF
  22. 22.
    Get Your Hands Dirty on Clean Architecture (2nd edition), Tom Hombergs: A Hands-on Guide to Creating Clean Web Applications with Code Examples in Java No sample: from the description and table of contents. 2023.
  23. 23.
    Clean Architectures in Python, Leonardo Giordani: A practical approach to better software design No sample: from the description and table of contents. 2023.
  24. 24.
    Trailblazer, Nick Sutterer: A New Architecture For Rails Free sample: the chapter on the Trailblazer architectural style, from why Trailblazer through logicless models, concepts, operations, contracts, builders, policies and representers. 2016. Free sample: PDF · EPUB
  25. 25.
    Enterprise Angular: Micro Frontends and Moduliths with Angular, Manfred Steyer: Module Federation - Nx - DDD No sample: from the description and table of contents. 2024.
  26. 26.
    Reactive Spring, Josh Long: (v1.5) No sample: from the description; the table of contents was empty. 2022.
  27. 27.
    A very informal journey through ROS 2, Marco Matteo Bassa: patterns, anti-patterns, frameworks and best practices Free sample: front matter and contents only; the chapters are described from the table of contents. 2026. Free sample: PDF
  28. 28.
    Hands-on Domain-driven Design - by example, Michael Plöd: Domain-driven Design practically explained with a massive case study No sample: from the description and table of contents. 2020.
  29. 29.
    Understand Your Domain First, Maciej "MJ" Jedrzejewski: An Introduction to Event Storming and Domain-Driven Design No sample: from the description and table of contents. 2025.
  30. 30.
    Event Sourcing in Python, John Bywater: Event-oriented analysis and design with applications No sample: from the description and table of contents. 2026.
  31. 31.
    Microservice Transaction Patterns, guypardon: For The Enterprise No sample: from the description and table of contents. 2020.
  32. 32.
    Microservices Primer, Eberhard Wolff, INNOQ: A Short Overview No sample: from the description and table of contents. 2021.
  33. 33.
    Microservices Recipes, Eberhard Wolff, INNOQ No sample: from the description and table of contents. 2021.
  34. 34.
    Playing with Java Microservices on Kubernetes and OpenShift, Nebrass Lamouchi Free sample: chapter 11 on containers and Docker; Parts One and Two are headings only. 2020. Free sample: PDF · EPUB
  35. 35.
    Service Mesh Primer, Eberhard Wolff, Hanna Prinz, INNOQ: The New Infrastructure for Microservices No sample: from the description; the table of contents was empty. 2020.
  36. 36.
    Sustainability for Java Developers, Geertjan Wielenga, Frank Delporte, Simon Martinelli, Markus Westergren, Jan Ouwens, Jan-Hendrik Kuperus, jlengrand, A N M Bazlur Rahman, Vasco Correia Veloso, Ko Turk, Hanno Embregts, Maarten Mulders: Towards an Understanding of Sustainable Java Software Development No sample: from the description and table of contents. 2026.
  37. 37.
    The API Gateway Handbook, Thomas Bayer, Tobias Polley: Your Practical Guide to API Gateway Setup, Security, and Operation Free sample: chapters 2 and 3, the responsibilities and kinds of API gateways and how they work, plugins, message flow and plugin runners. 2026. Free sample: PDF
  38. 38.
    Lift the Elephant, Alex Yarotsky: Scaling PostgreSQL Beyond Query Optimization Free sample: contents, introduction, the chapter on the synchronous commit parameter and the closing thoughts. 2026. Free sample: PDF
  39. 39.
    High-Performance Java Persistence, Vlad Mihalcea: Get the most out of your persistence layer Free sample: the batch updates chapter and the start of the JPA and Hibernate chapter. 2024. Free sample: PDF · EPUB
  40. 40.
    The Apache Ignite book, Shamim Bhuiyan: The next phase of the distributed systems Free sample: preface and the opening of chapter 4 on the shared-nothing cluster topology, client and server nodes and deployment. 2025. Free sample: PDF · EPUB
  41. 41.
    Build Your Own Database in Go From Scratch, build-your-own.org: From B+tree to SQL in 3000 lines No sample: from the description and table of contents. 2025. Free sample: EPUB
  42. 42.
    How Query Engines Work, Andy Grove: An Introductory Guide No sample: from the description and table of contents. 2026.
  43. 43.
    SignalR on .NET 6 - the Complete Guide, Fiodar Sazanavets, Awal Kamin Salifu: The easiest way to enable real-time two-way HTTP communication on .NET 6 Free sample: chapter 1 on why real-time communication needs more than request-response, WebSocket, the fallback order and use cases, and the start of chapter 2. 2022. Free sample: PDF · EPUB
  44. 44.
    Development & Deployment of Multiplayer Online Games Vol. I, 'No Bugs' Hare: GDD, Authoritative Servers, Communications Free sample: endorsements, the full contents, and the introduction on real-world experience and the genres covered. 2017. Free sample: PDF
  45. 45.
    Development and Deployment of Multiplayer Online Games, Vol. II., 'No Bugs' Hare: DIY, (Re)Actors, Client Arch, Unity/UE4/Lumberyard No sample: from the description and table of contents. 2017.
  46. 46.
    Development and Deployment of Multiplayer Online Games, Vol. III., 'No Bugs' Hare: Server Arch, Fault Tolerance, Pre-Coding No sample: from the description and table of contents. 2017.
  47. 47.
    P2P Networks, Jakob Jenkov No sample: from the description and table of contents. 2026.
  48. 48.
    A Practical Approach to API Design, D. Keith Casey Jr, James Higginbotham: From Principles to Practice Free sample: the welcome and chapter 1 on what an API is and the business and technical reasons to have one. 2019. Free sample: PDF · EPUB
  49. 49.
    The Web API Design Guidelines for Happy Developers, Antonio Pintus, Federico Pinna: A short pragmatic guide to build effective and funny Web APIs No sample: from the description and table of contents. 2016.
  50. 50.
    The Cybernetic Enterprise, Romano Roth: How to Build a Future-Ready Organization No sample: from the description and table of contents. 2025.
  51. 51.
    Cloud Strategy, Gregor Hohpe: A Decision-Based Approach to Successful Cloud Migration Free sample: about the book, the Part I introduction, chapter 1 on the cloud as a lifestyle change rather than procurement, and chapter 5 on buying a faster car. 2024. Free sample: PDF · EPUB
  52. 52.
    Platform Strategy, Gregor Hohpe: Innovation Through Harmonization Free sample: about the book, chapter 1 on the history and kinds of platforms, and the start of chapter 5 on the platform paradox. 2026. Free sample: PDF · EPUB
  53. 53.
    Patterns of Application Development Using AICourse, Obie Fernandez Free sample: the introduction, with the author's thoughts on software architecture, and the primer on large language models; the front matter is withheld. 2025.
  54. 54.
    Applied Artificial Intelligence, Bernhard G. Humm: An Engineering Approach Free sample: preface and chapter 1, what AI is, a brief history, impacts on society and prominent projects. 2025. Free sample: PDF · EPUB
  55. 55.
    Agent-Friendly Code: Architecting for AI-First Development, Dmitriy Zhuk: Build Smarter Code for Humans, Machines, and the Future No sample: from the description and table of contents. 2025.
  56. 56.
    Securing Enterprise AI Agents, Thomas De Vos: A Field Guide to Bounded AI Autonomy, AgentSecOps, and MCP Security No sample: from the description and table of contents. 2026.

Further reading

Other books in the library on the same ground, not cited above.

  • GitOps, Florian Beetz, Anja Kammer, Dr. Simon Harrer: Cloud-native Continuous Deployment A concise introduction to GitOps, continuous deployment with Git repositories as the source of truth, ending in a Flux quickstart on Kubernetes. 2021.
  • Ansible for Kubernetes, Jeff Geerling: Automate app deployment on any scale with Ansible and K8s Automating Kubernetes clusters and deployments with Ansible, from Minikube to EKS and GKE, ending with an Ansible-based Operator. 2020.
  • API-Driven DevOps, Nordic APIs: Strategies for Continuous Deployment A collection of articles on DevOps from the API side, with continuous integration tools, Docker and its remote API, and configuration management. 2016.
  • Learning Patterns, Lydia Hallie, Addy Osmani: Patterns for building powerful web apps with vanilla JavaScript and React Design, performance and rendering patterns for JavaScript and React applications. 2022.
  • Programming React Native, Dotan Nahum A React Native tutorial whose Flux architecture and code-sharing strategy were meant to outlast the framework. 2016.
  • Beginning Flutter 3.0 with Dart, Sanjib Sinha: A Beginner to Pro. Learn how to build Advanced Flutter 3.0 Apps A from-scratch Flutter and Dart tutorial, with state management and an MVC chapter among its thousand pages. 2022. Free sample: PDF · EPUB
  • Unethical Software Engineering, Cesare Pautasso: Dark Patterns Twenty-three dark patterns, from surveillance to deepfakes, documented in the design-pattern form of context, problem, solution and consequences. 2026.