Index

Symbols

2PC (two-phase commit) protocol 107

A

abstraction 66

acbuild command-line tool 217

acceptance testing 257

accidental complexity 12

ACID transaction 106

actions 9294

activity feeds 126

Advanced Message Queuing Protocol (AMQP) 63, 162

aggregating data 59

aggregation 5960

alerts

raising 291293

setting up 287291

alignment 910

ambiguity 99102

AMQP (Advanced Message Queuing Protocol) 63, 162

analytics 127127

anemic services 30

API gateways 3939, 6868

Apollo 71

application boundaries 6671

applications

distributed 106108

observing 293295

architecture

of CQRS pattern 124125

of microservices 515256, 74

role of 341343

artifacts

configuring 206207

defining 200200

immutability of 201201

publishing 254254

standardizing 2223

types of 201206

asset information 81

asynchronous communication patterns 6364

asynchronous messages 6263

autohealing 190

automated deployments 4243

automated tests 257

automation

of production environments 191191

overview of 99, 189189

autonomy

lack of 332332

overview of 88, 329329

autoscaling 190, 194

availability

automation 189189

calculating 130

manual change management 189189

prioritizing 123

small releases 189189

B

backends for frontends . See BFF (backends for frontends)

backends for frontends . See BFF (backends for frontends)

balancing 177180

BDD (behavior-driven development) 78

BEAM (Erlang virtual machine) 182

BFF (backends for frontends) 6969

binary dependencies 200

blue-green deploys pattern 210

bootstrapping 164164

bottlenecks 154

boundaries . See application boundaries

boundaries . See application boundaries

boundary layer 66

bounded contexts 67, 79

build pipelines

configuring 247250

procedural versus declarative 263263

bus factor 41

business capabilities, scoping by 7887

busybox 241

C

cachetools library 144

caching 67, 143144

canaries

on GCE 211213

overview of 236240

capacity 196196

CAP theorem 108, 123

cascading failures 136139

categories 301301

chaos testing 152, 154155

Chaos Toolkit 155

ChargeFailed event 110

chassis 160163

choreographed interactions 110

choreographed sagas 112115

choreography 3739, 9494, 109110

circuit breakers 146148

Clair 220

clients 7174

clusters, deploying to 224242

coarse-grained services

overview of 8787

starting with 99100

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 123125

commit phase, 2PC 108

communication

as sources of failures 135135

asynchronous communication 149149

asynchronous communication patterns 6364

asynchronous messages 6263

by group size 327

designing 139149

event-based communication 108110

locating services 6565

overview of 2121

standardizing 156

synchronous messages

choosing transport 6262

drawbacks of 6262

when to use 6162

using service mesh 157

communication broker 63

compensating actions 113

components

adding to Docker compose files 276276

of master nodes 230230

of worker nodes 231231

compose files 276276

configuration drift 201

configuring

build pipelines 247250

Grafana 280282

Prometheus 280280

service artifacts 206207

StatsD exporter 277279

ConnectionError exception 179

consistency patterns 118119

constraints 103

Consul 65

consumer-driven gateways 7071

containerizing services 215224

containers

overview of 22, 205206

running 220222

container schedulers 210210

contexts, nested 8686

continuous delivery 245

continuous deployment 245

contracts

between services 1616

overview of 3737

control 103

Conway's Law 327328

coordinators 59

correlation IDs 120

CQRS (command-query responsibility segregation) pattern

architecture of 124125

challenges 125127

optimistic updates 126126

overview of 63

polling 127127

publish/subscribe 127127

critical paths 6060

cross-functionally 330

CRUD (create, read, update, delete) 30, 108

cyclic dependencies 114

D

DAG (direct acyclic graph) 314

dark launches 264264

data

aggregating 59

storing copies of 122123

stubbed 145145

data composition 121

data warehouses 127

DDD (domain-driven design) 79

deadlines 145

decomposition

preparing for 100100

scaling through 67

degradation 143143

delivery pipelines, building

dark launches 264264

deployment pipeline 244246

feature flags 2324, 265266

dependencies 135135

deploying

microservices 2124

services 187191199, 213

to clusters 224242

to production 259261

to staging 255257

to underlying hosts 207210

without downtime 210213

deployment pipelines 57, 190, 244246

deployment process 8, 43

deployments

automated 4243

quality-controlled 4243

deployment target 190

described feature 166

design reviews 345345

development process 43

direct acyclic graph (DAG) 314

distributed applications 106108

distributed computing 13, 129

distributed systems 1616

divergence . See technical divergence

divergence . See technical divergence

docker-compose, installing 140

docker-compose up command 180, 281

Docker platform 276276

docker version command 355

documentation 346346

domain-driven design (DDD) 79

domain modeling 7879

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

E

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

Elasticsearch engine 305305

ELB (elastic load balancer) 65

ELK (Elasticsearch, Logstash, and Kibana)-based solutions 304306

end-to-end responsibility 71, 329330

engineering culture 2627

enterprise service buses (ESBs) 6

environments, staging . SeeAlso production environments

environments, staging . SeeAlso production environments

Erlang virtual machine (BEAM) 182

ERROR level 301

error reporting 174175

errors 273273

ESBs (enterprise service buses) 6

ESI (edge side includes) 73

event backbone 63

event-based communication 108110

events 109110

event sourcing 119120

eventual consistency 108

expectations, setting 104

explicit interfaces 104

exponential back-off strategy 142, 142

F

failures

cascading 136139

sources of 133136

failure zones 195195

fallbacks 143145

fault tolerance

overview of 42

validating 152155

feature flags 265266

features

building 3239

designing 75104

taking to production 4045

feedback loops 139

flags 265266

flat services 59

Flipper 265

Fluentd-based solutions 306

Fluentd daemon 304, 307

frameworks

building reusable 159183

overview of 156156

friction 1313, 258

frontends

BFF (backends for frontends) 6969

frontend monoliths 7171

micro-frontends 7274

full staging environments 258

functional redundancy 144144

functions

grouping teams across 332333

grouping teams by 330332

G

gateways

API gateways 3939, 6868

consumer-driven gateways 7071

gauges 273273

GCE (Google Kubernetes Engine)

canaries on 211213

rolling deploys on 211213

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

graceful degradation 143143

Grafana tool

configuring 280282

monitoring systems with 275291

GraphQL 70, 71

Gunicorn web server 226

H

half open circuit breaker 148

HAProxy 197

hardware as source of failure 134134

health checks 135, 150, 233235

Helm application package manager 350350

heterogeneity

overview of 182183

technical heterogeneity 1212

high cohesion 4

higher order services 5960

histograms 274274

holdings 130, 136

homogeneity 343343

horizontal decomposition 9

hosts

multiple scheduled services per 209210

multiple static services per 208208

single service to 207207

underlying, deploying services to 207210

HTTP liveness check 151

I

IaaS (infrastructure as a service) 191

idempotent 140

identifiers 301301

images

building 218220, 251252

overview of 216218

storing 223224

immutability 201201, 201, 341

infrastructure as a service (IaaS) 191

infrastructures 9, 191, 335337

inner-source model 344

installing Jenkins, on Minikube 349356

instance group 194

interactions, choreographed 110

interfaces 104

internal load balancing 198

interruption 118118

interwoven sagas 117118

investment strategies

creating 7985

placing orders 8892

InvestmentStrategies service 96

isolated staging environments 258

isolation 4646

J

Jaeger 315, 316

Java virtual machine (JVM) 182

Jenkins Pipeline 263

Jenkins tool

building pipelines with 246261

installing on Minikube 349356

running on Kubernetes 349356

jitter 142, 148

job queues 6364

JVM (Java virtual machine) 182

K

Kibana plugin 305305

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)

configuring RBAC 353354

creating namespaces 350351

creating volume 350351

Kubernetes platform, running Jenkins on . SeeAlso GCE (Google Kubernetes Engine)

installing Jenkins 351353

setting up Helm 350350

testing 354356

L

latency 272272

launches 264264

levels 301301

limiting 177180

Linkerd 157

liveness health check 233

living documentation 346346

load/capacity tests 257

load balancers 56, 150151, 196198, 228230

load testing 152, 153154

locking 118118

logging 176177

login screen, Grafana 282

logs 67, 305

logstash-formatter library 176, 312

Logstash tool 302, 305305

loose coupling 4, 8

M

managed registries 223

manual tests 257

mapping runtime platforms 5757

market-data 130, 136

MarketDataClient class 140

master nodes 230230

messages . SeeAlso asynchronous messages; synchronous messages

messages . SeeAlso asynchronous messages; synchronous messages

metric collection infrastructure 276282

metrics

overview of 67, 172174

types of 273274

micro-frontends 7274

microservice platforms 5657

microservices

advantages of 1113, 3032

architecture of 515256, 74

challenges of 1318

deploying 2124

designing 1921

development lifecycle of 1825

identifying by modeling domains 3335

key principles of 710

observing 2425

scaling through decomposition 67

scaling up development of 4546

microservices . SeeAlso services

users of 1011

microservice scoping 52

microservice teams 325348

migration 100102

Minikube tool, installing Jenkins on 349356

MkDocs 346

modeling domains 3335

model-view controller (MVC) 19

modes of failure 13

monitoring systems 269295

monoliths 1919, 7171, 106, 110

multispeed development 103

MVC (model-view controller) 19

N

nameko framework 166

namespaces 350351

nested contexts 8686

network communication 61

nginx.conf file 222

NGINX container 221

NodePort service 229

nonbackwards-compatible functionality 135

noncritical paths 6060

nonfunctional testing 257

notifications, sending 9697

nslookup 241

O

object-oriented applications 93

object-relational mapping (ORM) 161

observability 1818, 171177

observable services 43

on-call support 337338

OpenAPI specification 82

open source models 343344

OpenTracing API 314

operating system packages 203203

optimistic updates 126126

orchestrated sagas 115117

orchestration 9494

OrderCreated event 64, 109

OrderPlaced event 38

OrderRequested event 109

organizations, ownership in 103104

ORM (object-relational mapping) 161

ownership 103104, 328329331, 331

P

PaaS (platform as a service) 57, 209

paths

critical 6060

noncritical 6060

patterns, consistency patterns . SeeAlso CQRS (command-query responsibility segregation) pattern

patterns, consistency patterns . SeeAlso CQRS (command-query responsibility segregation) pattern

pipelines . SeeAlso delivery pipelines

building reusable 262263

building with Jenkins 246261

pipelines . SeeAlso delivery pipelines

overview of 57, 246

procedural versus declarative build pipelines 263263

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

designing 226228

running 226228232, 233

point-to-point communication 36

polling 127127

positive feedback 136

prepare phase, 2PC 108

principles 342

production

deploying to 259261

taking features to 4045

production environments 189190

product mode 334

Prometheus ecosystem

configuring 280280

monitoring systems with 275291

protocol buffers 346

provisioning virtual machines 192193

public images, Docker 220

publish-subscribe 6464, 127127

Python chassis 166

Q

quality-controlled deployments 4243

queries 105120127, 128

queues . See job queues

queues . See job queues

R

rabbitmq_queue_messages metric 290

RabbitMQ broker 167, 282284

rate limits 67, 152152

RBAC (role-based access control) 353354

readability of logs 301303

readiness checks 151, 233

recovery_timeout parameter 179

redundancy 144144

releases 189189

reliability

defining 130132

maximizing 150155

overview of 42

validating 152155

remote_hello method 168

ReplicaSet 226

replication lag 125

reporting 127127

request for comments (RFC) 345

resiliency 9921, 21, 4343

retirement 100102

retries 140143

RFC (request for comments) 345

risk, reducing 1313, 164164

robust monitoring stacks 270274

role-based access control . See RBAC (role-based access control)

role-based access control . See RBAC (role-based access control)

rolling back 114, 241241, 259

rolling deploys 211213

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

runtime platforms 5757, 190

S

sagas 111120

saturation 273273

scalability 42

scaling up microservice development 4546

scanning tools 220

scheduled services, multiple per host 209210

scheduling models 210210

scoping 1515

Scripted Pipeline 247

secure operation 190

security 220

security tests 257

self-healing 195196

sending notifications 9697

server images 203204

server management 201

service artifact 199

service collaboration 3637

service discovery 65, 167170

service health 150151

service mesh 157158

service migration 102

service-oriented architectures (SOAs) 6

service partitioning 99

service practices as source of failures 136136

service responsibility 3737

services

aggregation 5960

API gateways 3939

behavior across 297300

building artifacts 199207

capabilities of 5859

challenges of designing 132139

coarse-grained

overview of 8787

starting with 99100

connecting multiple 241242

containerizing 215224

contracts between 1616

critical paths 6060

deploying 187191199, 213

designing 129158

designing reliable communication 139149

higher order services 5960

interactions between tracing and 313320

locating 6565

maximizing reliability of 150155

nested contexts and 8686

noncritical paths 6060

ownership in organizations 103104

run multiple instances of 194196

safety of 156158

scoping 2020

setting up tracing in 315320

to underlying hosts 207210

without downtime 210213

service teams 87

service to host models 207210

sharding 6

short-circuiting 118118

silos 332332

smoke tests 259

SOAs (service-oriented architectures) 6

sources 301301

spans 314315

stability 189189

stacks . See robust monitoring stacks

stacks . See robust monitoring stacks

staging

deploying to 255257

environments 258258

standardizing communication 156

startup logs 205

startups 192192

state changes 231231

static services 208208

StatsD exporter 172, 173, 174, 277279

statsd-exporter container 277

STDOUT (standard output) 304

stores 9294

storing

copies of data 122123

images 223224

stubbed data 145145

subtasks, sagas 112

supporting notifications 97

synchronous communication 36, 163

synchronous messages

choosing transport 6262

drawbacks of 6262

when to use 6162

synchronous requests 62

systems . See monitoring systems

systems . See monitoring systems

T

tarballs 223

team models 330340

teams, challenges of 1616

technical capabilities

overview of 59

sending notifications 9697

when to use 9898

technical divergence 4546

technical heterogeneity 1212

tenacity library 140

testing

chaos testing 154155

Jenkins on Minikube 354356

load testing 153154

three-tier architecture 19, 52

timeouts 145146

timestamps 300300

Togglz 265

traces, visualizing 320324

tracing

interactions between services and 313320

setting up in services 315320

spans and 314315

TradeExecuted event 38

traffic 273273

transactions 105128

transparency 99, 42, 4345

transport 6262

transport-related boilerplate 163

truck factor 41

try-finally statement 253

two-phase commit (2PC) protocol 107

U

updates, optimistic 126126

upstream collaborators 37

uptime 130

use case, scoping by 8794

user management 80

V

vault 207

VMs (virtual machines) 56, 192193

volatility 78, 9496

volume 350351

W

worker nodes, components of 231231

workflow tools 117

workspaces 247

Z

zero-downtime deployments 210

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset