Agentic hosting is here. Connect to our MCP now ->

Blog

Scaling shouldn't be a weekly engineering task

Scaling keeps coming back on your team's calendar because it's configured against traffic that never stops moving. Here's why that's not a tuning problem.

·by Steve McDougall

Look at your team's last few weeks and you will probably find scaling on the list. Not as a crisis, usually, just as work. A threshold that needed revisiting. A scaling rule that was tuned after a traffic pattern shifted. A spike that someone reacted to. A quiet conversation about whether the current configuration will hold through the next campaign. It recurs, sprint after sprint, and nobody treats that as strange. Scaling has become a standing item on the engineering calendar, and everyone has agreed, without ever discussing it, that this is simply what running a production application involves.

If you are an engineering leader running a production Laravel application on Kubernetes, EKS or GKE, or on cloud autoscaling with scaling rules your team configures and maintains, and you keep finding scaling work back on the team's plate, this is written for you. If you are learning capacity planning or running an application whose traffic never moves enough to matter, it is not. I want to challenge the thing everyone has quietly accepted, because the acceptance is the problem. Scaling as recurring engineering work is not inherent to production. It is a symptom of your team owning the scaling mechanism. And Sevalla is built on the premise that scaling should be a behavior the platform provides, not a task that shows up on your team's calendar every week.

The tell is that scaling shows up on the calendar

Start with the symptom that everyone has normalized, because naming it is most of the work. On a lot of teams, scaling has an owner. It generates its own tickets. It comes up in planning. It holds a recurring place in the team's time, the same way code review or dependency updates do. It is, in every practical sense, a job someone on your team holds.

Ask why, and the honest answer is that nobody decided it should be. Scaling became a standing task the way most operational burdens do, by accreting quietly until it felt permanent, and things that feel permanent stop getting questioned. That is the trap: an accepted cost of doing business, sitting on the calendar, unexamined. The first step is simply to notice it is there and refuse to treat it as inevitable.

Manual scaling never becomes done

Here is why the task never goes away, and it is structural rather than a matter of doing it better. When your team configures scaling by hand, you are setting rules against the traffic you have today. You pick thresholds, you size the capacity, you tune the autoscaler to the patterns you currently see. And for a while, it holds.

Then the traffic changes, because traffic always changes. A new feature shifts the load profile. A marketing push arrives. Usage grows, or moves to a different time of day, or concentrates on a different part of the application. The rules you set against last quarter's patterns are now tuned to a reality that no longer exists, so someone re-tunes them against the new patterns, which will themselves change. That is the trap: manual scaling is configured against a moving target, so it never converges and never becomes done. Every tuning is provisional, and the task regenerates itself out of the same mechanism that made it necessary.

The babysitting tax, and the spike that proves it

Between the re-tunings sits the steady cost, which is watching. Someone has to monitor whether the current configuration is coping, keep an eye on the metrics, and stay ready to adjust when something moves. It is low-grade, continuous attention, the operational equivalent of never quite being able to put something down. Scaling that your team owns is scaling your team has to babysit.

And then the spike comes, and the spike is what exposes the whole arrangement. Real load arrives faster than the rules anticipated, and now someone is adjusting scaling configuration live, during an incident, while the application is under exactly the kind of pressure the scaling was supposed to absorb. You get instability at the worst possible moment, precisely when reliability matters most. Then, to understand what actually went wrong, that engineer is digging across multiple tools and logs, correlating metrics from one place with errors from another, trying to see the behavior clearly enough to act. The recurring task was supposed to prevent this, and instead the recurring task is happening in real time, under duress, on the day it counts. That is the babysitting tax coming due all at once.

It scales against your team, not with your traffic

For a leader, here is the part that should sharpen the concern, because it changes as your company changes, and not in your favor. The scaling work does not stay constant. It grows with the product. More services means more things to scale. More traffic means more patterns to tune against. More success means more load, more spikes, more configuration to maintain. The operational tax of manual scaling rises in direct proportion to how well the business is doing.

So the burden scales against your team rather than with your traffic. The platform is supposed to absorb load so your people do not have to think about it, and instead the better things go, the more of your team's attention scaling demands. This is the "too much overhead for our team size" feeling that smaller teams hit as they grow, and it is not a sign anyone is doing it wrong. It is the mechanism working as designed. And the people paying the tax are your most experienced engineers, because they are the ones who understand the system well enough to tune it safely, so every hour scaling takes is an hour of your best judgment spent babysitting infrastructure instead of building the product generating all the load in the first place.

Getting better at scaling rules is not the fix

The instinct once this is visible is to get better at the task. Write smarter autoscaling policies. Feed them better metrics. Build more sophisticated tuning, add predictive scaling, maybe assign someone to own scaling properly so at least it is handled by a specialist. Bring real rigor to the thing that has been eating your team's weeks. This is also the direction the hyperscalers point you: AWS and Google Cloud answer scaling by handing you more machinery to manage it, more autoscaler primitives, more metrics, more knobs, all of it more capable and all of it still yours to operate. Sevalla's argument is the opposite one. The problem is not that you need better tools for managing the scaling layer. It is that most product teams should not be managing that layer at all.

Every one of those instincts makes you better at a task that should not be a task, and none of them ends it. Smarter rules still need maintaining as traffic moves. Better metrics still require someone watching them. A dedicated owner does not remove the work, it commits a person to it permanently and makes the dependency official. You have optimized the babysitting, not stopped it, and the moving target that made scaling a recurring task is still moving. The fix is not a more sophisticated version of owning the scaling mechanism. It is not owning the scaling mechanism. When scaling is a behavior the platform provides rather than a decision your team keeps making, the application expands and contracts with load and nobody is tuning thresholds, watching metrics, or adjusting configuration during a spike, because there is no configuration your team holds. The recurring task does not get smaller. It leaves the calendar.

What it looks like when scaling is not a task

Here is what removes scaling from your team's week, a Laravel 13 application on PHP 8.5 deployed on Sevalla. This is everything your team provides:

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=stderr

Scaling here is built in and happens without manual configuration. The application meets load and contracts when the load passes, on production-ready defaults, with no thresholds for your team to pick and no cluster to manage underneath. Nobody is tuning autoscaler rules against last quarter's traffic, because there are no rules your team owns to tune. And when you do want to understand performance, observability is unified rather than scattered, so seeing how the application behaves under load is not a hunt across disconnected tools. Your team deploys from Git. Sevalla handles runtime orchestration, networking, scaling, failover, observability, and deployment workflows behind the platform boundary. Scaling stops being a task because it stops being a thing your team operates.

One honest boundary. The platform owning the scaling mechanism does not make your application infinitely fast or absolve it of its own behavior. Your code, its performance characteristics, the efficiency of your queries, your configuration values, your data, and your integrations remain yours. If an endpoint is slow because of a genuinely inefficient query, scaling will not hide that forever, and it should not, because that is your code to fix and your developers are the right people to fix it. What leaves your team is the operational work of sizing and tuning capacity to match load. What stays is ownership of how your application performs, which is exactly the part you actually want to own.

Count how many times scaling came back

Here is how to size this for your own team. Look back over the last quarter and count the number of times scaling work returned to someone's plate: the tunings, the threshold revisits, the spike responses, the planning conversations about whether capacity will hold. Then note whose time it took, because it was almost certainly your most senior people. That count is the shape of a task that should not exist, and the total is what the normalization has been costing you while everyone treated it as ordinary.

If scaling is a recurring line item on your team's time, quarter after quarter, the answer is not a better rule or a smarter policy. Those keep the task and make it fancier. The answer is to take scaling off the calendar entirely by handing the mechanism to a platform that provides it as a behavior rather than a decision. Sevalla is where scaling stops being something your engineers do every week and becomes something that simply happens. Count the times it came back this quarter, then decide whether that is work your team should be doing at all.

Deep dive into the cloud!

Deploy your application, database, or static site in minutes.