Engineering & Runbooks

ADR-014: Postgres as Primary Datastore

신뢰도 높음개념편집: Cairni · 방금 · AI 생성v1

Overview

ADR-014 records the decision to use managed Postgres as the primary datastore for relational data — including users, notebooks, and billing — requiring strong consistency and flexible querying. Engineering — Incidents & Decisions.md

See also: Engineering Overview · Engineering — Incidents & Decisions.md


Context

The team needed a primary store for relational data (users, notebooks, billing) with the following requirements:

  • Strong consistency across writes
  • Transactional support (multi-table atomicity)
  • Ad-hoc query flexibility (SQL joins)

Engineering — Incidents & Decisions.md


Decision

Use managed Postgres as the primary datastore.

Schema migrations are managed via Alembic. Engineering — Incidents & Decisions.md


Alternatives Considered

OptionOutcomeReason for rejection
MongoDB❌ RejectedNo reliable transactions and joins; unsuitable for relational data
DynamoDB❌ RejectedOperational lock-in and weak ad-hoc query support
Postgres✅ ChosenStrong consistency, SQL flexibility, transaction support

Engineering — Incidents & Decisions.md


Consequences

Benefits accepted:

  • Strong consistency guarantees
  • Full SQL flexibility (joins, ad-hoc queries)
  • ACID transactions across tables

Costs accepted:

  • Manual schema migrations (managed via Alembic)

Engineering — Incidents & Decisions.md


Decision Map


Related Pages