Software • 2026-07-03 • 8 min

Building Durable Software Platforms

Platforms, APIs and interfaces built with instrumentation from day one. Notes on the architectural choices that keep a system honest as it grows.

A durable platform is one you can still change three years in. That is not a function of the framework you pick — it is a function of the seams you leave. Good platforms are mostly seams: boundaries between modules wide enough to reason about each side independently.

Instrumentation from day one

The first feature we ship on any new platform is not a user feature. It is structured logging, metrics, and a trace header that flows through every request. Everything built after that is measurable by default.

// a request handler that is observable by construction
app.post('/runs', async (req, res) => {
  const span = tracer.startSpan('runs.create', { traceId: req.traceId });
  try {
    const run = await runs.create(req.body, { span });
    metrics.inc('runs.created', { status: run.status });
    res.json(run);
  } catch (err) {
    span.setError(err);
    metrics.inc('runs.failed', { reason: err.code });
    res.status(500).json({ error: err.code });
  } finally {
    span.end();
  }
});

APIs as contracts

Every public endpoint is a contract: a documented schema, a version, and a deprecation policy. The schema lives in the repo, generates client types, and is enforced at the boundary. If the server and the client disagree, the build fails — not the production request.

A platform you cannot change is a platform you will eventually abandon. Leave the seams.— Systems Group

Durability is boring on purpose. No clever tricks, no tight coupling, no optimizations that trade tomorrow for today. The reward is a system that is still a pleasure to work on years later — and a team that is not afraid to touch it.

Software Engineering Systems Group
Code Icon Editorial Standards · Verified Code