As this ebook edition doesn't have fixed pagination, the page numbers below are hyperlinked for reference only, based on the printed edition of this book.
Symbols
.NET
advanced logging options 261
.NET Core
using, as development stack for microservices 12, 13
.NET logging API
A
aggregate ID 73
aggregate pattern
purpose 19
usage 19
relationships 20
relationships, handling that span 21
versus entities 21
Amazon Web Services (AWS) 128
anemic domain model
versus rich domain model 23-26
Apache Kafka 47
cache management, adding 164
client (fronted) 152
database 152
disadvantages 155
implementing 155
implementing, with Azure API Management 156
response aggregation, adding 167-169
server (backend) 152
thick API gateway 156
API Gateways 257
append-only data store 74
ASP.NET Core API
Azure Service Bus, implementing 51-55
ASP.NET Core, for microservices
benefits 12
ASP.NET Core health checks
implementing 141
liveness health checks, adding 141-146
readiness health checks, adding 147
ASP.NET Core web API
asynchronous communication 31, 42, 250
asynchronous communication, between microservices
atomicity, consistency, isolation, and durability (ACID) 19, 73
authentication 178
authorization 178
availability 46
Azure API Management
API gateway pattern, implementing with 156-160
Azure Application Insights 262
Azure Container Instances (ACI) 148
Azure Container Registry (ACR) 212
Azure Kubernetes Service (AKS) 148
implementing, in ASP.NET Core API 51-55
B
backend for frontend (BFF) pattern 170, 171, 257
implementing, with Ocelot 171-174
data points, compiling 179
security, implementing 182
used, for securing API 182-185
used, for securing communications 178, 179
bounded context 16
Bus Factory 50
business approach, for microservices
availability 9
deployment 11
development speed 10
improved data storage 10
monitoring 10
scalability 9
C
C# 33
caching layer
used, for implementing resiliency 128
CAP theorem 46
cardinalities 95
cardinalities, relational database
many-to-many 95
one-to-many 95
one-to-one 95
cons 118
pros 118
Circuit Breaker Pattern 93, 127, 131
circuit breaker policies
circuit breaker policy
Code-First technique 103
command
implementing 62
Command and Query Responsibility Separation (CQRS) patterns 250, 251
disadvantages 60
need for, microservices development 58
state, reading with 85
command handler
command-line interface (CLI) 212
command messages 45
command model
Command Query Separation (CQS) 250
concurrency management 46
consistency 46
constraint 95
containerization 211
containerized application
container registry
containers, publishing to 227
custom images, creating 228-230
custom images, uploading 228-230
publishing, to container registry 227
using, in microservices development 210
cookies 178
Cosmos DB 59
CQRS, in .NET
Mediator pattern, using with 60-62
Create, Read, Update, and Delete (CRUD) 21, 251
D
Dapper 100
database
developing 93
non-relational databases 97
ORM, selecting 100
relational databases 94
database design patterns 12
database development technique
Code-First 103
Schema-First 103
Database-First technique 103
database-per-service 91
database-per-service approach 10
database-per-service pattern 73, 252
non-relational databases 253
one database per service 253, 254
relational databases 252
single database technology per service 90, 91
single database, using for several services 253
using 90
DataDog 262
data transfer object (DTO) 65, 186
dead-letter queue 127
denial-of-service (DoS) 131
distributed denial-of-service (DDoS) 154
docker-compose 221
Dockerfile
containerized application, launching 218-220
native .NET container support, using 220, 221
Docker Swarm 11
document stores
examples 83
domain-driven design (DDD) 15, 18, 19, 67
keywords, exploring 16
pros and cons, exploring 18
domain events 75
actions 75
and event sourcing 75
exploring, in application 75-80
downstream 161
E
Elastic Container Registry (ECR) 227
Elastisearch, Logstash, and Kibana (ELK) 262
Elmah.io 240
enhanced logging
for distributed tracing 245-247
entities 21
need for 21
practical uses, in code 22
versus aggregates 21
versus value objects 26
Entity Framework Core 100
event messages 45
events 72
audit logs 73
entity state identification 73
historical 72
immutability 72
key attributes 72
persistent events 73
single occurrence 72
event sourcing 73
cons 74
implementing, with non-relational database 83-85
implementing, with relational database 82, 83
event sourcing patterns 73, 251, 252
event store
creating 81
eventual consistency 10, 46, 47, 93
exchanges 48
F
first-in-first-out (FIFO) 43
foreign key 95
full-stack developer role 93
G
gateway pattern 9
Google Container Registry (GCR) 227
Google Remote Procedure Call (gRPC) 4
Grafana 11
graph database 98
graphical UI (GUI) 219
gRPC communication
versus HTTP communication 37, 38
gRPC synchronous communication
GUID 22
H
degraded state 139
healthy state 139
liveness health check 140
readiness health checks 140, 141
unhealthy state 139
health probes
configuring, in orchestrators 148, 150
HTTP asynchronous communication 43
HttpClient 33
HTTP communication
versus gRPC communication 37, 38
HTTP Status Code
categories 33
HTTP synchronous communication
I
IBM DB2 94
IdentityServer 191
API security considerations 207
used, for securing API 202-205
used, for securing Ocelot API gateway 206, 207
IdentityServer4
using, to secure microservices 191, 192
indexes 94
infrastructure patterns 12
integration patterns 12
inversion of control (IoC) 130
J
Jaeger 262
JavaScript Object Notation (JSON) 98
jwt.io 181
K
Kafka 10
key-value database 98
Kibana 11
kubernetes 11
L
LINQ 100
liveness health check 140
platform, selecting 242
logging 232
need for 232
Loggr 240
LogLevel methods
parameters 236
LogStash 11
M
manifest 148
many-to-many relationship 95, 96
Marathon 11
Mediator pattern
using, with CQRS in .NET 60-62
MediatR 75
MediatR pattern 251
message broker
used, for implementing resiliency 127
message bus
configuring 47
microservice communication
microservice design patterns 18, 19
microservices 3, 4, 138, 139, 259, 260
business need, assessing 8
design pattern, exploring 12
feasibility, determining of implementing 12
.NET Core, using as development stack 12, 13
securing, with IdentityServer4 191, 192
synchronous communication, disadvantages between 38
microservices development
containers, using 210
CQRS pattern 58
Microsoft SQL Server 10
models 103
monolith
architecture, challenges 5
MySQL / MariaDB 94
N
native .NET container support
Neo4j 253
NHibernate 100
NLog 240
non-relational database 97, 253
event sourcing, implementing with 83-85
using, scenarios 100
advantages 98
disadvantage 98
NoSQL databases, types
document database 98
graph database 98
key-value database 98
O
OAuth, Azure Active Directory 207
object-relational mapping (ORM) 59
Ocelot 257
API gateway pattern, implementing with 160-164
BFF pattern, implementing with 171-174
DownstreamHostAndPort 163
DownstreamPathTemplate 163
DownstreamScheme 163
GlobalConfiguration 163
routes 162
UpstreamHttpMethod 163
UpstreamPathTemplate 163
Ocelot API gateway
securing, with IdentityServer 206, 207
Okta 207
one-to-many relationship 95
one-to- one relationship 95
Open Container Initiative (OCI) 212
OpenID Connect 191
OpenTelemetry 262
operating system (OS) 211
Oracle Database 94
orchestra 119
orchestration 119
orchestration pattern 156
orchestration saga implementation 119, 120
cons 121
pros 121
rolling back, on failure 120
orchestrator 119
health probes, configuring 148-150
overambitious gateway 156
P
PaperTrail 11
partition tolerance 46
poisoned messages 127
Polly 132
circuit breaker policy with 133, 134
PostgreSQL 94
Postman 190
primary key 94
public container registries
versus private container registries 227, 228
Pub-Sub communication 43
Q
query
implementing 66
invoking 68
query handler
query model
creating 66
queues 48
R
implementing, in ASP.NET Core web API 48-50
readiness health checks 140, 141
adding 147
read-only data store 74
Redis 253
Redis Cache 47
used, for implementing resiliency 128, 129
referential integrity 95
relational databases 94-96, 252
event sourcing, implementing with 82, 83
IBM DB2 94
MySQL / MariaDB 94
Oracle Database 94
PostgreSQL 94
SQLite 94
SQL Server 94
using, scenarios 99
relationship 95
Remote Procedure Call (RPC) 35
replaying 73
repository pattern
Representational State Transfer (REST)
using, benefits 37
Representational State Transfer (REST) API 32
methods 32
resiliency
implementing, with caching layer 128
implementing, with message broker 127
implementing, with Redis Cache 128-131
resiliency patterns 12
resilient microservices 255, 256
REST communication
merits 37
retry policies 127
rich domain model
versus anemic domain model 23-26
Role-based access control (RBAC) 227
S
saga pattern
compensable transactions 114
considerations 115
exploring 114
issues 115
pivotal transactions 114
retryable transactions 114
rolling back, on failure 117, 118
using, across services 254, 255
schema-per-service 90
security patterns 12
separation of concerns (SoC) 60
Seq 262
used, for integrating log aggregation 242-244
Serilog
service-level agreements (SLAs) 60
service resiliency
failure scenarios, handling 126, 127
need for 126
session variables 178
SignalR hub 77
single-sign-on (SSO) 191
Software-as-a-Service (SaaS) 160
Splunk 11
SQLite 94
SQL Server 94
SQL Server Management Studio (SSMS) 229
storage design patterns 12
Swagger UI 190
synchronous communication 31, 42, 250
disadvantages, between microservices 38
implementing 32
use cases 30
T
tables-per-service pattern 90
thick API gateway 156
ti claim 181
timestamp 73
U
ubiquitous language 16
UNIQUE index 83
upstream 161
user interface (UI) 212
V
versus entities 26
virtual machines (VMs) 210
Visual Studio Code 12
W
Web App for Containers (WAC) 148
web applications
securing, challenges 178
Y
YAML Ain’t Markup Language (YAML) 148
3.16.69.106