IMPLEMENTING EVENT-DRIVEN MICROSERVICES ARCHITECTURE IN .NET 7 : develop event-based distributed apps that can scale with ever-changing business demands using C# 11 and .NET 7 /

Saved in:
Bibliographic Details
Author / Creator:Garverick, Joshua, author.
Edition:1st edition.
Imprint:[S.l.] : PACKT PUBLISHING LIMITED, 2023.
Description:1 online resource
Language:English
Subject:
Format: E-Resource Book
URL for this record:http://pi.lib.uchicago.edu/1001/cat/bib/13709173
Hidden Bibliographic Details
Other authors / contributors:McIver, Omar Dean, author.
ISBN:1803230401
9781803230405
Summary:Implement modern design patterns that leverage domain-driven data, to achieve resiliency and scalability for data-dependent applications Key Features Learn the tenets of event-driven architecture, coupled with reliable design patterns to enhance your knowledge of distributed systems and build a foundation for professional growth Understand how to translate business goals and drivers into a domain model that can be used to develop an app that enables those goals and drivers Identify areas to enhance development and ensure operational support through the architectural design process Book Description This book will guide you through various hands-on practical examples for implementing event-driven microservices architecture using C# 11 and .NET 7. It has been divided into three distinct sections, each focusing on different aspects of this implementation. The first section will cover the new features of .NET 7 that will make developing applications using EDA patterns easier, the sample application that will be used throughout the book, and how the core tenets of domain-driven design (DDD) are implemented in .NET 7. The second section will review the various components of a local environment setup, the containerization of code, testing, deployment, and the observability of microservices using an EDA approach. The third section will guide you through the need for scalability and service resilience within the application, along with implementation details related to elastic and autoscale components. You'll also cover how proper telemetry helps to automatically drive scaling events. In addition, the topic of observability is revisited using examples of service discovery and microservice inventories. By the end of this book, you'll be able to identify and catalog domains, events, and bounded contexts to be used for the design and development of a resilient microservices architecture. What you will learn Explore .NET 7 and how it enables the development of applications using EDA Understand messaging protocols and producer/consumer patterns and how to implement them in .NET 7 Test and deploy applications written in .NET 7 and designed using EDA principles Account for scaling and resiliency in microservices Collect and learn from telemetry at the platform and application level Get to grips with the testing and deployment of microservices Who this book is for This book will help .NET developers and architects looking to leverage or pivot to microservices while using a domain-driven event model.
Other form:Print version: Garverick, Joshua Implementing Event-Driven Microservices Architecture In . NET 7 Birmingham : Packt Publishing, Limited,c2023
Table of Contents:
  • Cover
  • Title Page
  • Copyright and Credits
  • Contributors
  • About the reviewers
  • Table of Contents
  • Preface
  • Part 1: Event-Driven Architecture and .NET 7
  • Chapter 1: The Sample Application
  • Technical requirements
  • Exploring business drivers and the application
  • Reviewing the domain model
  • Assessing architectural structures and paradigms
  • A high-level logical architecture
  • Event sourcing
  • Command-Query Responsibility Segregation
  • Reviewing the implementation details
  • The Visual Studio solution topology
  • Identity and Access Management considerations
  • Event structure and schema
  • Local development and debugging
  • New .NET 7 features
  • Summary
  • Questions
  • Further reading
  • Chapter 2: The Producer-Consumer Pattern
  • Technical requirements
  • Examining producers and consumers
  • Relating to real-world examples
  • Enabling event-driven architectures
  • Understanding the adoption curve
  • Exploring implementation details in code
  • The producer code
  • The consumer code
  • Event handling
  • Reviewing implementation details in infrastructure
  • Topics
  • Streams and tables
  • Aggregate storage
  • Summary
  • Questions
  • Further reading
  • Chapter 3: Message Brokers
  • Technical requirements
  • What is a message broker?
  • Queue-based technology
  • Cache-based technology
  • Stream-based technology
  • Inspecting messaging protocols, schemas, and delivery patterns
  • Messaging protocols
  • Standard and custom schemas
  • Message delivery patterns
  • Implementing message broker technologies
  • Reviewing essential Kafka components
  • Enabling resiliency and scalability
  • Summary
  • Questions
  • Further reading
  • Chapter 4: Domain Model and Asynchronous Events
  • Technical requirements
  • Solution structure
  • Core library review
  • Reviewing domain structures and components
  • Equipment
  • Station
  • Maintenance
  • Scheduling
  • Notifications
  • Passenger
  • Identification
  • Using asynchronous actions
  • Benefits of asynchronous programming
  • Asynchronous parallel processing
  • Summary
  • Questions
  • Further reading
  • Part 2: Testing and Deploying Microservices
  • Chapter 5: Containerization and Local Environment Setup
  • Technical requirements
  • Reviewing containerization fundamentals
  • Development benefits
  • Setting up the local environment
  • Creating local infrastructure using Docker
  • Leveraging GitHub Codespaces and Dev Containers
  • Using Dockerfiles to build and run locally
  • Sequential versus multi-stage files
  • Adding services to the Docker Compose file
  • Summary
  • Questions
  • Further reading
  • Chapter 6: Localized Testing and Debugging of Microservices
  • Technical requirements
  • Configuring orchestration and containers
  • Everything as Code (EaC)
  • Creating container images
  • Debugging in containers
  • Debugging individual microservices
  • Orchestrating and debugging all services
  • Fixing the Debug custom image
  • Testing against containers