The signs you've accidentally built a platform team
If your senior engineers spend more time on the cluster than the codebase, you've already built a platform team — you just never approved it.
There is a moment a lot of engineering leaders have and do not quite say out loud. You are looking back over the last two weeks, trying to account for where the team's time actually went, and the honest answer is unsettling. A meaningful share of it went into the cluster. Node pool upgrades. A Helm chart that drifted. An ingress change that broke in a way that took an afternoon to trace. A CI pipeline that needed rescuing before a release could go out. None of that was on the roadmap. Nobody was assigned to it. And yet it consumed some of your best people, again, the way it did last month.
If you are leading a product team running a production Laravel application on your own Kubernetes setup, whether that is EKS, GKE, or a self-managed cluster with Helm charts and manifests and a CI pipeline holding it together, this is written for you. If you are a platform engineer by trade, or you are learning Kubernetes on a side project, it is not. I am talking to the leaders of teams that were hired to build a product and have quietly become something else. Because here is the thing nobody decided: at some point, you started operating like a platform engineering team. You did not choose that. You accreted it, one reasonable decision at a time, and the drift was slow enough that it never triggered a conversation.
Sevalla starts from a simple premise: the platform layer underneath your application was never your team's job to staff. A platform should absorb it, so your engineers can focus on shipping features instead of operating infrastructure. Hold that idea while I walk through the signs, because the point of naming them is not to make you feel bad about the cluster. It is to show you that the platform team you are running was never supposed to exist.
Nobody ever approved this headcount#
Think about how any other function gets added to a company. Someone makes a case. There is a budget line, a hiring decision, an explicit choice that this work is worth these people. Platform work almost never arrives that way on a product team. It arrives through the side door.
You needed to deploy the application, so someone wrote the manifests. You needed reliability, so you moved to a managed cluster. You needed the cluster to behave consistently, so you templated it with Helm. You needed the pipeline to handle more cases, so it grew. Every step was defensible. Nobody ever stood up in a planning meeting and proposed that the company fund a platform team. But the work of a platform team is now being done, by people whose names are on product roadmaps, and it is being paid for out of the one budget you cannot see: your feature capacity. That is the first sign, and it is the one that makes all the others possible. The platform team exists. It was simply never approved.
There is another way to run production#
Before the rest of the signs, it is worth naming the reference point, because most leaders have never seen one. There are production Laravel teams shipping to real customers at real scale who have no platform layer of their own at all. No cluster. No manifests. No pipeline anyone owns. Not because they are smaller or less serious, but because they made a deliberate decision that the operating layer belongs to a platform rather than to their payroll.
That is the comparison worth holding as you read on. The question underneath every sign below is not whether your team handles the cluster well. It is whether a team in your position should be handling one at all.
Your senior engineers live in the cluster, not the codebase#
Look at who does the platform work when it surfaces. It is not the junior developers. It is the two or three most experienced engineers on the team, because they are the only ones who can safely touch it.
That is the problem. The people carrying your cluster are the people who should be making your hardest product decisions. Every hour a senior engineer spends debugging a failed rollout is an hour not spent on the architecture that shapes the next year, or on the developers who will carry the team after them. You are spending your scarcest judgment on work no customer will ever see.
A product change now requires a platform change#
Here is a test worth applying. When a developer ships a straightforward feature, how many systems do they touch that have nothing to do with the feature?
On a team that has drifted, the answer creeps upward. A background job means touching the worker deployment and the scaling configuration. A new service call means editing network policy. A change to how the application boots means revisiting the readiness probe. The feature was small. The blast radius is not. Your product velocity is now gated by infrastructure work, and every small change touches too many moving parts. The cluster is no longer supporting your product. It is standing between your team and it.
Onboarding means teaching the cluster first#
Ask how long it takes a new hire to ship something real. On a team quietly running a platform, the honest number is weeks, and most of them go to infrastructure rather than the product.
When a developer cannot be productive until they understand your Helm layout, your namespace conventions, and where the pipeline hides its secrets, you are not onboarding them onto your product. You are onboarding them onto your platform. That ramp cost repeats with every hire you make.
You have adopted the rituals of a platform team#
The last sign is cultural, and it is the clearest once you look for it. Real platform teams have distinctive habits: on-call rotations for infrastructure, a standing backlog of infra tickets competing with feature work, internal tooling that needs its own maintenance, postmortems about the cluster rather than the product.
Count how many you have quietly adopted. If someone carries a pager for the cluster, if your backlog has a permanent infrastructure section, then you are not a product team that occasionally does infrastructure. You are running a platform team that also, when there is time left over, ships features. The order of that sentence is the whole problem.
What this is costing the business#
Everything above reads like an engineering problem. It is not. It is a business problem wearing engineering clothes, and the costs land in places your board would recognize immediately.
Start with release dates. Features do not slip because they were hard. They slip because the people who would have finished them spent the sprint on a node pool upgrade and an ingress failure that only reproduced under load. Multiply that across a year and your roadmap does not just run late, it runs shorter. The architectural work that would have made next year cheaper never gets done, because it is important and never urgent, and the cluster is always urgent. You are accumulating product debt to service infrastructure you never meant to own.
Then look at hiring. The accidental platform team creates a distinctive kind of pressure, where the next role you open is justified by keeping infrastructure running rather than by building the product. That is the drift made visible in your org chart, and it is expensive twice over: once in salary, and again in the fact that you are spending a hire on operations while your competitors spend theirs on features. Meanwhile, every new developer you do bring in loses weeks to learning your cluster before contributing anything a customer can use.
And there is a risk nobody prices. The two engineers who understand your platform are a single point of failure. When one leaves, you lose institutional knowledge that lives nowhere else, and your release cadence takes the hit while the team relearns a system it never chose to build. That is a business continuity exposure created entirely by work that was never on anyone's plan.
Making it official is not the fix#
Here is where most leaders take the wrong turn, and I understand why. Once you recognize the drift, the instinct is to legitimize it. Hire a dedicated platform engineer. Adopt a tool that makes the cluster easier to manage. Formalize the rotation and the infra backlog so at least the work is organized.
Every one of those ratifies the drift instead of reversing it. Hiring a platform engineer does not remove the platform work. It commits headcount to it permanently and makes the dependency structural. Adopting a tool to manage the cluster never asks whether you should be running a cluster at all. Organizing the infra backlog just makes a permanent tax feel tidy. All of it accepts the premise that a product team should operate a platform, then tries to do it more gracefully. The alternative is not a better-run platform team. It is not having one.
What it looks like with no platform team to staff#
Here is a Laravel 13 application on PHP 8.5, deployed on Sevalla. This is the entire surface your team is responsible for:
app:
name: my-laravel-app
runtime: php
version: "8.5"
build:
buildpacks: true
run:
- composer install --no-dev --optimize-autoloader
- php artisan config:cache
- php artisan route:cache
- php artisan view:cache
workers:
- name: queue
command: php artisan queue:work --sleep=3 --tries=3
crons:
- name: scheduler
schedule: "* * * * *"
command: php artisan schedule:run
environment:
- APP_ENV=production
- LOG_CHANNEL=stderrThere are no manifests to maintain, no Helm charts to template, no node pools to upgrade, no network policies to reason about, no readiness probes to tune, no ingress to debug. Queues are workers. The scheduler is a cron. Environment variables live in the dashboard. Your team deploys from Git. Sevalla handles runtime orchestration, networking, scaling, failover, observability, and deployment workflows behind the platform boundary.
Watch what happens to every sign at once. There is no cluster for your senior engineers to live inside, so their attention returns to the codebase. A feature change is only a feature change. A new developer learns your product on day one. There are no platform rituals to adopt, because there is no platform to keep alive. The team you accidentally built has nothing left to do, which is exactly the point.
The only question that matters now#
The platform team already exists. It is on your payroll, funded out of feature capacity that no invoice will ever itemize, staffed by the engineers you hired to build your product. That part is settled. What is left is a decision, and it is yours to make.
So make it deliberately, and answer the question properly. Not whether your team could run the cluster more cleanly, because that question always has a yes attached and it has never once been the point. The question is whether operating infrastructure is work your company should be doing at all. If your competitive advantage lives in your product, and it does, then every engineer pointed at the cluster is an engineer pointed away from the only thing that will decide whether you win.
You will not drift out of this the way you drifted into it. Nobody decided to build the platform team, but someone has to decide to stop funding it, and that person is you. Sevalla is where the layer goes. The only real question is how many more quarters you are willing to spend running infrastructure you never meant to own.