40M
Migrating 40 million comments without losing one
A full migration of the comment platform behind a high-traffic publisher, with instant rollback.
- typescript
- nextjs
- kubernetes
- stripe
PHP carries a reputation that stopped matching the language years ago. Today's PHP has declared types on parameters, properties and return values, enumerations, and a static analysis ecosystem that finds bugs before a single line runs. What has not changed is something else: the distance between PHP written with discipline and PHP written in a hurry is still enormous, and most of the PHP that causes trouble belongs to the second group.
Our way of proving which group we work in is to show the code. ZoneMirror, our cPanel and WHM plugin for replicating DNS zones to Cloudflare, is published under the MIT license: static analysis at PHPStan level 8, the strictest level on the usual scale, and 690 test methods running green against PHP 8.2, 8.3 and 8.4 in continuous integration. That is not repository decoration: it is what makes it possible to upgrade the PHP version the day it is due, instead of postponing it for years out of fear of what might break.
The other half of PHP work is not in the code, it is on the server. PHP lives inside a concrete configuration — version, extensions, memory limits, and on shared hosting layers like CloudLinux and CageFS — and a real share of production problems is born there rather than in the application. We cover that part too, and it is documented in public: the diagnostic cases we have solved on cPanel servers are written up on the blog, with the symptom, the cause and the complete fix.
With legacy applications the criterion is the same and the order matters: first pin the version and the dependencies, then static analysis with a baseline of what exists, then tests around each area before changing it. Rewriting is sometimes the right answer, but it is almost never the first one, and taken without measuring it is the most expensive way to rediscover what the old system already knew. If your PHP application works but nobody dares touch it, that is exactly the starting point we know how to work with.
The specifics
40M
A full migration of the comment platform behind a high-traffic publisher, with instant rollback.
Level 8
An MIT-licensed cPanel and WHM plugin, multi-tenant, with per-user encrypted tokens and a systemd-supervised daemon. No cron.
GKE
The layer nobody sees: Helm charts, a GKE Gateway API migration and per-environment deployment workflows, so a product team can ship without becoming cluster experts.
24M
Frontend, performance and production reliability on a real-time pricing platform.
How we work
The same process on a three-week engagement and on a two-year platform.
One session to understand the business process, not to show templates. We leave with priorities and a phased price.
Data model, integrations and a performance budget before the first screen is written.
Weekly releases to an environment you can visit. What gets approved gets deployed, it does not pile up.
Monitoring, verified backups and deployments anyone on the team can run.
The language is not; some ways of writing it are. Today's PHP has declared types, a reasonable error model and static analysis tooling on par with any serious ecosystem. The difference between a maintainable PHP application and one nobody dares touch is not the language: it is whether there are types, tests and static analysis, or whether all of that was replaced by habit and luck.
Yes, and the first step is never a rewrite. It is pinning the PHP version and its extensions, putting static analysis in place as a net with a baseline of what already exists, and writing tests around what is about to change before changing it. From there every change leaves the system a little better measured than before, and the rewrite decision, if it ever comes, is made with data rather than exhaustion.
One with active security support, today the 8.2 branch or later, with the upgrade tested in a separate environment before production. Staying on an unsupported version does not freeze the risk: it accumulates it, because every year without upgrading makes the jump bigger and more expensive. Our platform code is tested against 8.2, 8.3 and 8.4 at once precisely so the version is never the emergency.
WordPress is PHP, but it is a different conversation: there the important decision is when the CMS fits and when it stops fitting, and it has its own page. This page is about PHP as a platform language: applications, server plugins and custom code where the decisions are engineering decisions, not plugin-ecosystem decisions.
Next step
We reply within one business day with a phased scope proposal, or with the reason we are not the right studio for it.
We use one analytics cookie to see which pages get read. No advertising, no profiling, and nothing is set without your permission. Read the cookie policy