The Dapr maintainers released a new version of Dapr, the distributed application runtime, this week. This post highlights the major new features and changes in release 1.10, the first one in 2023.
Workflows
My favorite new feature is the workflow engine and building block. This feature enables developers to orchestrate business logic for messaging and state management across various microservices. Workflows are suitable for multistep processes such as order processing, HR onboarding, and coordinating software updates across many devices because workflows are stateful and support long-running services. Workflow patterns such as chaining and fan-out/fan-in are written in code to execute tasks reliably. The built-in workflow engine is durable and resilient and can either be used via HTTP/gRPC, as well as the .NET SDK (other languages will follow).
Read more about the Workflow building block in the Dapr docs or try out the Workflow Quickstart.
Pluggable Components SDKs
Dapr provides a long list of built-in components to work with. But if this isn't enough, Pluggable Components allows developers to create their own components for their specific integration requirements. Pluggable Components can be written in any language that supports the gRPC protocol.
With release 1.10, developers can create components using the Pluggable Components SDKs in .NET, Java, and Go instead of using the gRPC protocol directly. This will enable many developers to create new components, both public and private ones.
Read more about Pluggable Components in the Dapr docs.
Running multiple Dapr apps
Running a microservices system locally can be challenging, since multiple apps need to be up and running. Developers would need to call the `dapr run` command for each microservice separately, which gets a bit tedious.
With release 1.10, another big developer productivity improvement has been achieved. Developers can now run multiple apps with just one command and a multi-app template file. The <inline-h>dapr run -f <path><inline-h> command is used to run Dapr locally, where <inline-h><path><inline-h> points to a directory that contains a dapr.yaml file, the multi-app template, that contains the properties to run the apps. More information on how to structure the multi-app template can be found in the Dapr docs.
Components
Dapr uses a modular design where functionality is delivered as a component. Release 1.10 contains both new components as improvements to existing components.
New Components
- SQLite: Enables state store functionality using SQL Lite 3. SQLite is a small, fast and self-contained SQL database engine, great for local development and running on small devices.
- Cloudflare KV: Enables state store functionality using Cloudflare Workers KV. Workers KV is a global, low-latency, key-value data store that is ideal for high read volumes.
- Cloudflare Queues binding: Enables publishing message to Cloudflare queues. Cloudflare queues allow developers to send and receive messages with guaranteed delivery. It integrates with Cloudflare Workers and offers at-least once delivery and message batching.
- KubeMQ binding: Supports input and output bindings for KubeMQ, an enterprise-grade Kubernetes-based message broker and message queue that is scalable, highly available, and secure
- KubeMQ: Enables pub/sub messaging using KubeMQ.
- Solace AMQP: Enables pub/sub messaging using Solace PubSub+ Event Broker. The Solace Event Broker is a container-based message broker that enables real-time data distribution between applications.
Component Improvements
With 1.10 many components have graduated to the Stable certification level. All components have a certification level as mentioned in the Certification Lifecycle. The Stable level means:
- The component must have component certification tests validating functionality and resiliency.
- The component is maintained by Dapr maintainers and supported by the community.
- The component is well documented and tested.
- The component has been available as Alpha or Beta for at least 1 minor version release of Dapr runtime prior.
- A maintainer will address component security, core functionality and test issues according to the Dapr support policy and issue a patch release that includes the patched stable component.
The following components have progressed to Stable:
- AWS SQS/SNS: Enables pub/sub messaging using AWS SQS or SNS.
- AWS DynamoDB: Enables state store functionality using AWS DynamoDB.
- Azure Service Bus Queues binding: supports input and output binding to Azure Service Bus Queues.
- CockroachDB: Enables state store functionality using CockroachDB.
- Cron binding: Enables scheduled task execution via cron expressions.
- MySQL: Enables state store functionality using MySQL.
- HashiCorp Vault: Enables secret store functionality using HashiCorp Vault.
- Pulsar: Enables pub/sub messaging using Apache Pulsar.
If you're using any of these components and have a demo to show, drop a link in the #show-and-tell channel on the Dapr Discord.
What is next?
This post is not a complete list of features and changes released in version 1.10. Read the official Dapr release notes for more information. The release notes also contain information on how to upgrade to this latest version.
Excited about these features and want to learn more? I'll cover the new features in more detail in future posts. Until then, join the Dapr Discord to connect with thousands of Dapr users.