All Blogs

Bilgin Ibryam

|

September 23, 2024

Comparing Dapr Developer Tools for Efficient Development

Discover the top Dapr developer tools like the Dapr CLI, VS Code Extension, Conductor Free, and others, comparing their strengths and weaknesses to help you choose the right one for your projects.

Dapr is a tool for building distributed systems that increases developer productivity by up to 30%, based on recent studies. It runs as a sidecar, shared process, or serverless API in the cloud and developers use Dapr SDKs in various languages or the runtime's native HTTP/gRPC features to interact with it. Frequent building and deploying to a development environment is essential in this process to verify functionality, identify errors, and refine iteratively. This process, also known as the inner loop, involves setting up a sidecar, ensuring all necessary components like message brokers and state stores are available, and eventually deploying and verifying the entire application on a local Kubernetes instance.

Inner vs Outer loop differences

The inner developer loop varies with different languages, runtimes, dependencies, and deployment targets. The motivation for this blog post arises from the different tools available on the market, each varying significantly based on use case and complexity, which can make selection daunting, especially for beginners. This article compares popular Dapr tools used in the inner development loop, discusses their pros and cons, and examines the different Dapr inner development flows (Part II). Lastly, we will also discuss  recommended tool combinations suited for optimizing development workflows. For those interested in operating Dapr, read my other blog on how Conductor Enterprise supports operations teams. We start with an overview of all native Dapr tools that exist today including their benefits and limitations.

Dapr CLI

If you are starting with Dapr, the Dapr Command Line Interface (CLI) is an essential tool, especially for local setups. It supports various operating systems and can operate with or without a container dependency but includes Kubernetes integrations for specific features. It's ideal for automating routine tasks, and quickly configuring and launching apps with Dapr sidecars.

Features

  • The Dapr CLI streamlines initializing Dapr on local systems and Kubernetes clusters. A single command (dapr init) sets up Dapr with default developer dependencies like Redis and Zipkin, along with the placement service for the Dapr Actors API , all set for use. It also provides features for deploying the control plane on Kubernetes and multi-application scenarios.
  • Its key feature is the ability to run an application locally with Dapr integration, allowing developers to see and test changes in real-time. It also has a multi-app run feature, particularly useful for simulating microservices environments where multiple services need to interact with each other for complex testing and validation scenarios.
  • It outputs application logs for troubleshooting and includes commands for event publishing and service calls in local (non-Kubernetes) environments.

Strengths

Dapr CLI is to Dapr what kubectl is to Kubernetes. It excels at setting up a local Dapr environment quickly, with all necessary configurations for immediate coding. Its run command launches single or multiple applications along with their respective sidecars: 

Dapr CLI run command overview

Its straightforward commands and ability to run applications locally make it a go-to for rapid prototyping and development.

Limitations

As a command-line tool, it lacks a graphical interface for application management or deep insights into applications and control plane interactions, particularly in Kubernetes. This can sometimes leave developers wanting more contextual information about the system’s overall behavior leading to taking dependencies on a combination of other tools in  the Kubernetes developer ecosystem.

When to Choose This Tool

The Dapr CLI is right for you if you're a developer starting your Dapr journey and prefer to manage your local Dapr applications using the command line. This tool is ideal for those who are comfortable with CLI operations and need a straightforward method to configure and control their Dapr setups.

Dapr Dashboard

The Dapr Dashboard provides a graphical interface, enhancing the Dapr CLI with a visual method to monitor Dapr components. Available both locally and in Kubernetes environments, this web-based UI exposes a glimpse of what's happening within your Dapr system.

Dapr Dashboard view of Dapr control plane

Features

  • The Dashboard shows active Dapr applications and their sidecars, displaying essential information such as metadata, manifests, and deployment files. 
  • For Kubernetes users, it offers a brief view of the control plane services and their current statuses. 
  • It excels in displaying container logs within the interface, a feature that greatly aids in troubleshooting Kubernetes-related issues directly from the logs.

Strengths

The Dapr Dashboard's main strength is its ability to consolidate Dapr configurations and container data into a single, accessible web interface. This makes it useful for quickly browsing the Dapr settings or for keeping an eye on the status and logs of applications . 

Limitations

The Dapr Dashboard is relatively basic and does not provide metrics or advanced insights compared to standard Kubernetes tools. Additionally, its updates and maintenance can be sporadic, potentially an issue for developers seeking the most current and robust tools.

When to Choose This Tool

The Dapr Dashboard is right for you if you're seeking quick insights about your Dapr applications and if you prefer a graphical interface for browsing and troubleshooting Dapr.

VS Code Extension for Dapr

The VS Code extension for Dapr is a useful aid for developers leveraging the Dapr framework, particularly those accustomed to the VS Code environment. This extension simplifies both the setup and debugging of Dapr applications, integrating with the rich debugging features of the IDE.

Features

  • The extension enables developers to launch and terminate Dapr applications directly within the IDE, including support for configurations involving multiple apps. 
  • It leverages VS Code's robust debugging tools to streamline the troubleshooting and refining of Dapr applications, making it easier to address low-level issues directly within the IDE. 
  • Similar to the Dapr CLI, the extension also allows viewing logs and interacting with applications—methods can be invoked and events published right from the IDE, centralizing testing and monitoring.

Strengths

This extension’s strength is its ability to debug Dapr applications using VS Code's inherent debugging capabilities, making it easier to identify and resolve issues in real-time. It integrates with VS Code's existing functionalities and enhances developer productivity by leveraging IDE advantages for writing code with Dapr SDKs and Dapr runtime integration.

VS Code Dapr extension overview

For those accustomed to VS Code, this extension is a practical addition, offering straightforward access to Dapr functionalities through the command palette, which streamlines application management and improves developer efficiency. Although there is no specific plugin for IntelliJ, guidelines are available to help configure it for debugging Dapr applications.

Limitations

While beneficial, the capabilities of this Dapr extension are somewhat a subset of what the Dapr CLI already offers, without major new functionalities. It lacks advanced features such as schema-based autocompletion for Dapr YAML resources, or in-depth metrics, which might limit its appeal to developers seeking comprehensive tools within their IDE for more complex Dapr interactions. This could be a drawback for developers seeking more integrated Dapr aids within their IDE.

When to Choose This Tool

The VS Code Extension for Dapr is perfect if you are already comfortable with VS Code and need enhanced debugging capabilities for building your Dapr applications. This extension integrates seamlessly into your development environment, supporting efficient coding and troubleshooting.

Diagrid Conductor

Diagrid Conductor is a cloud-based control plane designed for managing Dapr clusters on Kubernetes with powerful features tailored for operations teams and developers. To access these capabilities, users sign up for a free account and deploy the Conductor agent into their Kubernetes cluster using a simple kubectl command. This integration provides enhanced functionalities like automated operations, adherence to best practices, improved uptime, and deep insights into Dapr clusters.

Diagrid Conductor architecture overview

Diagrid Conductor is available in two versions suited for operations and developers respectively:

  • Conductor Enterprise is tailored for operations, SREs, and platform teams operating Dapr in business-critical production-like environments, looking to observe, secure, tune, automate, improve reliability, and reduce downtime. To see why Conductor Enterprise is an indispensable part of the operations team toolset, you can check out this user case study.
  • Conductor Free is a lighter version of Conductor tailored for individual developers creating and deploying applications on Kubernetes and looking for advanced visualization and insights into Dapr.

While Conductor Enterprise has more features, higher limits, and better performance, in this post we look at Conductor Free features only as this is a version tailored for Dapr developers.

Features

  • Dapr Management: Developers can easily install and routinely update Dapr with community-supported versions, to try out the latest features and check for breaking changes among versions. It allows rollout of applications individually or all at once to see the effect of a new version or configuration.
  • Resource Discovery: Unlike other tools that handle only static declarative resources based on Custom Resource Definitions (CRDs), Conductor Free also monitors programmatic elements like code-based PubSub Subscriptions, offers  metrics-driven insights for actors and resiliency policies, to help developers oversee all components, configurations, and policies.
  • Visual Application Map: Similar to Istio’s Kiali, this tool visually represents the interactions between applications and their components, offering critical insights into network dependencies.
Conductor app map visualization

  • Metrics and Alerts: Tracks detailed application and infrastructure metrics and provides alerts for common failures, enhancing oversight of control plane and data plane.
  • Guidance on Best Practices: Automatically scans Dapr configurations and provides recommendations to improve security and code quality, reducing the need to consult extensive documentation.

Strengths

Conductor Free’s standout feature is its unmatched visibility into the Dapr runtime, with capabilities like resource discovery, application map, comprehensive metrics, and proactive best practice guidance. This level of detail and support positions it as a uniquely powerful tool within the Dapr ecosystem, enhancing developer experience and productivity in ways that other tools might not fully replicate.

Limitations

Despite its powerful features and benefits, because of Diagrid Conductor SaaS architecture, it comes with certain constraints  that might not be suitable in certain environments:

  • Kubernetes-Only: Conductor Free is specifically designed for Kubernetes, supporting major cloud and local Kubernetes platforms like Red Hat OpenShift, Kind, Minikube, and Docker Desktop. However, it lacks functionality outside of Kubernetes environments, so it won’t offer advanced visualization or best practices for Dapr CLI-based local development.
  • SaaS-Based: Conductor functions as a SaaS platform, utilizing a small agent within your Kubernetes cluster with all the heavy lifting done on Diagrid Cloud. While it only accesses necessary metrics and metadata and does not tap into application logs or sensitive data, its SaaS nature may not fit offline environments or those with stringent cloud-service regulations.

When to Choose This Tool

Choose Conductor Free if you need a tool that enhances visibility and streamlines troubleshooting within your Kubernetes environment. It provides comprehensive benefits from visualizing network topology and Dapr resource discovery to ensuring secure and correct component configurations right from the start. Conductor Free also offers tools for effortless management, such as easy Dapr installations, upgrades, and real-time control plane insights, making it ideal for maintaining optimal Dapr deployments.

Other Tools

Alongside dedicated Dapr tools, various other utilities also enhance the Dapr developers’ experience. 


For .Net developers:

  • Dapr Sidekick for .NET: Dapr Sidekick for .NET is a control plane component that makes adding Dapr to your .NET solutions frictionless. It simplifies the development and operations of distributed applications that use Dapr by providing lifetime management, core service invocation and improved debugging experiences in Visual Studio.
  • The Dapr extension for Visual Studio enables you to view, manage, diagnose, and debug Dapr services within Visual Studio. Developers can view the Dapr components the applications are using, state store and actor instance states too. The extension can be downloaded and installed from the Visual Studio Marketplace.
  • .NET Aspire: An opinionated stack for building distributed applications via NuGet packages. Unlike Dapr, which abstracts cloud resources, .NET Aspire manages configurations without hiding the underlying technologies. For example, a .NET-based application can use .NET Aspire to orchestrate the local developer inner loop and streamline deployment by launching Dapr side-car processes.
  • Radius: A cloud-native platform that aids both developers and operations teams by specifying how applications are running and interrelations. Radius supports essential Dapr components like state and secret stores, and pub/sub brokers, allowing developers to integrate Dapr resources and operators to manage infrastructure through "Recipes". More on how Radius complements Dapr can be found in this FAQ.

For Java developers:

  • Testcontainers module for Dapr: Allows developers to define which containers need to be run beside your applications for development and especially for testing purposes. With the TestContainer module for Dapr, developers can manage not only external dependencies but also Dapr sidecar directly from the application testing life cycle, avoiding the need for tools like Dapr CLI. An illustrative example is the provisioning of Kafka, Redis, and the Dapr sidecar for an application dependent on PostgreSQL and Kafka, directly from an IDE during integration testing.  Details on using Testcontainers with Dapr are available in this article.
  • Quarkus Dapr Extension: Allows Java developers to create ultra-lightweight Java native applications ideal for Function Computing and FaaS. Because of the advantages of the sidecar model, the native applications can benefit from Dapr’s distributed capabilities while remaining lightweight without introducing too many dependencies. Further information is available in the Quarkus documentation.
  • Spring Boot integration for Dapr - Enables Spring Boot applications to utilize Dapr Building Block APIs, facilitating local development. For an in-depth discussion, see this post.

For developing on Kubernetes 

When developing on local Kubernetes distros such as  Kind, Minikube, Docker Compose, there are various tools used to automate the inner development life cycle. Tools like Telepresence let developers debug and develop locally while connecting to remote services in a Kubernetes cluster, accelerating testing and iterations. Bridge to Kubernetes allows you to run and debug code on your development computer, while still connected to your Kubernetes cluster with the rest of your application or services. Lens and Monokle are desktop applications that offer graphical management and debugging of Kubernetes environments. Tilt and similar tools automate the continuous deployment of code changes into Kubernetes, enhancing the speed of feedback and iterations. These are only a few of the tools commonly used by Dapr developers when deploying and interacting with Kubernetes. Have other tools you rely on? Drop a comment below, and I’ll add them to our list!

Summary

Here is a quick summary of the tools we've explored in this segment.

Dapr developer tools overview

Determining the right tools isn't a one-size-fits-all solution; it largely depends on your specific needs and development environment. However, generally, a combination of tools is necessary to achieve optimal efficiency and effectiveness in your Dapr development. Most developers will find the following types of tools essential for enhancing their workflow:

  • A tool for Rapid Iteration: This includes any CLI, IDE, or library or build plugin that facilitates quick deployment and debugging. Each tool has its strengths depending on the development environment and language preferences. For instance, while the CLI is universally powerful across different programming languages, VS Code tends to be the preferred choice among .Net developers due to its seamless integration and extensive support within the .Net ecosystem. On the other hand, TestContainers are particularly favoured by Java developers for their ability to manage application dependencies and Dapr components efficiently within the Java testing lifecycle.
  • A tool for Kubernetes Interaction and Visualization: While there are general Kubernetes tools that provide comprehensive graphical interfaces for managing clusters—Conductor Free stands out as specifically designed for Dapr. It not only facilitates basic Kubernetes interactions but also enhances Dapr usability with features tailored for Dapr applications like advanced visualization, metrics collection, and proactive best practice recommendations. This specialized focus makes Conductor Free an invaluable resource for Dapr developers looking to optimize their application performance and reliability in Kubernetes environments.

We will delve deeper into how to effectively combine these tools to enhance your Dapr development workflow in the second part of this blog post series for Dapr developers. Stay tuned for more insights and recommendations! Meanwhile, try out Conductor Free and see how it transforms your development process. Share your feedback on its pros and cons in our Community Channel and join the conversation with fellow developers. Your input will help us make it better for all!