<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
  <channel>
    <title>Petabridge: Beyond HTTP</title>
    <description>Open Source Distributed Systems in .NET</description>
    <link>https://petabridge.com</link>
    <atom:link href="https://petabridge.com/blog/feed.xml" rel="self" type="application/rss+xml" />
    <webfeeds:analytics id="UA-58505899-1" engine="GoogleAnalytics"/>
    <webfeeds:cover image="https://petabridge.com/images/petabridge_logo.png" />

    

    

      

      

      <item>
        <title>Managing Long-Running Tasks Inside Akka.NET Actors</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


19 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;Here’s a scenario we hit all the time on &lt;a href=&quot;https://textforge.net/&quot;&gt;TextForge&lt;/a&gt;: a new user signs up, connects their Gmail account, and now we have to pull down their entire mailbox history. For the pro plan, that can be hundreds of thousands of emails. Which translates to tens of thousands of Gmail API round trips, exponential backoff when the API pushes back, intermittent network failures, and tens of minutes (sometimes longer) of continuous work per user. And on top of that, we need to be able to cancel the job cleanly, because the pod hosting that actor might get rebalanced across the cluster, or we might roll a deployment, or the user might disconnect the account mid-sync.&lt;/p&gt;

&lt;p&gt;So the question is: &lt;strong&gt;how can a single Akka.NET actor manage a long-running background job without becoming non-responsive to its own mailbox?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This post (and its accompanying video) walks through the exact pattern we use in TextForge’s &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MailboxSyncActor&lt;/code&gt;: a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;CancellationTokenSource&lt;/code&gt; field, a fire-and-forget &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;PipeTo&lt;/code&gt;, and a couple of subtle lifecycle details that will bite you if you skip them.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/cSHQcqeQ4oI&quot; title=&quot;Managing Long-Running Tasks Inside Akka.NET Actors&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/akkadotnet-long-running-tasks/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Mon, 13 Apr 2026 14:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/akkadotnet-long-running-tasks/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/akkadotnet-long-running-tasks/</guid>
      </item>
    

      

      

      <item>
        <title>How AI Will Transform Open Source Business Models</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


15 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;This is Part 2 of a two-part series.&lt;/strong&gt; &lt;a href=&quot;https://petabridge.com/blog/ai-wont-kill-open-source/&quot;&gt;Part 1&lt;/a&gt; covered why AI is accelerating open source adoption, not killing it. This post examines which business models thrive and which struggle in the AI era. &lt;a href=&quot;https://m.petabridge.com/&quot;&gt;Subscribe to our mailing list&lt;/a&gt; if you haven’t already.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In &lt;a href=&quot;https://petabridge.com/blog/ai-wont-kill-open-source/&quot;&gt;Part 1&lt;/a&gt;, I argued that AI isn’t killing open source - it’s amplifying adoption at unprecedented rates. Akka.NET’s 35% year-over-year download growth in 2025, combined with industry-wide metrics showing 70-87% growth across major package registries, proves that LLMs are recommending and adopting libraries faster than humans ever could.&lt;/p&gt;

&lt;p&gt;But there’s a second story buried in the Tailwind CSS saga that deserves its own analysis: &lt;strong&gt;AI isn’t killing open source - it’s disrupting specific types of open source businesses.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adam Wathan captured this perfectly in &lt;a href=&quot;https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957&quot;&gt;his GitHub comment&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“Tailwind is growing faster than it ever has and is bigger than it ever has been, and our revenue is down close to 80%.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Read that again. The framework is thriving. The business is struggling. This isn’t a contradiction - it’s the clearest illustration of where AI is creating winners and losers in the open source economy.&lt;/p&gt;

&lt;p&gt;Let me break down what’s actually happening, using both Tailwind’s situation and our own experience at Petabridge as a counter-example.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/ai-transforms-oss-business-models/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Wed, 14 Jan 2026 13:01:01 +0000</pubDate>
        <link>https://petabridge.com/blog/ai-transforms-oss-business-models/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/ai-transforms-oss-business-models/</guid>
      </item>
    

      

      

      <item>
        <title>AI Won&apos;t Kill Open Source - It Will Amplify It</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


19 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;Earlier this week, &lt;a href=&quot;https://github.com/adamwathan&quot;&gt;Adam Wathan&lt;/a&gt;, the creator of &lt;a href=&quot;https://tailwindcss.com/&quot;&gt;Tailwind CSS&lt;/a&gt;, &lt;a href=&quot;https://github.com/tailwindlabs/tailwindcss.com/pull/2388#issuecomment-3717222957&quot;&gt;dropped a bombshell about how AI has impacted his company and its employees&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;the reality is that 75% of the people on our engineering team lost their jobs here yesterday because of the brutal impact AI has had on our business. And every second I spend trying to do fun free things for the community like this is a second I’m not spending trying to turn the business around and make sure the people who are still here are getting their paychecks every month.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;The reaction was swift and predictable. Hot takes flooded in declaring the death of open source, the end of OSS sustainability, and the AI apocalypse that would render libraries and frameworks obsolete. &lt;a href=&quot;https://ghuntley.com/six-month-recap/&quot;&gt;Geoffrey Huntley captured the prevailing narrative perfectly&lt;/a&gt;&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot; rel=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;“AI can generate code, bypassing the need to deal with open-source woes… I’ve found myself using less open source these days… This shift challenges the role of open-source ecosystems.”&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;a href=&quot;https://x.com/Aaronontheweb/status/2009001211647959296&quot;&gt;I had a tweet about the Tailwind situation go viral&lt;/a&gt; and there were dozens of quote tweets and comments echoing the very same. “AI eats open source” is easy to find in abundance online.&lt;/p&gt; &lt;p&gt;Here’s the problem: &lt;strong&gt;everyone is getting this perfectly backwards&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;AI isn’t killing open source. &lt;em&gt;It’s amplifying it to unprecedented levels&lt;/em&gt;. The Tailwind situation isn’t about declining OSS adoption - it’s about a business model that was working great in a world where learning curves were high and documentation was the bottleneck. That world is gone, and the revenue model built on top of it is collapsing. But the underlying Tailwind library? It’s thriving.&lt;/p&gt; &lt;p&gt;Let me show you why the doomsayers are wrong, backed by actual data from our own experience...
              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/ai-wont-kill-open-source/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Thu, 08 Jan 2026 19:31:22 +0000</pubDate>
        <link>https://petabridge.com/blog/ai-wont-kill-open-source/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/ai-wont-kill-open-source/</guid>
      </item>
    

      

      

      <item>
        <title>Migrating from CRUD to CQRS and Event-Sourcing with Akka.Persistence</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


15 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;We’re about a year into the process of completely re-working &lt;a href=&quot;https://sdkbin.com/&quot;&gt;Sdkbin&lt;/a&gt; to better support our needs here at Petabridge and, eventually, other third-party software vendors.&lt;/p&gt;

&lt;p&gt;Sdkbin was originally built on an extremely flimsy CRUD architecture that violates most of my personal design preferences - you can &lt;a href=&quot;https://aaronstannard.com/sdkbin-rewrite/&quot;&gt;read about the history behind that here&lt;/a&gt;. But to summarize, I tend to use the following heuristics when building software:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/high-optionality-programming-pt1/&quot;&gt;Prefer optionality-preserving designs&lt;/a&gt;&lt;/strong&gt; - make sure your design decisions can be reversed or altered when things inevitably change.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Use as few moving parts as possible&lt;/strong&gt; - &lt;a href=&quot;https://petabridge.com/blog/actorref-tell-ask/&quot;&gt;most of Akka.NET is constructed this way&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;No magic&lt;/strong&gt; - if nothing magically works, then nothing magically breaks either.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Ensure that coupling happens only where it’s necessary&lt;/strong&gt; - coupling usually needs to happen in your integration layer (i.e. your UI or HTTP API.) Your accounting system should probably not be coupled to your payments system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sdkbin’s original CRUD design violated all of these principles:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Used hard deletes, destroying data with no ability to recover or audit (impossible to reverse);&lt;/li&gt;
  &lt;li&gt;Relied heavily on AutoMapper-powered generic repositories (magic with lots of moving parts); and&lt;/li&gt;
  &lt;li&gt;Was highly coupled throughout - Stripe payment events served double-duty as invoices, for instance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We’ve fixed a ton of these issues already, and one of the most important tools we’re using is &lt;a href=&quot;https://petabridge.com/blog/intro-to-persistent-actors/&quot;&gt;Akka.Persistence&lt;/a&gt;. We’ve also made some significant improvements to Akka.Persistence in recent releases that made it &lt;em&gt;much&lt;/em&gt; easier for us to accomplish our ambitious goals with Sdkbin.&lt;/p&gt;

&lt;p&gt;Let me show you what we did.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/crud-to-cqrs-akka-persistence/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Tue, 30 Dec 2025 18:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/crud-to-cqrs-akka-persistence/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/crud-to-cqrs-akka-persistence/</guid>
      </item>
    

      

      

      <item>
        <title>The Worst Security Vulnerability in Akka.NET - And How to Fix It</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


15 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;In October 2025, we disclosed the most critical security vulnerability ever found in &lt;a href=&quot;https://getakka.net/&quot;&gt;Akka.NET&lt;/a&gt;: &lt;strong&gt;CVE-2025-61778&lt;/strong&gt;. This vulnerability affects Akka.Remote’s TLS implementation - specifically, we were supposed to implement mutual TLS (mTLS), but we didn’t. The server never validated client certificates, meaning anyone who could reach your Akka.Remote endpoint could potentially join your cluster without any authentication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The immediate action you should take: upgrade to &lt;a href=&quot;https://github.com/akkadotnet/akka.net/releases/tag/1.5.56&quot;&gt;Akka.NET v1.5.56&lt;/a&gt; or later.&lt;/strong&gt; The vulnerability has been fully patched in these versions.&lt;/p&gt;

&lt;p&gt;In this post, we’ll cover the nature of this vulnerability, who was affected, how we fixed it, and - most importantly - security best practices for securing your Akka.NET applications going forward.&lt;/p&gt;

&lt;p&gt;This vulnerability was discovered by one of our &lt;a href=&quot;https://petabridge.com/services/support/&quot;&gt;Production Support&lt;/a&gt; customers during a security audit. Within 2-3 weeks of being notified, we shipped four patches (v1.5.52 through v1.5.56) to address the issue. This is exactly the kind of critical response our support customers receive - and the entire Akka.NET community benefits from their vigilance.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/akka-net-tls-vulnerability/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Wed, 26 Nov 2025 18:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/akka-net-tls-vulnerability/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/akka-net-tls-vulnerability/</guid>
      </item>
    

      

      

      <item>
        <title>How Do You Fix 70% Data Loss Across 1 Million Concurrent Connections?</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


6 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;When your Akka.NET application starts dropping 70-80% of incoming connections in production, who do you call? That’s the situation one of our Production Support customers faced this year - and it’s exactly the kind of problem our &lt;a href=&quot;https://petabridge.com/services/support/&quot;&gt;Akka.NET Support Plans&lt;/a&gt; are designed to solve.&lt;/p&gt;

&lt;p&gt;Opportunities to purchase developer expertise with a credit card are rare. That’s exactly what we offer - and I want to show you what that looks like in practice.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/why-buy-akka.net-support-2025/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Fri, 21 Nov 2025 13:49:21 +0000</pubDate>
        <link>https://petabridge.com/blog/why-buy-akka.net-support-2025/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/why-buy-akka.net-support-2025/</guid>
      </item>
    

      

      

      <item>
        <title>Akka.NET + Kubernetes: Everything You Need to Know</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


37 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;Running &lt;a href=&quot;https://getakka.net/&quot;&gt;Akka.NET&lt;/a&gt; in Kubernetes can feel like a daunting task if you’re doing it for the first time. Between StatefulSets, Deployments, RBAC permissions, health checks, and graceful shutdowns, there are a lot of moving parts to get right.&lt;/p&gt;

&lt;p&gt;But here’s the thing: once you understand how these pieces fit together, Kubernetes actually makes running distributed Akka.NET applications significantly easier than trying to orchestrate everything yourself using ARM templates, bicep scripts, or some other manual approach.&lt;/p&gt;

&lt;p&gt;We’ve been running Akka.NET clusters in Kubernetes for years at Petabridge—both for our own products like &lt;a href=&quot;https://sdkbin.com&quot;&gt;Sdkbin&lt;/a&gt; and for customers who’ve built systems with over 1400 nodes. We’ve learned a lot the hard way, and this post is all about sharing those lessons so you don’t have to make the same mistakes we did.&lt;/p&gt;

&lt;p&gt;This isn’t a hand-holding, step-by-step tutorial. Instead, I’m going to focus on the critical decisions you need to make, the pitfalls to avoid, and the best practices that actually matter when running Akka.NET in production on Kubernetes.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/akkadotnet-guide-to-kubernetes/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Fri, 24 Oct 2025 15:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/akkadotnet-guide-to-kubernetes/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/akkadotnet-guide-to-kubernetes/</guid>
      </item>
    

      

      

      <item>
        <title>You Don&apos;t Need to Use Akka.HealthChecks Anymore</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


14 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;We have just recently shipped &lt;a href=&quot;https://github.com/akkadotnet/Akka.Hosting?tab=readme-ov-file#healthchecks&quot;&gt;Akka.Hosting v1.5.48.1 and newer, all of which now have built-in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Microsoft.Extensions.HealthCheck&lt;/code&gt; integration&lt;/a&gt; that is significantly easier to configure, fewer packages to install, and easier to customize than what we had with Akka.HealthChecks.&lt;/p&gt;

&lt;p&gt;This post consists of three parts:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;How to use the new Akka.Hosting health checks;&lt;/li&gt;
  &lt;li&gt;Why we deprecated Akka.HealthChecks; and&lt;/li&gt;
  &lt;li&gt;Migration recommendations for existing Akka.HealthChecks users - because the new Akka.Hosting health checks cause conflicts with the older ones.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Let’s dive in.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/you-dont-need-akka-healthchecks-anymore/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Wed, 24 Sep 2025 15:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/you-dont-need-akka-healthchecks-anymore/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/you-dont-need-akka-healthchecks-anymore/</guid>
      </item>
    

      

      

      <item>
        <title>Phobos 2.10: Game-Changing Akka.NET Cluster Monitoring and Actor Performance Dashboards</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


9 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;&lt;img src=&quot;https://petabridge.com/images/phobos/phobos_logo.png&quot; alt=&quot;Phobos - APM for Akka.NET&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://phobos.petabridge.com/articles/releases/RELEASE_NOTES.html&quot;&gt;Phobos 2.10&lt;/a&gt; is here, and it’s a game-changer for anyone running &lt;a href=&quot;https://getakka.net/&quot;&gt;Akka.NET&lt;/a&gt; applications in production. This release doesn’t just incrementally improve observability - it fundamentally transforms how you understand and troubleshoot actor performance in your clusters.&lt;/p&gt;

&lt;p&gt;The headline features: &lt;strong&gt;accurate backpressure measurement across all actors&lt;/strong&gt;, a &lt;strong&gt;bird’s-eye view of your entire Akka.NET cluster activity&lt;/strong&gt;, &lt;strong&gt;detailed actor performance analysis dashboards&lt;/strong&gt;, and the ability to &lt;strong&gt;easily filter &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/system&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/user&lt;/code&gt; actors from each other&lt;/strong&gt;. But here’s what makes this release special - it’s not just about the new metrics (though those are substantial). It’s about the beautiful, production-ready dashboards that make all this data instantly actionable.&lt;/p&gt;


              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/phobos-2.10-akka-cluster-monitoring-dashboards/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Wed, 17 Sep 2025 15:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/phobos-2.10-akka-cluster-monitoring-dashboards/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/phobos-2.10-akka-cluster-monitoring-dashboards/</guid>
      </item>
    

      

      

      <item>
        <title>The Easiest Way to Do OpenTelemetry in .NET: OTLP + Collector</title>
        <author>hi@petabridge.com</author>
        <description>
            
        &lt;p&gt;&lt;em&gt;


19 minutes to read
&lt;/em&gt;&lt;/p&gt;
      
            
              &lt;p&gt;We know OpenTelemetry deeply at Petabridge. We’ve built &lt;a href=&quot;https://phobos.petabridge.com/&quot;&gt;Phobos&lt;/a&gt;, an OpenTelemetry instrumentation plugin for &lt;a href=&quot;https://getakka.net/&quot;&gt;Akka.NET&lt;/a&gt;, so we understand the low-level bits. Beyond that, we’ve been using OpenTelemetry in production for years on &lt;a href=&quot;https://sdkbin.com&quot;&gt;Sdkbin&lt;/a&gt; and we’ve helped over 100 customers implement OpenTelemetry configurations very similar to our own. Through all this experience, one thing has become crystal clear: &lt;strong&gt;the easiest, most production-ready approach to OpenTelemetry in .NET is using OTLP (OpenTelemetry Line Protocol) with a collector&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;In this post, I’ll walk you through why this approach beats vendor-specific exporters every time, show you exactly how to configure it, and demonstrate the real-world benefits we’ve experienced at Petabridge. This is the companion piece to my recent YouTube video on the topic.&lt;/p&gt; &lt;!--more--&gt; &lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/cm7xHRDxMPQ&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt; &lt;h2 id=&quot;the-problem-with-vendor-specific-exporters&quot;&gt;The Problem with Vendor-Specific Exporters&lt;/h2&gt; &lt;p&gt;When you’re getting started with OpenTelemetry for the first time in one of your projects, you know your team uses DataDog, or New Relic, or Application Insights. So naturally, the first thing you’ll try is figuring out how to connect your application directly to that specific tool.&lt;/p&gt; &lt;p&gt;You end up with something that looks like this:&lt;/p&gt; &lt;div class=&quot;language-csharp highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;builder&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;Services&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;AddOpenTelemetry&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;WithTracing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;builder&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;builder&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;AddHttpClientInstrumentation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;AddAspNetCoreInstrumentation&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// Coupling our app to vendor-specific implementations&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;AddDatadogTracing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// Application code now depends on DataDog SDK&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;AddNewRelicTracing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// And New Relic SDK&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;AddAzureMonitorTracing&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;();&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;// And Azure Monitor SDK&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;});&lt;/span&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt; &lt;p&gt;And you’re going to get frustrated doing this because of:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;&lt;strong&gt;Vendor Coupling&lt;/strong&gt;: Your application code is now directly coupled to vendor-specific SDKs...
              
        &lt;p&gt;
            &lt;strong&gt;&lt;a href=&quot;https://petabridge.com/blog/easiest-opentelemetry-dotnet-otlp-collector/&quot;&gt;Click here to read the full article&lt;/a&gt;&lt;/strong&gt;.
        &lt;/p&gt;
      
            
            
        </description>
        <pubDate>Thu, 28 Aug 2025 13:00:00 +0000</pubDate>
        <link>https://petabridge.com/blog/easiest-opentelemetry-dotnet-otlp-collector/</link>
        <guid isPermaLink="true">https://petabridge.com/blog/easiest-opentelemetry-dotnet-otlp-collector/</guid>
      </item>
    
  </channel>
</rss>