Subtracks & Tasks
Schema Migrations
Implement Database Schema Migrations
Database migrations version-control schema changes. Each migration has an `up()` function that applies the change and a `down()` function that reverse...
Implement Backward-Compatible Schema Migrations
A simple "rename column" migration breaks running app instances that still reference the old name. The **expand-contract pattern** avoids this: first ...
Implement Zero-Downtime Database Migrations
A naive `ALTER TABLE ADD COLUMN NOT NULL DEFAULT 'x'` rewrites the entire table and holds an exclusive lock, blocking all reads and writes. Zero-downt...
Implement Data Migrations
Data migrations transform existing data to match a new schema or business rule. Unlike schema migrations, they touch every row. Running them during pe...
Implement Migration Rollback Strategies
When a migration goes wrong in production, you need a rollback plan. Different situations call for different strategies: instant feature flag disables...
Protocol and API Evolution
Implement API Versioning
API versioning lets you evolve your API without breaking existing clients. You support multiple versions simultaneously, warn clients on deprecated on...
Implement Backward-Compatible API Changes
Backward compatibility means old clients continue to work after an API update. The golden rule: only make **additive** changes (new optional fields, n...
Implement Graceful API Degradation
Graceful degradation keeps your API functional even when downstream services are failing. Instead of returning errors, you serve cached data, disable ...
Implement Protocol Evolution
As services evolve, they add new fields and change message schemas. Protocol evolution strategies ensure old services can still read new messages (by ...
Implement Client Migration Strategy
Migrating clients from API v1 to v2 should be gradual and safe. Canary deployments start with a small percentage of traffic; a/b testing routes specif...
Interview Prep
Common interview questions for Backend / Database Engineer roles that map directly to what you build in this track. Click any question to reveal the model answer.
Questions are representative of real interview patterns. Model answers are starting points — adapt them with your own experience and the specific context of the interview.
Common Mistakes
The top 5 mistakes builders make in this track — and exactly how to fix them. Click any mistake to see the root cause and the correct approach.
Comparison Mode
Side-by-side comparisons of the approaches, algorithms, and trade-offs you encounter in this track. Expand any comparison to see a detailed breakdown.
Concepts Covered
Prerequisites
It is recommended to complete the previous tracks before starting this one. Concepts build progressively throughout the curriculum.
Rabbit Holes
For when you want to go deeper. Curated papers, posts, and talks beyond what this track covers.
Online, Asynchronous Schema Change in F1
Google's F1 paper on how they perform schema changes on a globally distributed database without downtime. Formalizes the state machine that a column or index must move through during a safe migration — the basis for the expand-contract pattern.
gh-ost: GitHub's Online Schema Migration Tool for MySQL
GitHub's tool for zero-downtime MySQL schema changes. The README explains the shadow table approach, the binary log tailing mechanism, and the atomic cutover strategy.
Stripe's Approach to Zero-Downtime Database Migrations
Stripe's engineering post on migrating large production tables using four phases: dual writing, backfilling, verifying, and switching. A practical walkthrough of production-safe schema evolution on tables with billions of rows.
Google API Design Guide: Compatibility
Google's API design guide section on backward compatibility covers which API changes are safe (adding optional fields) and which are breaking (removing fields, changing types). Directly applicable to designing APIs that evolve gracefully over years.