What this book covers
Chapter 1, Introduction to Software Architecture, presents the topic of what software architecture is and why it is useful, as well as presenting a design example.
The first section of the book covers the Design phase, before the software is written:
Chapter 2, API Design, shows the basics of designing useful APIs that abstract the operations conveniently.
Chapter 3, Data Modeling, talks about the particularities of storage systems and how to design the proper data representation for the application.
Chapter 4, The Data Layer, goes over the code handling of the stored data, and how to make it fit for purpose.
Next, we will present a section that covers the different Architectural patterns available, which reuse proven structures:
Chapter 5, The Twelve-Factor App Methodology, shows how this methodology includes good practices that can be useful when operating with web services and can be applied in a variety of situations.
Chapter 6, Web Server Structures, explains web services and the different elements to take into consideration when settling on both the operative and the software design.
Chapter 7, Event-Driven Structures, describes another kind of system that works asynchronously, receiving information without returning an immediate response.
Chapter 8, Advanced Event-Driven Structures, explains more advanced usages for asynchronous systems, and some different patterns that can be created.
Chapter 9, Microservices vs Monolith, presents these two architectures for complex systems, and goes over their differences.
The Implementation section of the book covers how the code is written:
Chapter 10, Testing and TDD, talks about the fundaments of testing and how Test Driven Development can be used in the coding process.
Chapter 11, Package Management, follows the process of creating reusable parts of code and how to distribute them.
Finally, the last section deals about Ongoing operations, where the system is in operation and requires monitoring at the same time that is adjusted and changed:
Chapter 12, Logging, describes how to record what working systems are doing.
Chapter 13, Metrics, discusses aggregating different values to see how the whole system is behaving.
Chapter 14, Profiling, explains how to understand how code is executed to improve its performance.
Chapter 15, Debugging, covers the process of digging deep into the execution of code to find and fix errors.
Chapter 16, Ongoing Architecture, describes how to successfully operate architectural changes on running systems.