Services

Platform Engineering

Platform engineering is about building the internal platform other engineers build on top of — so each team isn’t solving the same infrastructure problems independently, and provisioning a new service doesn’t mean re-deriving how deployment, secrets, and networking are supposed to work.

In practice: GitOps-driven Kubernetes platforms, self-service patterns via Helm and FluxCD, and Infrastructure-as-Code that’s reusable across projects rather than bespoke per team.

Problems this usually starts from

These are the kinds of things that usually prompt someone to get in touch:

  • Every team re-solves the same deployment, secrets, and networking problems independently.
  • Provisioning a new service means copying and adapting someone else’s setup and hoping it’s current.
  • There’s no self-service path, so every change routes through one overloaded team.
  • Kubernetes is running, but nobody’s agreed what “the platform” actually includes.
  • Infrastructure-as-Code exists, but it’s bespoke per project rather than reusable.
  • Standards exist on paper but aren’t enforced anywhere in practice.
  • Onboarding a new engineer means walking them through undocumented tribal knowledge first.

What an engagement looks like

Starts with understanding what teams are actually building against today — which parts of the platform are genuinely shared, and which are duplicated per team without anyone deciding that on purpose. From there: GitOps-driven Kubernetes platforms, self-service patterns via Helm and FluxCD, and Infrastructure-as-Code that’s reusable rather than copy-pasted.

Scope is either a fixed piece of work (standardising one part of the platform, a specific migration) or an ongoing placement building it out over time. Deliverables are things teams can actually build on: documented, reusable modules and patterns, not a one-off cluster only I understand.

Typical work looks like: Helm charts and FluxCD Kustomizations that make “add a new service” a pull request rather than a ticket to another team; RBAC and namespace conventions that still hold up once the platform’s grown past the first few teams using it; and Terraform modules written to be reused, not copied, edited, and quietly diverged from the original.

Engagements typically run anywhere from a few days for standardising one specific piece up to several months for building the platform out over time — there’s no minimum contract length, and scope can start small and grow once it’s clear the working relationship fits.

Questions

Remote or on-site?

Either — depends on the engagement. Comfortable with a regular on-site day where required.

Long contracts only, or shorter work too?

Both. That includes urgent, one-off issues — a platform component that's broken and blocking every team, a cluster in a bad state — not just fixed-scope projects or longer placements. No running contract required to get started on something like that.

What if there's already a platform team in place?

Common, and usually the point — working alongside an existing team to build out or standardise what's already started, not replacing it.

Does this mean migrating everything to Kubernetes?

No — the platform serves whatever's actually running. Some workloads fit Kubernetes well; others don't, and forcing them in usually creates more problems than it solves.

Do you work with a specific cloud provider?

Most commonly AWS, but the platform patterns — Kubernetes, Helm, FluxCD, Terraform — aren't tied to one provider and carry over to whatever's actually in use.

What size team is this usually a fit for?

No fixed minimum — it comes up as often for a handful of engineers deciding on conventions early as it does for a larger org whose platform has grown past what one team can maintain alone.

Get in touch

Also