2PC (two-phase commit) protocol 107
abstraction 66
acbuild command-line tool 217
acceptance testing 257
accidental complexity 12
ACID transaction 106
activity feeds 126
Advanced Message Queuing Protocol (AMQP) 63, 162
aggregating data 59
alerts
AMQP (Advanced Message Queuing Protocol) 63, 162
anemic services 30
Apollo 71
applications
architecture
artifacts
asset information 81
asynchronous communication patterns 63–64
autohealing 190
automated tests 257
automation
of production environments 191–191
autonomy
availability
calculating 130
manual change management 189–189
prioritizing 123
backends for frontends . See BFF (backends for frontends)
backends for frontends . See BFF (backends for frontends)
BDD (behavior-driven development) 78
BEAM (Erlang virtual machine) 182
BFF (backends for frontends) 69–69
binary dependencies 200
blue-green deploys pattern 210
bottlenecks 154
boundaries . See application boundaries
boundaries . See application boundaries
boundary layer 66
build pipelines
procedural versus declarative 263–263
bus factor 41
business capabilities, scoping by 78–87
busybox 241
cachetools library 144
canaries
Chaos Toolkit 155
ChargeFailed event 110
choreographed interactions 110
choreography 37–39, 94–94, 109–110
Clair 220
clusters, deploying to 224–242
coarse-grained services
codebases 329
code deployment 259
coherence 335
collaboration . See service collaboration
collaboration . See service collaboration
collaborators 37
command-query responsibility segregation pattern . See CQRS (command-query responsibility segregation) pattern
command-query responsibility segregation pattern . See CQRS (command-query responsibility segregation) pattern
commands, separating queries from 123–125
commit phase, 2PC 108
communication
as sources of failures 135–135
asynchronous communication 149–149
asynchronous communication patterns 63–64
by group size 327
event-based communication 108–110
standardizing 156
synchronous messages
using service mesh 157
communication broker 63
compensating actions 113
components
adding to Docker compose files 276–276
configuration drift 201
configuring
ConnectionError exception 179
constraints 103
Consul 65
consumer-driven gateways 70–71
containerizing services 215–224
containers
continuous delivery 245
continuous deployment 245
contracts
control 103
coordinators 59
correlation IDs 120
CQRS (command-query responsibility segregation) pattern
overview of 63
cross-functionally 330
CRUD (create, read, update, delete) 30, 108
cyclic dependencies 114
DAG (direct acyclic graph) 314
data
aggregating 59
data composition 121
data warehouses 127
DDD (domain-driven design) 79
deadlines 145
decomposition
delivery pipelines, building
deploying
deployment pipelines 57, 190, 244–246
deployments
deployment target 190
described feature 166
development process 43
direct acyclic graph (DAG) 314
distributed applications 106–108
divergence . See technical divergence
divergence . See technical divergence
docker-compose, installing 140
docker-compose up command 180, 281
docker version command 355
domain-driven design (DDD) 79
domains . See modeling domains
domains . See modeling domains
domain-specific language (DSL) 217, 247
downtime 130
DRY (don't repeat yourself) 104, 183, 339
DSL (domain-specific language) 217, 247
edge capabilities 67
edge side includes (ESI) 73
elastic load balancer (ELB) 65
Elasticsearch, Logstash, and Kibana (ELK) . See ELK (Elasticsearch, Logstash, and Kibana)-based solutions
Elasticsearch, Logstash, and Kibana (ELK) . See ELK (Elasticsearch, Logstash, and Kibana)-based solutions
ELB (elastic load balancer) 65
ELK (Elasticsearch, Logstash, and Kibana)-based solutions 304–306
end-to-end responsibility 71, 329–330
enterprise service buses (ESBs) 6
environments, staging . SeeAlso production environments
environments, staging . SeeAlso production environments
Erlang virtual machine (BEAM) 182
ERROR level 301
ESBs (enterprise service buses) 6
ESI (edge side includes) 73
event backbone 63
event-based communication 108–110
eventual consistency 108
expectations, setting 104
explicit interfaces 104
exponential back-off strategy 142, 142
failures
fault tolerance
overview of 42
features
feedback loops 139
flat services 59
Flipper 265
Fluentd-based solutions 306–
frameworks
frontends
BFF (backends for frontends) 69–69
full staging environments 258
functions
gateways
consumer-driven gateways 70–71
GCE (Google Kubernetes Engine)
GCP (Google Cloud Platform) 191
GDPR (General Data Protection Regulation) 313
GKE (Google Kubernetes Engine) . See GCE (Google Kubernetes Engine)
GKE (Google Kubernetes Engine) . See GCE (Google Kubernetes Engine)
Google Cloud Platform (GCP) 191
Google Compute Engine (GCE) 191
Google Kubernetes Engine (GKE) 225
Grafana tool
monitoring systems with 275–291
Gunicorn web server 226
half open circuit breaker 148
HAProxy 197
hardware as source of failure 134–134
health checks 135, 150, 233–235
Helm application package manager 350–350
heterogeneity
high cohesion 4
horizontal decomposition 9
hosts
multiple scheduled services per 209–210
multiple static services per 208–208
underlying, deploying services to 207–210
HTTP liveness check 151
IaaS (infrastructure as a service) 191
idempotent 140
images
immutability 201–201, 201, 341
infrastructure as a service (IaaS) 191
infrastructures 9, 191, 335–337
inner-source model 344
installing Jenkins, on Minikube 349–356
instance group 194
interactions, choreographed 110
interfaces 104
internal load balancing 198
investment strategies
InvestmentStrategies service 96
isolated staging environments 258
Java virtual machine (JVM) 182
Jenkins Pipeline 263
Jenkins tool
building pipelines with 246–261
installing on Minikube 349–356
JVM (Java virtual machine) 182
KPIs (key performance indicators) 330
ksonnet 256
kubectl command-line tool 227
kube-proxy 231
Kubernetes platform, running Jenkins on . SeeAlso GCE (Google Kubernetes Engine)
Kubernetes platform, running Jenkins on . SeeAlso GCE (Google Kubernetes Engine)
Linkerd 157
liveness health check 233
load/capacity tests 257
load balancers 56, 150–151, 196–198, 228–230
login screen, Grafana 282
logstash-formatter library 176, 312
managed registries 223
manual tests 257
mapping runtime platforms 57–57
MarketDataClient class 140
messages . SeeAlso asynchronous messages; synchronous messages
messages . SeeAlso asynchronous messages; synchronous messages
metric collection infrastructure 276–282
metrics
microservices
development lifecycle of 18–25
identifying by modeling domains 33–35
scaling through decomposition 6–7
scaling up development of 45–46
microservices . SeeAlso services
microservice scoping 52
Minikube tool, installing Jenkins on 349–356
MkDocs 346
model-view controller (MVC) 19
modes of failure 13
monoliths 19–19, 71–71, 106, 110
multispeed development 103
MVC (model-view controller) 19
nameko framework 166
network communication 61
nginx.conf file 222
NGINX container 221
NodePort service 229
nonbackwards-compatible functionality 135
nonfunctional testing 257
nslookup 241
object-oriented applications 93
object-relational mapping (ORM) 161
observable services 43
OpenAPI specification 82
OpenTracing API 314
operating system packages 203–203
OrderPlaced event 38
OrderRequested event 109
organizations, ownership in 103–104
ORM (object-relational mapping) 161
ownership 103–104, 328–329–331, 331
PaaS (platform as a service) 57, 209
paths
patterns, consistency patterns . SeeAlso CQRS (command-query responsibility segregation) pattern
patterns, consistency patterns . SeeAlso CQRS (command-query responsibility segregation) pattern
pipelines . SeeAlso delivery pipelines
pipelines . SeeAlso delivery pipelines
procedural versus declarative build pipelines 263–263
pip tool 219
PlaceStrategyOrders service 88, 89, 91, 91
platform as a service (PaaS) 57, 209
platforms, mapping runtime platforms . SeeAlso microservice platforms
platforms, mapping runtime platforms . SeeAlso microservice platforms
pods
point-to-point communication 36
positive feedback 136
prepare phase, 2PC 108
principles 342
production
production environments 189–190
product mode 334
Prometheus ecosystem
monitoring systems with 275–291
protocol buffers 346
provisioning virtual machines 192–193
public images, Docker 220
publish-subscribe 64–64, 127–127
Python chassis 166
quality-controlled deployments 42–43
queues . See job queues
queues . See job queues
rabbitmq_queue_messages metric 290
RBAC (role-based access control) 353–354
recovery_timeout parameter 179
reliability
overview of 42
remote_hello method 168
ReplicaSet 226
replication lag 125
request for comments (RFC) 345
RFC (request for comments) 345
robust monitoring stacks 270–274
role-based access control . See RBAC (role-based access control)
role-based access control . See RBAC (role-based access control)
rolling back 114, 241–241, 259
round-robin algorithm 167
routing components 190
RPC-facing services 150
rpc-market_service queue, RabbitMQ 177
run the packer build command 204
runtime management 190
scalability 42
scaling up microservice development 45–46
scanning tools 220
scheduled services, multiple per host 209–210
Scripted Pipeline 247
secure operation 190
security 220
security tests 257
server management 201
service artifact 199
service migration 102
service-oriented architectures (SOAs) 6
service partitioning 99
service practices as source of failures 136–136
services
challenges of designing 132–139
coarse-grained
designing reliable communication 139–149
interactions between tracing and 313–320
maximizing reliability of 150–155
ownership in organizations 103–104
run multiple instances of 194–196
service teams 87
service to host models 207–210
sharding 6
smoke tests 259
SOAs (service-oriented architectures) 6
stacks . See robust monitoring stacks
stacks . See robust monitoring stacks
staging
standardizing communication 156
startup logs 205
StatsD exporter 172, 173, 174, 277–279
statsd-exporter container 277
STDOUT (standard output) 304
storing
subtasks, sagas 112
supporting notifications 97
synchronous communication 36, 163
synchronous messages
synchronous requests 62
systems . See monitoring systems
systems . See monitoring systems
tarballs 223
technical capabilities
overview of 59
tenacity library 140
testing
three-tier architecture 19, 52
Togglz 265
tracing
interactions between services and 313–320
setting up in services 315–320
TradeExecuted event 38
transport-related boilerplate 163
truck factor 41
try-finally statement 253
two-phase commit (2PC) protocol 107
upstream collaborators 37
uptime 130
user management 80
vault 207
VMs (virtual machines) 56, 192–193
worker nodes, components of 231–231
workflow tools 117
workspaces 247
zero-downtime deployments 210