Microsoft announced the alpha release of its open-source, portable, event-driven runtime called Dapr. The aim is to make it easier for developers to build microservice applications.

According to the company, microservices benefits of scalability, loose service coupling and independent deployments come at the expense of increased complexity of distributed systems. In addition, writing an application may involve working with multiple languages, developer frameworks and infrastructure platforms. 

Nevertheless, microservices is expected to grow and uphold 90% of all new apps by 2022, according to the consulting firm IDC in a report.

The new project Dapr is set to make it easier to build resilient, microservice stateless and stateful applications that run on the cloud and edge. It consists of building blocks that are accessed by HTTP or gRPC APIs that work with any programming language. It also includes language-specific SDKs. 

“This enables developers to write a combination of stateless and stateful functions and actors all in the language of their choice. And because these SDKs share the Dapr runtime, you even get cross-language actor and functions support,” Microsoft wrote in a post that described the project. 

Dapr consists of a set of building blocks accessed by standard HTTP or gRPC APIs that can be called from any programming language. 

The alpha release includes some prominent building blocks such as:

  • Service invocation – enables method calls, including retries, on remote services wherever they are running in the supported hosting environment
  • State management – with which stateful services can be easily written, alongside stateless services in the same application. The state store is pluggable
  • Publish and subscribe messaging between services – simplifies horizontal scalability and make them resilient to failure
  • Event driven resource bindings – which 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. 
  • Virtual actors – A pattern for stateless and stateful objects that make concurrency simple with method and state encapsulation.
  • 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.