Over the last few years, microservice architectures have become the popular choice among cloud developers due to its advantages such as scalability, loose service coupling and independent deployments. In fact, 90% of new apps by 2022 are predicted to feature microservice architectures. However, building apps based on microservice architectures is a difficult process. Microsoft today announced Dapr to solve this problem. Dapr will enable developers using any language and any framework to easily build resilient, portable microservices applications that run on the cloud and edge, whether writing fresh code or migrating legacy code. Technically, Dapr is an open source, portable, event-driven runtime. Read about the building blocks of Dapr below:
- Service Invocation – Resilient service-to-service invocation enables method calls, including retries, on remote services wherever they are running in the supported hosting environment.
- State management – With state management for key/value pairs, long running, highly available, stateful services can be easily written, alongside stateless services in the same application. The state store is pluggable and can include Azure Cosmos or Redis, with others such as AWS DynamoDB on the component roadmap.
- Publish and subscribe messaging between services – Publishing events and subscribing to topics between services enables event-driven architectures to simplify horizontal scalability and make them resilient to failure.
- Event driven resource bindings – Resource bindings and triggers build further on event-driven architectures for scale and resiliency by receiving and sending events to and from any external resources such as databases, queues, file systems, blob stores, webhooks, etc. For example, your code can be triggered by a message on an Azure EventHub service and write data to Azure CosmosDB.
- Virtual actors – A pattern for stateless and stateful objects that make concurrency simple with method and state encapsulation. Dapr provides many capabilities in its virtual actor runtime including concurrency, state, life-cycle management for actor activation/deactivation and timers and reminders to wake up actors.
- Distributed tracing between services – Easily diagnose and observe inter-service calls in production using the W3C Trace Context standard and push events to tracing and monitoring systems.
You can learn more about Dapr here.