duo-backend-architecture
Make a server request fast and hard to break, using Duolingo's published engineering results as the case study. Covers what to delete from the synchronous request path, how to split data into precompute-and-cache versus caller-injected, how long to hold a lock and when to go optimistic, instrumenting the failure mode a fix trades you into, server-driven UI and versioning clients without branching on client version, when optimistic rendering is worth its rollback cost, and how to stage, fund and survive a long runtime migration. Use when someone says our API is slow, p99 latency, this endpoint has too many dependencies, database contention, lock timeouts, optimistic locking, we want to ship UI changes without an app release, server-driven UI, optimistic updates, should we roll back the prediction, how do we sell this migration to leadership, or the migration broke production.
- Version
- 2.0.0
- License
- MIT
Pinned to revision 78072c9528fb, so it is the text this page describes rather than whatever the author pushed since.
Files
- skills/duo-backend-architecture/SKILL.md
- skills/duo-backend-architecture/references/delete-dependencies-from-the-request-path.md
- skills/duo-backend-architecture/references/duplication-can-beat-the-abstraction.md
- skills/duo-backend-architecture/references/extract-what-blocks-its-own-improvement.md
- skills/duo-backend-architecture/references/hold-the-lock-only-over-shared-work.md
- skills/duo-backend-architecture/references/instrument-the-failure-mode-you-traded-into.md
- skills/duo-backend-architecture/references/move-the-ui-definition-to-the-server.md
- skills/duo-backend-architecture/references/pitch-migrations-in-the-sponsors-currency.md
- skills/duo-backend-architecture/references/predict-only-what-users-dont-care-about.md
- skills/duo-backend-architecture/references/prefer-a-loading-state-to-a-rollback.md
- skills/duo-backend-architecture/references/split-data-by-sharing-pattern.md
- skills/duo-backend-architecture/references/version-clients-by-last-good-config.md
Every link opens the file at its source, pinned to the revision this page describes.