Book Image

Practical Microservices with Dapr and .NET

By : Davide Bedin
Book Image

Practical Microservices with Dapr and .NET

By: Davide Bedin

Overview of this book

Over the last decade, there has been a huge shift from heavily coded monolithic applications to finer, self-contained microservices. Dapr is a new, open source project by Microsoft that provides proven techniques and best practices for developing modern applications. It offers platform-agnostic features for running your applications on public cloud, on-premises, and even on edge devices. This book will help you get to grips with microservice architectures and how to manage application complexities with Dapr in no time. You'll understand how Dapr offers ease of implementation while allowing you to work with multiple languages and platforms. You'll also understand how Dapr's runtime, services, building blocks, and software development kits (SDKs) help you to simplify the creation of resilient and portable microservices. Dapr provides an event-driven runtime that supports the essential features you need to build microservices, including service invocation, state management, and publish/subscribe messaging. You'll explore all of those in addition to various other advanced features with this practical guide to learning Dapr. By the end of this book, you'll be able to write microservices easily using your choice of language or framework by implementing industry best practices to solve problems related to distributed systems.
Table of Contents (16 chapters)
1
Section 1: Introduction to Dapr
4
Section 2: Building Microservices with Dapr
10
Section 3: Deploying and Scaling Dapr Solutions

What this book covers

Chapter 1, Introducing Dapr, introduces you to the basics of Dapr, briefly exposing the features that make Dapr interesting for new cloud-native applications as well as for inserting microservices into existing applications.

Chapter 2, Debugging Dapr Solutions, focuses on how to set up your Dapr development environment in VS Code to locally debug simple Dapr solutions as well as more complex ones.

Chapter 3, Service-to-Service Invocation, instructs you on how services can discover and invoke each other via the Dapr infrastructure. With examples, you will understand how to implement services and invoke them from other Dapr-aware components and Dapr-unaware/external clients.

Chapter 4, Introducing State Management, covers a centerpiece of Dapr: the management of state for services and actors. This chapter illustrates how a Dapr solution can manage state with different store types.

Chapter 5, Publish and Subscribe, introduces publish/subscribe – the messaging pattern used by Dapr to enable decoupled interactions between components. You will learn about the benefits of the messaging-based pattern and how to implement it in Dapr.

Chapter 6, Resource Bindings, introduces bindings in Dapr, which enable you to design event-driven microservices and to invoke external resources via a pluggable configuration.

Chapter 7, Using Actors, explains the powerful virtual actor model provided by Dapr, how to leverage it in a microservices-style architecture, and the pros and cons of different approaches.

Chapter 8, Deploying to Kubernetes, covers the basic differences in operations from local self-hosted environments to Kubernetes mode. Specifically using Azure Kubernetes Service, we will deploy a sample Dapr application composed of several microservices to Kubernetes.

Chapter 9, Tracing Dapr Applications, introduces the observability options in Dapr, by exploring how traces, logs, and metrics are emitted and can be collected in Dapr using Zipkin, Prometheus, and Grafana.

Chapter 10, Load Testing and Scaling Dapr, explains how the scaling of Dapr services and actors works in Kubernetes. Also, by leveraging autoscalers, you will learn how to scale resources based on usage metrics. You will also learn how to load test a Dapr solution by simulating user behaviors via the Locust testing tool.

Appendix, Microservices Architecture with Dapr, discusses the relevance of microservices architecture and explores how Dapr, as a runtime, can make it easier to adopt this style.