Before Rewriting PHP in Go, Find Out What Is Actually Slow
A rewrite is a very expensive profiler. This is the order I investigate a slow PHP application in, and the point at which changing language actually becomes the right lever.
Blog
Notes from real backend work: PHP modernization, Go migration decisions, private AI workflows on infrastructure you control, and the architecture trade-offs behind them. Written for engineering leads who have to justify the call.
Getting an older PHP codebase back under control: framework upgrades, boundaries, tests and delivery speed.
A rewrite is a very expensive profiler. This is the order I investigate a slow PHP application in, and the point at which changing language actually becomes the right lever.
What is worth extracting into Go, what should stay in PHP, and how to decide.
Laravel is not the problem. This is a selective extraction strategy, which workloads leave, which stay, and how to run Go alongside Laravel without breaking auth, queues or the schema.
A workload-first approach to moving parts of a PHP system to Go, including what Go fixes, what it does not, and how to roll out changes without betting the product on a rewrite.
A workload-by-workload comparison of PHP and Go, runtime model, memory, concurrency, productivity and operations, without pretending either language wins everywhere.
A background consumer has no latency contract, an existing retry safety net and a one-page interface. That makes it the lowest-risk place to find out whether Go actually helps you.
How to add Go services to a long-lived Symfony platform one workload at a time, Doctrine boundaries, Messenger transports, tracing and rollback, while product work continues.
APIs, data ownership, queues, caching and the bottlenecks that actually show up in production.
Splitting a monolith trades in-process complexity for network complexity. Here is how to decide whether that trade is worth making, and how to make the first cut so it survives production.
How to route traffic, draw boundaries and move data ownership so a PHP monolith is replaced piece by piece instead of rewritten in one jump.
How senior backend capacity is bought, scoped and integrated on a B2B basis in Europe.
The situations where two or three senior days a week solve the problem, the situations where they clearly do not, and how to run the arrangement so it produces real output.
A practical guide to engagement models, interviews, total cost and B2B paperwork when you bring an experienced Go engineer into a European product team.
When a local or private model is justified, how the systems are built, and where a public API is still the better call.
How to turn meetings, interviews and recordings into private transcripts, summaries and a searchable archive without sending the audio to a public API.
Running a local model is easy. Running one that reliably improves a real workflow is not. This is the decision framework before anyone buys a GPU.
How model size, quantization, VRAM, RAM and concurrency interact, with workload profiles you can update as hardware and models change.
A side-by-side of local models and cloud APIs: what you pay, what you give up, and a decision tree that does not assume local is the answer.
What an on-premise LLM looks like as a service: inference, identity, storage, concurrency and the operational work that vendors normally hide.
How to let people ask questions about internal documents with citations, using local embeddings and a local model, and where that design fails.
The engagements below are where these articles come from. They run on one B2B agreement, invoiced monthly in EUR.
Offer 01
Deciding what stays in PHP, what gets modernized and what is genuinely worth extracting into Go. Migration Readiness Audit €1200 fixed.
Review the migration decision
Offer 02
Transcription, document search and internal assistants on infrastructure you control. Private AI Readiness Audit from €1500.
Review private AI deployment
Offer 03
A senior backend engineer inside your team, PHP, Go, APIs and distributed systems, at €400/day, up to 5 days per week.
See how the engagement works