ENGINEERING · 2026-06-17

What is Connectivity-as-Code?
The architecture pattern multiplayer game backends have been missing.

By Alexander Strandberg · Founder, Aevs

Connectivity-as-Code (CaC) is an architecture pattern where backend topology, routing rules, and validation plans are declared as version-controlled code. For multiplayer game backends, this means every pull request gets its own isolated sandbox environment — provisioned in under 60 seconds, validated automatically, and torn down on merge.

The result: integration bugs are caught before they reach players, not after. Pokémon GO's launch infamously collapsed under 50× projected load in 2016. Palworld's servers became unavailable within hours of launch in January 2024 due to unexpected concurrent connections. These failures share a root cause — the production topology was never tested at production-realistic conditions before Day 1. CaC is the architectural answer.

A note on the term. “Connectivity-as-Code” is also used in networking — vendors like Remote.It apply it to programmatic secure tunnels and IoT connectivity, and Cisco and Nokia ship an adjacent “Network as Code.” That is a different meaning. Here, Connectivity-as-Code is not Aevs's product identity or a VPN/tunnel offering — it is one pattern Aevs applies to a narrower problem: validating and gating backend netcode (the server-side protocol contract of a multiplayer game) in CI. Aevs's category is Netcode CI; the pattern below describes how it works.

Why are multiplayer game backends uniquely hard to test?

A typical web application has a predictable request-response topology: user → API → database. Failures are isolated and reproducible. Multiplayer game backends are fundamentally different.

They are stateful, concurrent, and emergent. Sessions persist across requests. Multiple players interact with shared state simultaneously. A race condition in matchmaking logic only surfaces when Player A and Player B join the queue within 200ms of each other — a timing condition almost impossible to reproduce with synthetic unit tests.

According to game developers on Hacker News and r/gamedev, the three most common backend failures at launch are: (1) session state corruption under concurrent load, (2) matchmaking queue deadlocks at 10× expected throughput, and (3) region failover triggering reconnect storms that amplify rather than absorb the initial spike. All three require realistic topology and realistic concurrent load to reproduce — conditions that a shared staging environment can almost never provide.

What does Connectivity-as-Code actually solve?

CaC addresses the core problem: the production topology is not tested before it becomes the production topology. Traditional infrastructure testing approaches fail for three structural reasons:

Shared staging environments

One shared staging environment means concurrent feature branches overwrite each other's state. The environment drifts from production over time. Engineers queue to use it.

Infrastructure-as-Code (IaC) alone

Terraform and Pulumi provision resources correctly, but they don't define what a passing test looks like for a given topology — or run that test automatically on every PR.

Manual QA at pre-launch

Human testers cannot simulate 10,000 concurrent players joining a matchmaking queue, nor can they reproduce an exact race condition that only occurred once in production.

Connectivity-as-Code solves all three. Each PR gets its own ephemeral sandbox — a complete isolated replica of your game server topology. Your validation plan (a TypeScript or C# file checked into the repository) runs automatically against it. The PR cannot merge until every step passes.

How does Connectivity-as-Code work?

Step 1: Declare your topology as code

A CaC plan is a declarative sequence of steps: HTTP requests, wait conditions, and assertions. It describes a user scenario — not a load test, but a precise sequence of interactions that must succeed for the PR to be considered safe.

aevs.plan.ts
export default {
  id: 'matchmaking-smoke',
  steps: [
    { type: 'http', method: 'POST', path: '/v1/match/queue',
      body: { playerId: 'p1', mode: '4v4' } },

    { type: 'wait', condition: 'match.status === "active"',
      timeout: 10_000 },

    { type: 'http', method: 'GET', path: '/v1/match/active',
      assert: { players: { length: 8 } } },
  ],
}

Step 2: Sandbox per pull request

When the PR opens, Aevs provisions a clean, isolated environment running your game server stack. Provisioning takes under 60 seconds. The sandbox has its own wildcard DNS subdomain (*.sandbox.aevs.app), its own database, and its own tunnel routing — completely isolated from every other branch.

Step 3: Validate, then merge

The validation plan runs automatically. Every step is executed against the sandbox. The PR receives a green status check when all steps pass. A failed assertion — say, the matchmaking queue returned 7 players instead of 8 — blocks merge and surfaces the exact step that failed, with the actual vs. expected response.

How is Connectivity-as-Code different from Infrastructure-as-Code?

Infrastructure-as-Code tools (Terraform, Pulumi, AWS CDK) answer the question: "How do I provision and manage cloud resources?" Connectivity-as-Code answers a different question: "How do I verify that these resources, once connected, behave correctly together?"

Infrastructure-as-CodeConnectivity-as-Code
What it declaresResources (VMs, databases, queues)Topology, routing rules, validation plans
What it testsResource provisioning successBehavioral correctness under realistic load
ScopeCI/CD infrastructure pipelinePer-PR ephemeral sandbox + validation gate
ExamplesTerraform, Pulumi, CDKAevs CaC plans + tunnel daemon
OutputRunning infrastructureGreen/red PR status check

IaC and CaC are complementary, not competing. Most studios using Aevs already have Terraform managing their AWS or GCP resources. Aevs sits above that layer — it consumes the infrastructure IaC provisions and uses it to run validation plans.

What are the core invariants of a good CaC implementation?

A CaC implementation is only trustworthy if four invariants hold:

Async-only

No SDK or connector may block the game engine's main thread. All I/O must be off-thread. A validation step that hangs the main thread is not a valid test — it's a bug.

Deterministic sandboxes

If a test fails inside a CaC sandbox, the failure must be in the studio's code — never in the sandbox infrastructure. Flaky infrastructure produces false positives that erode trust in the entire system.

Low coupling

The CaC layer must use standard protocols (REST, webhooks). A studio must be able to remove Aevs without their game breaking. Vendor lock-in in a testing layer is a production risk.

Anonymize, never hard-delete

For any PII captured during validation (player IDs, session tokens), the correct approach is token replacement, not record deletion. Cascading deletes to leaderboard or transaction tables during a test run would corrupt those tables.

Frequently asked questions

What is an ephemeral sandbox in the context of CaC?

An ephemeral sandbox is an isolated, short-lived environment that replicates your full game server topology for a single pull request. It is provisioned automatically when the PR opens, runs validation, and is torn down when the PR merges or closes. No shared state between branches. No standing environments to maintain.

Can CaC replace load testing?

No — and it is not designed to. CaC validates behavioral correctness at realistic concurrency for the scenario being tested (a matchmaking flow, a lobby creation, a session handoff). Dedicated load testing tools (k6, Gatling) answer a different question: "does the system survive N× projected peak traffic?" Both are necessary. CaC runs on every PR; load tests run pre-launch.

Does CaC work with existing game engines?

Yes. The CaC tunnel daemon and REST API are engine-agnostic — any game server that handles HTTP requests can be tested with a CaC plan. Aevs provides SDKs in TypeScript (for Node.js-based servers) and C# (for Unity and Unreal Engine). The validation plan runs in CI, not in the game engine itself.

What game backend infrastructure does CaC work with?

CaC is designed to be infrastructure-agnostic. Aevs sandboxes have been used with AWS GameLift, self-hosted Nakama, Photon server clusters, PlayFab-backed backends, and custom Go or Node.js game servers. The only requirement is that the game server stack can be containerized and responds to HTTP.

READY TO ADD CaC TO YOUR BACKEND?

Stop debugging production.
Start validating before you ship.

request access →