Tern Blog

Tern's Open Beta
Introducing our AI agent for planning, then shipping, migrations. We built this to answer a simple question:
"So what's the plan?"
This is what you get asked when you have a genuinely good idea, but not much else. Your teammate, your boss, your CTO, whoever: they agree it'd be great to finally get off Angular, or migrate that home-built auth system, or switch from REST to GraphQL. So they expect you to have a plan.

Apollo GraphQL's CEO on Building for AI: It's Migration Velocity, Not Code Speed
The CEO of Apollo GraphQL on why your Mesozoic-era systems aren't going anywhere, and what that means for the companies that can reposition fast.
Read more →
How Snap Rewrote Everything in 18 Months While 200M Users Kept Snapping
In late 2017, Ben Hollis was lying in bed with pneumonia, wondering if he should quit.
Read more →
How Migrating SourceGraph’s Search Engine Would Change with AI
Rijnard van Tonder migrated the core search parser. His constraint was blunt: "I didn't want to piss off tens of thousands of engineers."
Read more →
Bad → OK → Awesome: A Field Guide to High‑Stakes Migrations
Twitter had six weeks before running out of tweet IDs. The schema change was easy, but that wasn't the hard part.
Read more →
The Storm Chaser Playbook
A guest user saw something they shouldn't. Slack takes channel permissions seriously. It's the core of why users trust it.
Read more →
You have to decide
Today's AI coding tools aren't built for engineers.
It's easy for anybody to vibe a new app. Product managers and designers can fire up one of 50 AI IDEs and have meaningful tools to prototype and experiment in codebases, large and small.
But these tools aren’t built to do engineering. Engineering means exploration, planning, and a million little choices. AI isn’t helping with that.
Yet.

They Migrated Every Slack Message, Right Before COVID Traffic Tripled
By late 2019, Slack’s biggest customer lived entirely on a single MySQL shard nick-named “542.” Capacity models said it would start dropping writes in 12-14 months if nothing changed.
Read more →
The iOS Developer Who Picked Nomad Over Kubernetes for Yext's 2,000 Services
Tom Elliott joined Yext in 2015 as an iOS developer. Within a year, both his mobile projects were canceled.
Read more →
When IBM Killed Our Database
Just 2 years into his first “real” engineering job, Andy was running the engineering team. And a RethinkDB was a ticking time bomb.
Read more →
When the Wrong Tool is the Right Choice: PagerDuty's Cassandra Queue
In 2011, PagerDuty was using MySQL as a queue. If you just winced, you understand the problem.
Read more →
Rebuilding a YC Real Estate Tech Stack from the Ground Up
"This is the most atypical job I’ve ever had—and I worked at WeWork."
Read more →
'“We Should Be Able to Drain an AZ': Slack's Cellular Architecture
Slack didn’t go down—but it came close, twice in a single day. Every service needed to be out of that AWS AZ.
Read more →
Slack's 6am Database Club
Slack didn’t plan this migration in advance. It started because IBM was breaking the system.
Read more →
Why Every Migration Feels Different (and what to do about it)
You’d think migrations would be repeatable. But even the same teams, doing the same upgrade, don't always do the same work.
Read more →
Making the Donuts: Stabilizing memcached at Slack's Scale
Slack’s memcached mostly worked — until it didn’t. Glen Sanford turned it from brittle and unowned to one of Slack’s most stable systems.
Read more →
Ratcheting Progress: How Lyft Migration 150+ Services from Python 2 to 3
What does it take to migrate 150 services to Python 3? At Lyft, the answer wasn’t just automation.
Read more →
What Litigation Teaches Us About Security Operations
Mike, a cybersecurity lawyer, works with companies after the worst has happened—ransomware, exfiltration, and worse.
Read more →
Outscaling ElasticSearch at Datadog: Upgrading the Core Datastore
Datadog’s observability platform was expanding rapidly, and they needed a new foundation. Enter Husky, their new columnar store, and a 3-year migration.
Read more →
5 Versions Behind, 4 Databases to Merge: Upgrading Postgres with Ninad Pundalik
When Postgres 11 approached end-of-life, Ninad stepped in to upgrade a site with multiple Rails apps, multiple DB instances, and no in-house infra team.
Read more →
Quitting CoffeeScript? First, Teach Everybody Typescript
If you were writing frontend code in 2013, you probably used CoffeeScript too. Hal Anil describe's Braze's journey to React and Typescript.
Read more →
Why your CTO hates migrations
Ryan and I met at Slack. I was working on infrastructure. He was working in product on a team that eventually would be called the Slack Common Objects Team (SCOT).
All we did was migrations.
Over dozens of these migrations, we realized there were 5 things that really bothered our leadership about migrations.

Migrate or die: overhauling the service catalog
A deep dive on Matt Ouille's service catalog migration at scale
Read more →Subscribe to our blog
Get the latest migration stories, right in your inbox.
