Table of Contents
Preface vii
1 Microservices 1
From Monoliths to Microservices 2
Microservice Architecture 9
The Microservice Ecosystem 11
Layer 1 Hardware 12
Layer 2 Communication 14
Layer 3 The Application Platform 16
Layer 4 Microservices 19
Organizational Challenges 20
The Inverse Conway's Law 21
Technical Sprawl 22
More Ways to Fail 23
Competition for Resources 24
2 Production-Readiness 25
The Challenges of Microservice Standardization 25
Availability: The Goal of Standardization 26
Production-Readiness Standards 28
Stability 29
Reliability 29
Scalability 30
Fault Tolerance and Catastrophe-Preparedness 32
Performance 33
Monitoring 34
Documentation 35
Implementing Production-Readiness 37
3 Stability and Reliability 41
Principles of Building Stable and Reliable Micro services 41
The Development Cycle 42
The Deployment Pipeline 44
Staging 45
Canary 50
Production 51
Enforcing Stable and Reliable Deployment 52
Dependencies 53
Routing and Discovery 55
Deprecation and Decommissioning 56
Evaluate Your Microservice 57
The Development Cycle 57
The Deployment Pipeline 57
Dependencies 57
Routing and Discovery 58
Deprecation and Decommissioning 58
4 Scalability and Performance 59
Principles of Microservice Scalability and Performance 59
Knowing the Growth Scale 60
The Qualitative Growth Scale 61
The Quantitative Growth Scale 62
Efficient Use of Resources 63
Resource Awareness 64
Resource Requirements 64
Resource Bottlenecks 65
Capacity Planning 65
Dependency Scaling 67
Traffic Management 68
Task Handling and Processing 69
Programming Language Limitations 69
Handling Requests and Processing Tasks Efficiently 70
Scalable Data Storage 71
Database Choice in Microservice Ecosystems 72
Database Challenges in Microservice Architecture 73
Evaluate Your Microservice 73
Knowing the Growth Scale 74
Efficient Use of Resources 74
Resource Awareness 74
Capacity Planning 74
Dependency Scaling 74
Traffic Management 75
Task Handling and Processing 75
Scalable Data Storage 75
5 Fault Tolerance and Catastrophe-Preparedness 77
Principles of Building Fault-Tolerant Microservices 77
Avoiding Single Points of Failure 79
Catastrophes and Failure Scenarios 80
Common Failures Across an Ecosystem 81
Hardware Failures 83
Communication-Level and Application Platform-Level Failures 84
Dependency Failures 86
Internal (Microservice) Failures 88
Resiliency Testing 89
Code Testing 90
Load Testing 91
Chaos Testing 94
Failure Detection and Remediation 96
Incidents and Outages 97
Appropriate Categorization 98
The Five Stages of Incident Response 99
Evaluate Your Microservice 102
Avoiding Single Points of Failure 102
Catastrophes and Failure Scenarios 102
Resiliency Testing 103
Failure Detection and Remediation 103
6 Monitoring 105
Principles of Microservice Monitoring 105
Key Metrics 106
Logging 109
Dashboards 110
Alerting 112
Setting up Effective Alerting 112
Handling Alerts 113
On-Call Rotations 114
Evaluate Your Microservice 115
Key Metrics 115
Logging 115
Dashboards 115
Alerting 116
On-Call Rotations 116
7 Documentation and Understanding 117
Principles of Microservice Documentation and Understanding 117
Microservice Documentation 119
Description 120
Architecture Diagram 121
Contact and On-Call Information 122
Links 122
Onboarding and Development Guide 122
Request Flows, Endpoints, and Dependencies 123
On-Call Runbooks 123
FAQ 124
Microservice Understanding 125
Architecture Reviews 126
Production-Readiness Audits 127
Production-Readiness Road maps 128
Production-Readiness Automation 128
Evaluate Your Microservice 129
Microservice Documentation 130
Microservice Understanding 130
A Production-Readiness Checklist 131
B Evaluate Your Microservice 135
Glossary 143
Index 149