Why We Dropped PHP for Go: Lessons from Rebuilding a High‑Traffic Gaming Platform

In this article, Poki engineers explain why they abandoned PHP in favor of Go while migrating to a micro‑service architecture, discuss the performance and operational benefits of Go, evaluate NoSQL options like MongoDB and Cassandra, and justify sticking with MySQL for their high‑traffic gaming platform.

21CTO
21CTO
21CTO
Why We Dropped PHP for Go: Lessons from Rebuilding a High‑Traffic Gaming Platform

Poki, an online game publisher with over 30 million users, rebuilt its web platform to run on mobile, tablet, and desktop. An engineer from Poki shares the reasoning behind the programming language and database choices made during this refactor.

Microservices and PHP: A Bad Pairing

Initially the team considered staying with PHP because it was familiar and had a large talent pool. However, PHP’s high startup cost, lack of native persistence, and the need for Nginx plus PHP‑FPM in containers made it unsuitable for a micro‑service architecture that demands scalability and low overhead.

Containerizing PHP required running both Nginx and PHP‑FPM for each service, wasting resources and complicating deployment on Kubernetes. The team also concluded that hiring should focus on adaptable developers rather than PHP specialists.

Embracing Go

Go produces long‑running binaries with low request and connection startup costs, making it ideal for handling millions of concurrent users. Its small, statically linked binaries fit well in Docker containers, often only 4‑5 MB in size.

Being a statically typed language, Go catches many errors at compile time, improving code reliability. Its extensive standard toolchain simplifies development, though it currently lacks a built‑in dependency manager and can lead to verbose, formulaic code.

Exploring NoSQL

The team evaluated two NoSQL databases:

MongoDB : Considered for storing rich game metadata, but managing it on Google Cloud proved difficult and scalability concerns were raised.

Cassandra : Chosen for its linear scalability and use by high‑traffic platforms like Netflix, yet its operational complexity and heavy weight made it unsuitable for fast‑moving product development.

Sticking with SQL

Despite exploring NoSQL, the team decided to keep MySQL as the default database because of years of experience, proven performance, and the ability to distribute load across micro‑services using read replicas on 32‑core machines.

They remain open to using other databases like PostgreSQL if cloud‑native managed services become available.

Original Source

Signed-in readers can open the original source through BestHub's protected redirect.

Sign in to view source
Republication Notice

This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactadmin@besthub.devand we will review it promptly.

GoPHPNoSQLdatabase selection
21CTO
Written by

21CTO

21CTO (21CTO.com) offers developers community, training, and services, making it your go‑to learning and service platform.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.