BETA
This is a BETA experience. You may opt-out by clicking here

More From Forbes

Edit Story

Microsoft Aims To Simplify Cloud Native Development With The Dapr Project

Following
This article is more than 3 years old.

Microsoft announced the availability of Distributed Application Runtime (Dapr) 1.0, the open source project that dramatically simplifies cloud native development. 

Announced in 2019, Dapr is an open source, portable, event-driven runtime that makes it easy for developers to build microservices that can run in the cloud or at the edge. 

Microsoft has a long history of building platforms and tools for developers. During the client/server era, Visual Basic dominated the market for building GUI applications. The Common Language Runtime (CLR) and Visual Studio combination became popular for building web-based, distributed applications. With Dapr, Microsoft wants to deliver a platform that targets modern application development based on containers, microservices deployed in the cloud, and at the edge. 

Unlike CLR, Dapr is not a proprietary runtime and framework from Microsoft. It is an open source project that aims to provide essential building blocks of cloud native application development to developers. Dapr is based on containers and integrates well with Kubernetes. It does the plumbing and heavy lifting involved in developing a modern, highly distributed application based on the microservices paradigm. 

Dapr is a collection of essential building blocks which are common to most microservices applications. 

The service invocation layer makes it easy to connect the dots across multiple microservices packaged and deployed as containers. For example, developers can easily integrate individual services written in various languages without explicitly writing the invocation code. Dapr acts as a proxy to discover and route the calls between services without any hardwiring. This approach makes it easy to replace different versions of the same service or even different services on the fly without changing the code. 

State management of microservices is a considerable challenge for developers. Dapr provides an implicit mechanism based on Redis backend to persist data without the need to write code. Developers can easily swap out Redis with any database, including MongoDB, DynamoDB or SQL Server.

Since microservices are loosely coupled and work asynchronously, developers are expected to integrate message queue or broker infrastructure to implement the pub/sub pattern. Dapr comes with Redis Streams as the default message broker. Developers can leverage it to decouple services through the pub/sub pattern. The best thing about Dapr’s message queue architecture is that the default broker can be easily replaced with RabittMQ, MQTT or managed cloud-based messaging services such as Amazon SQS, Google Cloud Pub/Sub and Azure Service Bus. 

The bindings building block of Dapr brings extreme modularity and composability to microservices. It provides Lego-like plug-and-play capabilities where developers can assemble a set of services that work together. Each binding can be configured as an input or output. For example, by combining Azure CosmosDB with Apple Push Notifications (APN), a developer can send an alert to the user each time the shipment record is updated.

Dapr also adds security to microservices through mutual TLS (mTLS). The secrets management building block makes it easy to integrate with 3rd party secret stores such as HashiCorp Vault, AWS Secret Manager, Google Key Management, and Azure Key Vault. 

Like the service mesh, Dapr uses the sidecar pattern to attach itself to the pods running in Kubernetes. The sidecar container becomes the proxy that intercepts both inbound and outbound messages flowing through the services. This proxy is responsible for securing the communication and adding additional layers needed for service discovery and invocation. 

Dapr is a promising open source project that simplifies microservices and cloud native-based application development. It brings portability, modularity and composability to modern applications based on containers and microservices.

Follow me on Twitter or LinkedInCheck out my website