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

644 234 3MB

English Pages 234 Year 2024

Report DMCA / Copyright

DOWNLOAD FILE

Software Architecture and Decision-Making: Leveraging Leadership, Technology, and Product Management to Build Great Products (Early Release)
 9780138249694

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

Polecaj historie