Dapr (Distributed Application Runtime) was created at Microsoft for Kubernetes, but goes beyond both, said co-creator Mark Fussell.
Microsoft introduced Dapr as an open source project in October 2019. It was designed as a “sidecar”, meaning that it runs in a separate container or process from the application, primarily with Kubernetes in mind. It provides building block services, including state management, publish and subscribe, resilient service to service invocation, long-running workflows, secrets management and more.
The project has proved to have momentum, and was accepted to the CNCF (Cloud Native Computing Foundation) in November 2021, where it now has incubating status. It is coded largely in Go and is open source on GitHub.
Dapr’s creators are Yaron Schneider and Mark Fussell, both of whom left Microsoft at the end of 2021 to found Diagrid Inc, a company focused on “tools and APIs for building cloud native applications,” in which Dapr plays a core role. Fussell is CEO and Schneider CTO.
Diagrid’s main services are Conductor, a management application for Dapr; and Catalyst, currently in early access, which is built on a hosted instance of Dapr.
“The goal of Dapr is to provide a set of developer APIs that codify common distributed systems patterns that [developers] can use out of the box, whatever language they choose to come from,” Fussell told DevClass.
Dapr is not just for Kubernetes applications, Fussell said. “90 percent of the deployments are Kubernetes, so 10 percent are not Kubernetes … typically people run it on premises themselves because they want to run it on a set of VMs, or on VMs in the cloud.” The role of Dapr for non-Kubernetes applications is also a focus for the new Catalyst service.
Dapr is not a service mesh, Fussell said, but there is some “overlap with service meshes” such as Linkerd or Istio. It is possible to run both, but “Istio is a very hard thing to manage and deploy … the only thing that service meshes provide that we don’t provide inside Dapr is traffic routing … generally we’ve seen that when people start to use Dapr they tend to drop away from some of the service meshes and just use Dapr,” Fussell told us. There is more on Dapr in comparison to service meshes in the documentation.
Since Dapr came out of Microsoft, there is a perception that it is mainly for the Microsoft platform. “We’ve tried hard to break through that perception,” said Fussell. “Although Microsoft has built it into one of its products, called Azure Container Apps, Dapr itself is completely agnostic, vendor neutral. It has its own steering committee that consists of people from Microsoft, Diagrid, Intel and Alibaba.
“Probably about 40 percent of the developers [using Dapr] are Java developers … Java and .NET do make the majority of developers, but that’s closely followed by Python, Typescript and also some Go.”
Despite claiming that Dapr simplifies developing applications that run on Kubernetes, Fussell said that deploying it has “lots of challenges … people have to figure out how to deploy the Dapr control plane, there’s a certificate management issue, there’s applying the best practices.” This is the lead-in to pitching Conductor, a Diagrid service which both manages Dapr and surfaces metrics. “We can diagnose issues inside your application, memory issues, errors, latency, and give you a visualization.”
The new Catalyst is for “developers who want to deploy outside of Kubernetes. What we did is we took the Dapr APIs and we host them as a service … I can choose to deploy my code on a VM or on an AWS Lambda application and do a pub – sub message between them or a service application call,” Fussell said. Catalyst can also have a role integrating applications that run on different clouds.
When will Catalyst be generally available? “We’re hoping to get to a public beta within the next few months,” Fussell told us, while for general availability “we’re optimistically trying to get it for this year,” he said.