Cover....1
Title Page....5
Copyright....6
About the Authors....8
Table of Contents....9
Intro....23
Chapter 1: Software Architecture Demystified....37
Building your understanding of software architecture....38
Building plans and software architecture....39
The dimensions of software architecture....40
Puzzling out the dimensions....41
The first dimension: Architectural characteristics....42
The second dimension: Architectural decisions....44
The third dimension: Logical components....46
The fourth dimension: Architectural styles....48
A design perspective....52
An architectural perspective....53
The spectrum between architecture and design....54
Where along the spectrum does your decision fall?....55
Strategic versus tactical....56
High versus low levels of effort....58
Significant versus less-significant trade-offs....60
Putting it all together....62
You made it!....63
Chapter 2: Architectural Characteristics....63
Causing Lafter....78
What are architectural characteristics? ....80
Defining architectural characteristics....81
Characteristics are nondomain design considerations....82
Characteristics influence architectural structure....83
Limit characteristics to prevent overengineering....84
Consider explicit and implicit capabilities....86
The International Zoo of -ilities....87
Process architectural characteristics....88
Structural architectural characteristics....89
Operational architectural characteristics....90
Cross-cutting architectural characteristics....91
Sourcing architectural characteristics from the problem domain....96
Sourcing architectural characteristics from environmental awareness....97
Sourcing architectural characteristics from holistic domain knowledge....97
Composite architectural characteristics....99
Priorities are contextual....100
Lost in translation....102
Architectural characteristics and logical components....104
Balancing domain considerations and architectural characteristics....105
Limiting architectural characteristics....106
Chapter 3: The Two Laws of Software Architecture....63
It starts with a sneaker app....118
What do we know so far?....120
Communicating with downstream services ....122
Analyzing trade-offs....123
Trade-off analysis: Queue edition....124
Trade-off analysis: Topic edition....125
The first law of software architecture....126
It always comes back to trade-offs....128
Making an architectural decision....129
What else makes a decision architectural?....130
The second law of software architecture....132
Architectural decision records (ADRs)....133
Writing ADRs: Getting the title right....135
Writing ADRs: Whats your status?....136
Writing ADRs: Establishing the context....140
Writing ADRs: Communicating the decision....141
Writing ADRs: Considering the consequences....143
Writing ADRs: Ensuring governance....145
Writing ADRs: Closing notes....145
The benefits of ADRs....148
Two Many Sneakers is a success....149
Chapter 4: Logical Components....149
Logical components revisited....160
Name that component....161
Adventurous Auctions goes online....162
Logical versus physical architecture....163
Creating a logical architecture....165
Step 1: Identifying initial core components....166
Workflow approach....168
Actoraction approach....170
The entity trap....172
Step 2: Assign requirements....174
Step 3: Analyze roles and responsibilities....176
Sticking to cohesion....177
Step 4: Analyze characteristics....178
The Bid Capture component....180
Component coupling....181
Afferent coupling....182
Efferent coupling....183
Measuring coupling....184
A tightly coupled system....186
Applying the Law of Demeter....187
A balancing act....189
Some final words about components....190
Chapter 5: Categorization and Philosophies....149
There are lots of architectural styles....204
The world of architectural styles....205
Partitioning: Technical versus domain....206
Deployment model: Monolithic versus distributed....208
Monolithic deployment models: The pros....210
Monolithic: The cons....211
Distributed deployment models: The pros....212
Distributed deployment models: The cons....213
And thats a wrap!....216
Chapter 6: Layered Architecture....206
Naan & Pop: Gathering requirements....222
Design patterns redux....224
Layering MVC....225
Layering it on....228
Translating layers into code....229
Domains, components, and layers....231
Drivers for layered architecture....234
Layers, meet the real world: Physical architectures....235
Physical architecture trade-offs....236
One final caveat about domain changes....239
Layered architecture superpowers....240
Layered architecture kryptonite....241
Layered architecture star ratings....242
Wrapping it up....244
Chapter 7: Driven by the Domain....238
Modular monolith?....255
Domain pains changes....257
Why modular monoliths?....258
Show me the code! ....260
Keeping modules modular....263
Taking modularity all the way to the database....267
Beware of joins....269
Modular monolith superpowers....270
Modular monolith kryptonite....271
Modular monolith star ratings....272
Naan & Pop is delivering pizza!....274
Chapter 8: Microkernel Architecture....269
The benefits of Going Green....284
The two parts of microkernel architectures....287
The spectrum of microkern-ality....289
Device assessment service core....291
Encapsulated versus distributed plugins....293
Plugin communication....295
Cubicle conversation....297
Plugin contracts....300
Going Green goes green....301
Microkernel superpowers....302
Microkernel kryptonite....303
Microkernel star ratings....304
Wrapping it up....306
Chapter 9: Do It Yourself....300
Making travel easier....314
TripEZs user workflow....315
Planning the architecture....316
The architects roadmap....317
Step 1: Identify architectural characteristics....318
Step 2: Identify logical components....320
Step 3: Choose an architectural style....322
Step 4: Document your decision....324
Step 5: Diagram your architecture....326
There are no right (or wrong) answers....328
Chapter 10: Microservices Architecture....328
Are you feeling okay?....340
Whats a microservice?....343
Its my data, not yours....344
How micro is micro?....346
Granularity disintegrators....348
Why should you make microservices smaller?....349
Granularity integrators....350
Why should you make microservices bigger?....351
Its all about balance....352
Sharing functionality....355
Code reuse with a shared service....356
Code reuse with a shared library....357
Managing workflows....361
Orchestration: Conducting microservices....362
Choreography: Lets dance....364
Microservices architecture superpowers....368
Microservices architecture kryptonite....369
Microservices star ratings....370
Wrapping it up....372
Chapter 11: Event-Driven Architecture....364
Too slow....386
Speeding things up....387
Der Nile flows faster than ever....388
What is an event?....390
Events versus messages....392
Initiating and derived events....394
Is anyone listening?....396
Asynchronous communication....397
Fire-and-forget....399
Asynchronous for the win....401
Synchronous for the win....403
Database topologies....405
Monolithic database....406
Domain-partitioned databases....408
Database-per-service....410
EDA versus microservices....414
Hybrids: Event-driven microservices ....418
Event-driven architecture superpowers....420
Event-driven architecture kryptonite....421
Event-driven architecture star ratings....422
Putting it all together....424
Wrapping up....425
Chapter 12: Testing Your Knowledge....425
Welcome to Make the Grade....440
Student testing workflow....441
Planning the architecture....442
The architects roadmap....443
Step 1: Identify architectural characteristics....444
Step 2: Identify logical components....446
Step 3: Choose an architectural style....448
Step 4: Document your decision....450
Step 5: Diagram your architecture....452
There are no right (or wrong) answers!....454
Appendix: Leftovers....454
1 The coding architect....464
2 Expectations for architects....466
3 The soft skills of architecture....468
4 Diagramming techniques....470
5 Knowledge depth versus breadth....472
6 Practicing architecture with katas....474
Index....477
If you're a software developer looking for a quick on-ramp to software architecture, this handy guide is a great place to start. From the authors of Fundamentals of Software Architecture, Head First Software Architecture teaches you how to think architecturally and explores the unique challenges of software architecture. You'll learn the distinction between architecture and design and the relationship between code, components, and architectural styles. You'll also learn how to work with some common architectural styles through vivid, fun examples. Quick, easy, and entertaining, this book is a valuable introduction to the world of software architecture.
Based on the latest research in cognitive science and learning theory, Head First Software Architecture uses a visually rich format to engage your mind, rather than a text-heavy approach that puts you to sleep. Why waste your time struggling with new concepts? This multisensory learning experience is designed for the way your brain really works.