What this book covers
Chapter 1, The Sample Application, explores the sample application, starting with an architectural overview and going into implementation details of entities, value objects, services, factories, and aggregates.
Chapter 2, The Producer-Consumer Pattern, reviews the fundamentals of the producer-consumer pattern (also known as the publisher-subscriber pattern) and how this pattern is implemented in the application through code examples.
Chapter 3, Message Brokers, covers details and implementation methods related to the use of message brokers within the larger ecosystem of the application. The term “message broker” will be defined, examples of technologies that act as message brokers will be discussed, and evaluations will be made to facilitate the choice of the appropriate technology to address the needs of the application.
Chapter 4, Domain Model and Asynchronous Design, covers the details of the domain model, including commands and events. It also covers the implementation of asynchronous events and when to use them within the application.
Chapter 5, Containerization and Local Environment Setup, examines how containerization is used to isolate functionality for build and deployment, and how to set up your local environment to enable this workflow.
Chapter 6, Localized Testing and Debugging of Microservices, takes your local environment further, building upon the environment setup and addition of the Dockerfile. You will learn how to test and debug your microservice in your local environment.
Chapter 7, Microservice Observability, reviews different types of observability at the service level, frameworks and technologies that enable observability, and how greater observability can be helpful in the application’s ecosystem for both developers and operations.
Chapter 8, CI/CD Pipelines and Integrated Testing, reviews common continuous integration (CI) and continuous delivery (CD) strategies, practical implementations using GitHub Actions, and how to integrate baseline and regression testing into your pipelines.
Chapter 9, Fault Injection and Chaos Testing, reviews the concepts of fault tolerance and fault injection as it relates to software testing. More complex testing methods, such as stress and chaos testing, will be examined and you will learn how these techniques can be implemented to validate resilience and fault tolerance.
Chapter 10, Modern Design Patterns for Scalability, reviews different design patterns that aim to enable service scalability, as well as cover implementing scalability constructs in two popular deployment targets (Kubernetes and Azure API applications).
Chapter 11, Minimizing Data Loss, teaches specific techniques for minimizing or eliminating data loss as a result of scaling operations or as a function of increased service resiliency. Paradigms such as eventual consistency and guaranteed delivery will be reviewed along with a refresher on identifying data that may be susceptible to loss and defining how much if any, loss is acceptable.
Chapter 12, Service and Application Resiliency, helps you implement patterns, from what you’ve learned about scalability and data loss, that will guarantee service uptime, business continuity, and end-user satisfaction. Part of ensuring a consistent experience is generating meaningful messages to the end user which can be handled in a variety of methods.
Chapter 13, Telemetry Capture and Integration, examines different options for capturing application-level and service-level telemetry, and how to ensure that relevant information is captured without producing unnecessary noise or overhead. You will also learn how to pinpoint meaningful telemetry and aggregate that as opposed to aggregating everything, which can lead to confusion, large storage footprints, and a distrust of the information captured.
Chapter 14, Observability Revisited, in this chapter, you will learn about methodologies for publishing service metadata to your organization, cataloging and versioning microservice metadata, and how to promote the discovery of shared services within an organization.