<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Run_as_daemon</title>
    <description>The latest articles on DEV Community by Run_as_daemon (@ranasmukminov).</description>
    <link>https://dev.to/ranasmukminov</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3629422%2F93577602-abf6-4292-8f12-d592ec366655.jpeg</url>
      <title>DEV Community: Run_as_daemon</title>
      <link>https://dev.to/ranasmukminov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ranasmukminov"/>
    <language>en</language>
    <item>
      <title>Backyard Endurance OS: Designing Zero-Loss Telemetry Ingestion for Athletes and Distributed Systems</title>
      <dc:creator>Run_as_daemon</dc:creator>
      <pubDate>Sat, 12 Sep 2026 05:14:24 +0000</pubDate>
      <link>https://dev.to/ranasmukminov/backyard-endurance-os-designing-zero-loss-telemetry-ingestion-for-athletes-and-distributed-systems-15fn</link>
      <guid>https://dev.to/ranasmukminov/backyard-endurance-os-designing-zero-loss-telemetry-ingestion-for-athletes-and-distributed-systems-15fn</guid>
      <description>&lt;h2&gt;
  
  
  Problem Statement
&lt;/h2&gt;

&lt;p&gt;At lastyard.space, we treat endurance telemetry like production infrastructure: if the runner is still moving, the system must still be receiving, ordering, persisting, and replaying data.&lt;/p&gt;

&lt;p&gt;A recent live trail run entered the ingestion path with these facts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Workout: Trail Run
Distance: 21.1 km
Duration: 115.0 min
Avg HR: 155 bpm
Max HR: 178 bpm
Elevation gain: 450 m
Cadence: 166 spm
Received: 2026-09-12T04:58:48.126630+00:00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is not just fitness data. It is a distributed systems trace.&lt;/p&gt;

&lt;p&gt;A 21.1 km effort over 115 minutes is an event stream under metabolic load. The athlete averages 155 bpm, peaks at 178 bpm, climbs 450 m, and still holds 166 spm cadence. The architecture equivalent is a service operating near threshold: high utilization, sustained pressure, burst spikes, and degradation risk if pacing is wrong.&lt;/p&gt;

&lt;p&gt;Backyard Ultra gives us the governing principle: Fallen does not mean finished. In system terms, a failed edge collector, delayed watch upload, flaky LTE hop, or overloaded database writer must never mean telemetry loss. It means graceful degradation, replay, backpressure, and recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architectural Diagram
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Apple Health / Watch
        |
        | batched samples, workout summary, HR dynamics
        v
 Mobile Edge Collector
        |
        | WireGuard tunnel, mTLS, retry queue
        v
 Traefik Ingress
        |
        | HTTP/2 gRPC + SSE fanout
        v
 Ingestion Gateway
        |
        | idempotency key: athlete_id + workout_id + sample_ts
        v
 Durable Event Log
        |
        | append-only PostgreSQL partitioned table
        v
 Stream Processors
        |
        | HR drift, cadence variance, elevation-normalized pace
        v
 Timeseries Views + Live SSE
        |
        v
 Crew Dashboard / Race Control / Alerts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The core shift is simple: stop treating telemetry ingestion as CRUD. Treat it as high-availability timing infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  In-depth Technical Breakdown
&lt;/h2&gt;

&lt;p&gt;The ingestion layer has four duties:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Accept delayed, duplicated, and out-of-order samples.&lt;/li&gt;
&lt;li&gt;Persist before processing.&lt;/li&gt;
&lt;li&gt;Preserve athlete-time semantics, not server-arrival semantics.&lt;/li&gt;
&lt;li&gt;Surface live data without coupling the dashboard to the write path.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The mobile edge collector sends telemetry over WireGuard where possible. The public ingress is Traefik, terminating TLS and routing gRPC ingestion separately from SSE read streams.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;http&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;routers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;telemetry-grpc&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;rule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Host(`ingest.lastyard.space`)"&lt;/span&gt;
      &lt;span class="na"&gt;entryPoints&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;websecure"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
      &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;telemetry-ingest&lt;/span&gt;
      &lt;span class="na"&gt;tls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{}&lt;/span&gt;
    &lt;span class="na"&gt;telemetry-live&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;rule&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Host(`live.lastyard.space`)"&lt;/span&gt;
      &lt;span class="na"&gt;entryPoints&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;websecure"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
      &lt;span class="na"&gt;service&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;telemetry-sse&lt;/span&gt;
      &lt;span class="na"&gt;tls&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;{}&lt;/span&gt;

  &lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;telemetry-ingest&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;loadBalancer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;h2c://ingest-a:8080"&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;h2c://ingest-b:8080"&lt;/span&gt;
    &lt;span class="na"&gt;telemetry-sse&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;loadBalancer&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;servers&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://sse-a:8090"&lt;/span&gt;
          &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://sse-b:8090"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For endurance telemetry, exactly-once delivery is an illusion at the network edge. The practical invariant is at-least-once delivery plus idempotent writes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;telemetry_events&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;athlete_id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;workout_id&lt;/span&gt; &lt;span class="n"&gt;uuid&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;sample_ts&lt;/span&gt; &lt;span class="n"&gt;timestamptz&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;received_at&lt;/span&gt; &lt;span class="n"&gt;timestamptz&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt; &lt;span class="k"&gt;DEFAULT&lt;/span&gt; &lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="k"&gt;source&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;metric&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="nb"&gt;double&lt;/span&gt; &lt;span class="nb"&gt;precision&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;unit&lt;/span&gt; &lt;span class="nb"&gt;text&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;seq&lt;/span&gt; &lt;span class="nb"&gt;bigint&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="n"&gt;jsonb&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;PRIMARY&lt;/span&gt; &lt;span class="k"&gt;KEY&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;athlete_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;workout_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;metric&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sample_ts&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="k"&gt;RANGE&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sample_ts&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;INDEX&lt;/span&gt; &lt;span class="n"&gt;telemetry_events_workout_ts_idx&lt;/span&gt;
  &lt;span class="k"&gt;ON&lt;/span&gt; &lt;span class="n"&gt;telemetry_events&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;workout_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sample_ts&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The primary key is the antidote to duplicate mobile retries. If Apple Health resends a heart-rate sample after reconnect, it is merged instead of double-counted. If LTE stalls on a climb, &lt;code&gt;sample_ts&lt;/code&gt; preserves the athlete's actual timeline while &lt;code&gt;received_at&lt;/code&gt; exposes transport lag.&lt;/p&gt;

&lt;p&gt;The writer must apply backpressure before PostgreSQL becomes the athlete equivalent of cardiac drift. Sustained overload should lengthen queues, reject low-priority derived metrics, and preserve raw samples.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;ingest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="kt"&gt;error&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;rawQueue&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Depth&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;highWatermark&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Kind&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="s"&gt;"raw_sample"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;ErrBackpressure&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="n"&gt;_&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ExecContext&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ctx&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;`
      INSERT INTO telemetry_events
        (athlete_id, workout_id, sample_ts, received_at, source, metric, value, unit, seq, payload)
      VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9,$10)
      ON CONFLICT (athlete_id, workout_id, metric, sample_ts)
      DO UPDATE SET
        received_at = LEAST(telemetry_events.received_at, EXCLUDED.received_at),
        payload = telemetry_events.payload || EXCLUDED.payload
    `&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AthleteID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WorkoutID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SampleTS&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ReceivedAt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Source&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Metric&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Unit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Seq&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;err&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the same discipline as pacing a long race. You do not sprint every hill because your max heart rate allows 178 bpm. You regulate output around sustainable threshold. Likewise, ingestion should not burn database connections to keep vanity dashboards smooth. Raw telemetry survives first. Derived views catch up.&lt;/p&gt;

&lt;h2&gt;
  
  
  eBPF and Runtime Observability
&lt;/h2&gt;

&lt;p&gt;Heart-rate drift is when effort stays constant but physiological cost rises. Distributed systems have the same pattern: request rate is flat, but latency, retransmits, syscall time, or lock contention climbs.&lt;/p&gt;

&lt;p&gt;We use eBPF probes to detect the infrastructure version of HR drift:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;signals:
  tcp_retransmits_per_minute
  grpc_server_handling_seconds_bucket
  postgres_wal_fsync_seconds
  run_queue_latency_ms
  conntrack_drops_total
  sse_client_lag_seconds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the athlete's HR rises from 155 toward 178 while cadence drops from 166 spm, the model flags fatigue. If the system's p95 ingest latency rises while throughput is flat, the platform flags architectural fatigue.&lt;/p&gt;

&lt;p&gt;Both are threshold stories. Both require intervention before collapse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Live SSE Without Endangering Writes
&lt;/h2&gt;

&lt;p&gt;Dashboards consume Server-Sent Events from read models, not from the ingestion transaction. SSE is perfect for crew dashboards because it is simple, reconnectable, ordered enough, and cache-friendly when fronted correctly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /workouts/{id}/stream
Accept: text/event-stream
Last-Event-ID: 2026-09-12T04:58:48.126630Z:hr
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;On reconnect, the server replays from the last event id using PostgreSQL:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;metric&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;unit&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;sample_ts&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;telemetry_events&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;workout_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;sample_ts&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="err"&gt;$&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;sample_ts&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;
&lt;span class="k"&gt;LIMIT&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gives the crew a live stream while keeping the durable event log authoritative.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmark and Telemetry Results
&lt;/h2&gt;

&lt;p&gt;For the 21.1 km trail run, the athlete generated a compact but meaningful telemetry envelope:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Duration: 6,900 seconds
Distance: 21,100 meters
Mean pace: 5:27 min/km
Vertical density: 21.3 m gain/km
Avg HR: 155 bpm
Max HR: 178 bpm
Cadence: 166 spm
Total estimated steps: 19,090
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Production targets for this workload class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;raw ingest p50: &amp;lt; 25 ms
raw ingest p95: &amp;lt; 120 ms
raw ingest p99: &amp;lt; 300 ms
SSE fanout lag p95: &amp;lt; 2 s
PostgreSQL commit failure rate: &amp;lt; 0.01%
duplicate sample amplification: 1.00x after idempotency
accepted out-of-order window: 72 h
zero-loss recovery objective: all raw samples replayable
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important number is not max heart rate. It is control under stress. A max HR of 178 bpm is tolerable when the system returns to stable rhythm. A p99 spike is tolerable when queues drain, WAL remains healthy, and replay closes the gap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production Invariants
&lt;/h2&gt;

&lt;p&gt;The architecture is allowed to degrade. It is not allowed to lie.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. Raw telemetry is persisted before enrichment.
2. All writes are idempotent by athlete, workout, metric, and sample timestamp.
3. Server arrival time never replaces athlete sample time.
4. Dashboards read from replayable state, not volatile ingest memory.
5. Backpressure drops derived work before raw samples.
6. SSE clients reconnect with Last-Event-ID and receive gap replay.
7. WireGuard path is preferred, but ingestion survives public TLS fallback.
8. PostgreSQL partitions are managed by sample time with retention explicit.
9. eBPF observes network and kernel pressure outside application logs.
10. Failed collectors rejoin as delayed producers, not data-loss events.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Backyard Ultra has a brutal clarity: you are out only when you stop answering the bell. Distributed systems need the same philosophy.&lt;/p&gt;

&lt;p&gt;A collector can fall behind. A pod can restart. A connection can flap. A dashboard can disconnect. Fallen is not finished if the event log is durable, the protocol is replayable, and the architecture knows the difference between fatigue and failure.&lt;/p&gt;

&lt;p&gt;That is Backyard Endurance OS: physiological truth mapped onto production-grade telemetry resilience.&lt;/p&gt;

</description>
      <category>sre</category>
      <category>architecture</category>
      <category>observability</category>
      <category>postgres</category>
    </item>
  </channel>
</rss>
