diff --git a/concepts/README.md b/concepts/README.md index 54473239e..7b759e7de 100644 --- a/concepts/README.md +++ b/concepts/README.md @@ -8,6 +8,10 @@ This directory contains various Dapr concepts. The goal of these documents is to A binding provides defines a bi-directional connection to an external cloud/on-premise service or system. Dapr allows you to invoke the external service through the standard Dapr binding API, and it allows your application to be triggered by events snet by the connected service. +* [**Building blocks**](./architecture/building_blocks.md) + + A building block is a single-purposed API surface backed by one or more Dapr components. Dapr consists of a set of building blocks, with extensibility to add new building blocks. + * **Components** Dapr uses a modular design, in which functionalities are grouped and delivered by a number of *components*, such as [pub-sub](./components/redis.md) and [secrets](./components/secrets.md). Many of the components are pluggable so that you can swap out the default implemenation with your custom implementations. diff --git a/concepts/architecture/building_blocks.md b/concepts/architecture/building_blocks.md new file mode 100644 index 000000000..06cdb7973 --- /dev/null +++ b/concepts/architecture/building_blocks.md @@ -0,0 +1,15 @@ +# Building blocks + +Dapr consists of a set of building blocks that can be called from any programming language through Dapr HTTP or gRPC APIs. These building blocks address common challenges in building resilient, microservices applications. And they catpure and share best practices and patterns that empower distributed application developers. + +![Dapr building blocks](../../images/overview.png) + +## Anatomy of a building block + +Both Dapr spec and Dapr runtime are designed to be extensible +to include new building blocks. A building block is comprised of the following artifacts: + +* Dapr spec API definition. A newly proposed building block shall has its API design incorporated into the Dapr spec. +* Components. A building block may reuse existing [Dapr components](../README#components), or introduce new components. +* Test suites. A new building block implementation should come with associated unit tests and end-to-end scenario tests. +* Documents and samples.