- Introduction
- 0. Chapter 0 - Zero
- 1. Why
- 2. Rationale
- 1. Chapter 1 - Philosophy
- 3. Why
- 4. Crystal Ball
- 5. Defensive Programming
- 6. Doing Hard Things
- 7. Frontend vs Backend
- 8. Open Source First
- 9. Service Orientation
- 10. Protect Your Time
- 2. Chapter 2 - Anti-Patterns
- 11. Why
- 12. Tech Debt Plague
- 13. Ignore Culture
- 14. Stagnation
- 15. Requirements
- 3. Chapter 3 - Dilemmas
- 16. Why
- 17. Discovery vs Delivery
- 18. Move Fast vs Do It Right
- 19. Build vs Buy
- 20. Decide or Wait
- 4. Chapter 4 - Properties
- 21. Why
- 22. Anti-Fragility
- 23. State of the Art
- 24. Scalability
- 25. Observability
- 26. Stability
- 27. Secure
- 5. Chapter 5 - Practices
- 28. Why
- 29. Attention to Detail
- 30. Architecture Review
- 31. Design First
- 32. Ownership
- 33. Reading Code
- 34. Monthly Review
- 35. Working in the Trenches
- 6. Chapter 6 - Concepts
- 36. Why
- 37. ACID
- 38. Authentication & Authorization
- 39. JWT
- 40. BASE
- 41. Idempotency
- 42. Optimistic vs Pessimistic Locking
- 43. Partition
- 44. Schema Evolution
- 45. Source of Truth
- 46. Stateless vs Stateful Services
- 7. Chapter 7 - Patterns
- 47. Why
- 48. API Gateway
- 49. BFF Pattern
- 50. Cache
- 51. Connection Pool
- 52. Feature Flags
- 53. Load Balancer
- 54. Message Patterns
- 55. Message ID
- 56. Pagination
- 57. Queue
- 58. Retry
- 59. Web Hook
- 8. Chapter 8 - Tools
- 60. Why
- 61. Diagramming Tools
- 62. Writing Tools
- 63. Thinking Tools
- 9. Chapter 9 - Epilogue
- 64. Epilogue
- 65. Resources
- 66. How I Wrote The Book
- 67. Changelog
- 68. References
- 69. Glossary
- 70. Index