digma icon indicating copy to clipboard operation
digma copied to clipboard

🧑‍💻🔭 Digma helps you fix performance issues in your code by automatically profiling the code execution. Using APMs to identify code bottlenecks, query problems and scalability issues takes time and...

Continuous Feedback for Developers

Medium Badge Twitter Badge made with love by digma-ai

:raised_eyebrow: What is Digma

Digma is a Continuous Feedback pipeline, comprised of an analysis backend and an IDE plugin with the goal of continually analyzing observability sources and providing feedback during development.

Digma makes observability relevant in dev, empowering developers to own their code all the way to production, improving code quality and preventing critical issues before they escalate.

:gear: How Digma works

The Digma IDE plugin provides code-level insights related to performance, errors and usage, available as you are making code changes. The insights are continually generated from your OpenTelemetry traces and metrics which are collected and analyzed by the Digma backend.

🚀 Getting started in three steps

1. Install the IDE Plugin

Get the Digma plugin from the vscode marketplace, or from the Jetbrains marketplace for Rider. Additional IDEs support coming soon.

2. Start the Digma backend locally via the Docker Compose file

Already using OpenTelemetry? Awesome! We'll fit right into your stack. Otherwise - don't worry! everything you need is included in the quick setup.

Run the following from terminal/commmand line:

Linux & MacOS: curl https://get.digma.ai/ --output docker-compose.yml
Windows (PowerShell): iwr https://get.digma.ai/ -outfile docker-compose.yml

Then run: docker compose up -d to start the Digma backend. (You'll need Docker and Docker Compose installed)

3. Add a few lines of code to instrument Digma.

Check out these simple instructions for Python, .NET and GOLang.

That's it! :tada: As you start using you application and accumulating trace data, Digma will start showing insights in the IDE sidepane.

Once you're up and running:

  • Consider :star: this repo! It helps us know you care!

  • Having issues? Questions? Want to suggest new ideas or discuss Digma with us? Join the Digma community
  • Try one of the sample projects we've already set up with data. You can find samples for .NET, Golang and Python with more coming soon

Join the Digma Cloud waitlist!

If continuous feedback is something you'd like to try but don't want to set up everything yourself, sign up for Digma Cloud beta program.

What does Digma look like?

We understand that Digma may sound abstract :art: We have created a short video that demonstrates what the product does which you can find here:

Digma in practice

In short, we can use existing logs, traces and metrics to answer questions such as:

  • Where is this function called from? Is it even used?
  • Is this a problematic area of the code? Where are my bottlenecks?
  • What type of errors does this code raise in runtime? What issues are escalating? Which are affecting the end user?

More importantly, all of these insights should be directly accessible in the IDE so we can use them while coding.

Digma HL ArchitectureDigma HL Architecture

The story behind Digma: :man_technologist::woman_technologist:

We believe that understanding code, real-world requirements and behavior is critical to making better software. It empowers developers to own their code all the way to production.

There are many observability tools out there, However, we feel they have managed to miss what developers care about when writing their code. Their focus is dashboards, whereas we think observability should be integrated into the dev process itself.

Our goal is to create an open platform for interpreting and analyzing the information collected via observability. Traces, logs, metrics are great! But additional effort is needed in order to take them that last mile and make them impactful.

How are you different from...

Well we don't compete with any tool existing today because... There isn't any tool that aims to generate this type of feedback. We do work very well together with other tools looking at the same data, like Jaeger, Prometheus, even traditional observability tools like Datadog or Splunk. There are plenty of tools that try to offer troubleshooting/debugging capabilities (once an issue is already identified) or give some raw realtime data. This is not where our headspace is at.

At the time of this writing, most of the data Digma collects is OpenTelemetry based. In the future we will definitely be able to ingest data from other technologies as well such as eBPF or even CloudWatch.

How can I learn more about Digma?

We started publishing some more detailed blog posts explaining what we are trying to accomplish. Here are some examples:

CI-CD-CF The Devops Toolchain Missing Link

You're never done. By definition.

The Observant Developer

How do I contribute or get involved, and are you guys even open-sourcing this?

We are committed to making Digma an Open Source platform. However, we are just getting started, and some of the code is not yet finalized enough yet to accept contributors. Currently we've made our vscode plugin repo public with an MIT license. We'll continue to add the additional repos as they become formalized enough to start working on them jointly.

FAQ

  • Is this going to instrument my code and change it in creepy ways in production? Absolutely not! We rely on the OpenTelemetry vanilla instrumentation with a few added attributes of our own. We leave your code untouched.
  • Do I need to make code changes to use Digma? If you're already using OpenTelemetry, you're good to go. If you are not yet using it, we should be a part of your stack if you're considering adding observability to your code!
  • Can I use Digma right now? We haven't opened the flood gates just yet, but you are welcome to sign on to our beta program (via this link) or drop us a line if you want to be a part of the alpha.
  • Which platforms/stacks do you currently support? We have a limited set of language specific components, but, for the sake of focus, we currently support .NET, GoLang and Python over Visual Studio Code. Over the next month, we'll add Jetbrains IDEs and NodeJS which are already in progress. If you're using other stacks you wish to see supported, please sign on to the beta and fill our survey - we're definitely taking your responses into consideration.