THE MIGRATION LINE
INCIDENT // KHAN-ACADEMY-2021 SHIPPED

How an end-of-life deadline turned into a full backend rewrite

KHAN ACADEMY · 2021 · LANGUAGE / BACKEND
System stress over time Breach at T+3
Python 2 From
Go To
EOL deadline Trigger
BASELINE

A Decade on Python 2

Khan Academy’s backend ran on Python 2 for over a decade, serving millions of learners. It worked, and the team knew it well.

DEADLINE

The Clock Everyone Knew About

Python 2’s official end of life landed in 2020. After that, no more security fixes. Staying on it wasn’t an option — but the obvious move, upgrading to Python 3, raised a bigger question: if a large, disruptive migration was unavoidable anyway, was a same-language upgrade really the best use of it?

DECISION

Choosing Go

The team picked Go: strongly typed, fast, and built for backend services, catching whole categories of bugs before code ever runs.

CUTOVER

Service by Service

Rather than one big-bang rewrite, the team moved service by service, running old and new side by side and shifting traffic incrementally. Each step stayed reversible.

AFTERMATH

Fewer Servers, Faster Responses

The Go backend ran faster on meaningfully fewer servers, cutting infrastructure costs while giving developers a type-checked codebase to build on.

Source — read the original

https://blog.khanacademy.org/half-life-1-the-incredible-shrinking-stack/

A plain-language, AI-drafted and human-edited retelling of the article published on blog.khanacademy.org, reorganized and explained in our own structure and words, with original analysis in the editor's note above. The facts, numbers, and decisions belong to the original author and are not altered. For the full depth, read the source.

← All systems