THE SIGNAL: What matters in distributed systems | #1

March 2026 | Issue #1

Welcome to SIGNAL. This is a monthly briefing for CTOs, VP Engineering, and Chief Architects running distributed systems at scale. We don’t aggregate news. We aggregate lessons.

Every month: one architecture debate with real trade-offs, one production war story with solutions, and three critical signals with business context. No hype cycles. No vendor pitches. Just what you need to know to make better infrastructure decisions.

This month: Akka launches an Agentic AI platform with MCP integration — the same week Perplexity’s CTO publicly dumps the protocol. The MCP backlash intensifies as the dev world argues whether it’s enterprise governance or unnecessary overhead.


Today

  • Akka launches Agentic AI on MCP Akka launches its Agentic AI stack on MCP — while Perplexity’s CTO is publicly distancing the company from the protocol.
  • KIP-1150 makes diskless Kafka official — two paths to S3-backed streaming converge  
  • Kafka 4.2 graduates Share Groups — scale consumers by workload, not partition count  
  • Scala 3.8 locks in JDK 17, 3.9 LTS approaches with the same floor  
  • Time to start testing sbt 2.0 RCs and standardizing with the now-official Scala CLI 1.0.

The Architecture Debate: MCP Protocol — Enterprise Governance or Overhead?

Akka isn’t just shipping slides about agents anymore, it’s shipping production runtimes. After announcing the Akka Agentic Platform in 2025 – with Orchestration for complex multi-agent workflows, Agents with MCP/API support, Memory as durable sharded state, and Streaming for real-time AI – the stack starts landing inside large, regulated enterprises that care about SLAs and governance instead of yet another data science POC. By 2026 you’re already seeing big deployments like Manulife, where Akka becomes the runtime for an enterprise agentic AI platform rather than a sidecar experiment.

The same week, on the other side of the spectrum, Perplexity makes a very public move in the opposite direction. Denis Yarats announces at Ask 2026 that they’re dropping MCP internally in favor of plain APIs and CLIs. The critique is strictly operational: MCP tool definitions burn context window (often an order of magnitude more tokens than an equivalent CLI call), auth is clunky, and the protocol adds another abstraction layer on top of APIs that already exist and are well understood by infra teams.

That’s where the split nobody talks about shows up. MCP really has two faces. In stdio mode it runs locally on your laptop and behaves like “CLI with contracts” – great for a single developer, but with no central visibility. In remote HTTP mode, MCP turns into a shared tool server: one place to manage auth, catalog tools, and keep prompts and policies consistent across teams. The backlash lumps both modes together. CLIs run as you – your credentials, your permissions, no shared audit trail. For one engineer on a dev machine, that’s fine. For 50 engineers touching production, it’s a governance incident waiting to happen.

Scalac angle: the framing of “MCP vs CLI” is wrong. The real axis is governance versus speed. If you’re building internal tools with a handful of fixed integrations and a small team, classic APIs and CLIs are faster to wire up and cheaper to run. In multi-tenant enterprise environments that need centralized auth, observability, and audit trails, MCP starts to earn its overhead. Smart teams don’t pick “MCP or CLI” – they use CLIs where the model already understands the tool, and MCP where they need a unified, controlled access layer. The protocol was overhyped early on, but its real story was always enterprise adoption, not the solo dev hacking on a laptop.

🔗 Manulife Selects Akka to Operationalize Agentic AI · Perplexity: MCP vs APIs for AI Agents · Perplexity Agent API MCP Shift


Notes from the Trenches: Kafka 4.2 — Diskless Topics and Share Groups

Apache Kafka approves KIP-1150. The community voted yes on March 2nd, making diskless topics officially part of the roadmap. Brokers serve partitions directly from object storage using a leaderless architecture.

The catch: production readiness is unlikely before 2027. KIP-1164 (Batch Coordinator) and sub-proposals still need implementation.

Confluent acquired WarpStream in January. The proprietary fork already delivers order-of-magnitude cost reductions reported by early adopters for log analytics workloads, with latencies in the 100-500ms range — fine for logs, unacceptable for sub-50ms p99 transactions.

The migration decision: KIP-1150 offers gradual, topic-by-topic migration. WarpStream requires ripping out brokers entirely. Greenfield teams choose between vendor lock-in today (WarpStream works now) versus migration complexity tomorrow (KIP-1150 is unlikely before 2027).

Scalac angle: Existing Kafka estates should wait for KIP-1150. Running both systems defeats the purpose. Greenfield without latency constraints? WarpStream carries less risk than betting on 2027 timelines. The decision is organizational tolerance for vendor lock-in versus timeline uncertainty — not which technology is “better.”

The partition-to-consumer binding has been Kafka’s fundamental scaling constraint since 2011.

With 4.2.0, KIP-932 graduates to production-ready, introducing Share Groups that decouple parallelism from partition count.

The Problem: A topic with 12 partitions maxed out at 12 concurrent consumers. Need more throughput? You re-partition — a destructive operation requiring downtime and backfill.

The Solution: Share Groups use cooperative consumption with individual acknowledgment tracking. Multiple consumers can now process records from the same partition concurrently, with the broker managing delivery counts and lock timeouts. (KIP-1222 proposes lease extensions for long-running tasks — a separate proposal still under development.)

Migration Reality: Share Groups require new consumer clients (4.2+) and explicit opt-in. Existing consumer groups work unchanged. The critical change is operational: you can now scale consumers based on CPU/memory constraints rather than partition geometry.

Scalac angle: Test Share Groups on your heaviest read workloads — the ones where you’ve been forced to over-partition to achieve parallelism. Use share.acquire.mode=record_limit for strict memory limits. Don’t migrate everything. Use Share Groups for the 20% of topics that need elastic scaling, keep traditional groups for the 80% where partition affinity matters.


Signal Over Noise: Three Critical Changes This Month

Scala 3.8.2 stabilizes the JDK 17 transition

Scala 3.8 shipped on January 21, 2026 with two firsts: a JDK 17 baseline and the standard library compiled in Scala 3. State of Scala 2026 explicitly recommends 3.8.1+ and points to 3.8.2 as the point where early runtime regressions are resolved, positioning 3.8.x as the practical bridge toward 3.9 LTS in Q2 2026.

Practical takeaway: new services should now default to Scala 3.8.x on JDK 21 LTS, while libraries that must support JDK 8 keep cross‑compiling against 3.3 LTS until 3.9 LTS lands.

sbt 2.0 moves from „someday” to „start testing now”

State of Scala 2026 notes sbt 2.0.0 RC builds (up to RC8 as of early February) and calls out tangible build‑performance improvements versus 1.x, especially for Scala 3 projects.
The same report highlights sbt 2.0.0‑M4 and later RCs as production‑like enough to warrant testing in CI, rather than treating sbt 2.x as a distant future.

Practical takeaway: if sbt is your standard, reserve time in Q2 2026 to trial sbt 2.0 on non‑critical services, tune CI caching, and clean up custom plugins that rely on 1.x internals.


Community Voice: What They’re Saying on Reddit

r/scala on Scala 3.8 and JDK 17+: Discussions around the „Scala 3 will require JDK 17+ from 3.8” announcement show many teams planning to keep 3.3 LTS for legacy while moving new work to 3.8.x, accepting minor breaking changes (like betterFors) as the cost of finally standardizing on JDK 17+.

r/scala on tooling: Weekly threads and newsletters (like This Week in Scala) keep circling back to the same theme: sbt 2.0 RCs and Scala CLI 1.0 are good enough that teams should stop treating their build setups as untouchable snowflakes and start converging on a small number of supported paths.


In the Know

State of Scala 2026 highlights that 92% of surveyed teams report some Scala 3 use, but many still run mixed 2.x/3.x estates, with 3.8.x and the upcoming 3.9 LTS seen as the moment to finally standardize.

Scala CLI has reached 1.0.0 and is now the official implementation of the scala command, which means scripting, one‑off experiments and small services can share the same tooling baseline as larger sbt builds.

On the JVM side more broadly, recent Java round‑ups and performance updates emphasize JDK 26 GA and JEP‑516’s ahead‑of‑time object caching with any GC, underlining that future performance wins will come from staying current on the JDK, not just tuning old runtimes harder.


Top Resources

Article: State of Scala 2026 – a concise overview of Scala 3.8, the 3.9 LTS roadmap, sbt 2.0 status, Scala CLI 1.0 and the Akka/Pekko landscape, with concrete „actions for 2026” you can turn into platform OKRs.

State of Scala 2026
Maturity, AI & Market Dynamics
Key metrics, ecosystem trends and action items for engineering teams
38%
Scala devs earn top-tier salaries
High pay, hard hire
43%
Teams struggling to hire
Despite premium salaries
+41%
Faster build startup
sbt 2.0 + Mill 1.0 native
JDK 17
New minimum — Scala 3.8+
JDK 8 officially dropped
Ecosystem dominance
Tool adoption rates
Scala 3
92% adoption
92%
sbt
90% dominance
90%
IntelliJ
69% usage
69%
AI & tooling
Build speed
+41%
faster
Metals MCP
AI agents compile & test
new
lz4-java
abandoned — migrate now
Technical roadmap
Now
Scala 3.7
Current production baseline. Metals adds MCP for AI agents. JDK 8 support ending.
Q2 2026
Scala 3.8 LTS
JDK 17 required. betterFors stabilizes. For-comprehension desugaring changes.
Stable target
Scala 3.9 LTS
Long-term stable production target. Plan migrations accordingly.
Action items
Migrate lz4-java immediately
Legacy library abandoned. Switch to the community fork before the 3.8 upgrade window.
Enable Metals AI integration
MCP support lets AI agents compile and run tests directly from the IDE.
Audit JDK across all services
Scala 3.8 drops JDK 8. Teams on legacy Java need a migration plan now.
Adopt native build launchers
sbt 2.0 and Mill 1.0 native launchers deliver the 41% build startup improvement.

Paper: Automating Skill Acquisition of Agentic Repositories – AI models fail on complex multi-step tasks because they lack reusable procedural knowledge. This paper shows that automatically extracting standardised skills from open-source repositories improves task completion efficiency by 40% while staying at human-level output quality. If your team is building internal coding assistants or agent tooling on top of JVM infrastructure, the skill extraction architecture here is the baseline to benchmark against.


Signal is published by Scalac. We build distributed systems for teams who ship.

What is SIGNAL? A monthly briefing for senior engineering leaders. Three sections: Architecture Debate, Notes from the Trenches, Signal Over Noise. No hype. No vendor pitches. Just lessons that matter.


References

Get the State of

Scala 2025 report

Download now

Authors

Latest Blogposts

02.06.2026 / By 

THE SIGNAL: What matters in distributed systems | #3

Header banner for The Signal newsletter by Scalac. Black background with red geometric accents. Text reads: "MAY 2026 / THE SIGNAL / What matters in the distributed systems." Scalac logo in the bottom right.

Here is what matters in distributed systems this month. Oracle proposed removing JVMCI — Amazon pushed back. Anthropic published a Claude Code production postmortem. OpenAI shipped WebSocket Responses API. MCP lands on the JVM.

28.05.2026 / By 

Shipping Faster Doesn’t Mean You Understand What You’ve Shipped

Two abstract figures: one rushing to ship code, one standing confused over what was built — illustration for article on AI-generated code and understanding

Łukasz Marchewka, CTO at Scalac, on the question most engineering teams have stopped asking: does anyone actually understand what we're building?

19.05.2026 / By 

Scalendar – June 2026

Welcome to the June 2026 edition of Scalendar — your monthly roundup of Scala events, meetups, conferences, and community happenings from around the world. This month features a strong mix of Scala, functional programming, data engineering, and AI-focused events, highlighting how Scala continues to play an important role in modern backend systems, distributed computing, and […]

software product development

Need a successful project?

Estimate project