Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products (Early Release)
9780138249694
Leverage leadership knowledge to make better software architecture decisions. Think deeply but implement slowly.
The ov
Table of contents : Cover Page Title Page Contents Table of Contents 1. Introduction to Software Leadership Role of Judgment Goal of This Book Part I: Introduction Part II: Essential Background Part III: System Design Part IV: Putting Everything Together 2. Understanding Systems, Design, and Architecture What Is Software Architecture? How to Design a System Five Questions Seven Principles: The Overarching Concepts Designing for an Online Bookstore Designing for the Cloud Summary 3. Mental Models for Understanding and Explaining System Performance A Computer System Models for Performance Optimization Techniques Intuitive Feel for Performance Leadership Considerations Summary 4. Understanding User Experience (UX) General UX Concepts for Architects UX Design for Configurations UX Design for APIs UX Design for Extensions Leadership Considerations Summary 5. Macro Architecture: Introduction History of Macro Architecture Modern Architectures Macro Architectural Building Blocks Leadership Considerations Summary 6. Macro Architecture: Coordination Approach 1: Drive Flow from Client Approach 2: Use Another Service Approach 3: Use Centralized Middleware Approach 4: Implement Choreography Leadership Considerations Summary 7. Macro Architecture: Preserving Consistency of State Why Transactions? Why Do We Need to Go Beyond Transactions? Going Beyond Transactions Best Practices Leadership Considerations Summary 8. Macro Architecture: Handling Security User Management Interaction Security Storage, GDPR, and Other Regulations Security Strategy and Advice Leadership Considerations Summary 9. Macro Architecture: Handling HA and Scale Adding High Availability Understanding Scalability Scaling for a Modern Architecture: Base Solution Scaling: The Tools of Trade Building Scalable Systems Leadership Considerations Summary 10. Macro Architecture: Microservices Considerations Decision 1: Handling Shared Database(s) Decision 2: Securing Microservices Decision 3: Coordinating Microservices Decision 4: Avoiding Dependency Hell Loosely Coupled, Repository-Based Teams as an Alternative to Microservices Leadership Considerations Summary 11. Server Architectures Writing a Service Understanding Best Practices for Writing a Service Understanding Advanced Techniques Using These Techniques in Practice Leadership Considerations Summary 12. Building Stable Systems Why Do Systems Fail, and What Can We Do About Them? How to Handle Known Errors Common Bugs How to Handle Unknown Errors Graceful Degradation Leadership Considerations Summary 13. Building and Evolving the Systems Getting Your Hands Dirty Communicating the Design Evolving the System: How to Learn from Your Users and Improve the System Leadership Considerations Summary Author Bio