LabHub

블로그

분산 데이터베이스 2025 완전 가이드 — CockroachDB·Spanner·TiDB·YugabyteDB·Aurora DSQL·Neon·PlanetScale·Turso·D1 심층 비교 (시즌 7 3화)

한국어English日本語

프롤로그 — "어느 DB 쓸까?"라는 질문이 다시 어려워진 이유

2015년쯤엔 간단했다. "관계형이면 Postgres, 속도면 MySQL, 문서면 Mongo, 캐시면 Redis." 10년이 지나 2026년 현재, "어느 DB?"를 물으면 후보가 10개 넘게 튀어나온다. Neon? Supabase? PlanetScale? CockroachDB? Spanner? TiDB? Yugabyte? Aurora DSQL? Turso? D1? 심지어 "Postgres"라고만 말해도 어떤 Postgres인지가 따로 주제가 된다.

왜 이렇게 됐나. 세 가지 힘이 동시에 움직였다.

  1. 서버리스와 엣지의 보편화 — Vercel·Cloudflare·AWS Lambda 같은 단명 런타임이 주류가 되면서, "커넥션 풀을 영원히 들고 있는 DB"가 어울리지 않게 됐다. 연결 폭주와 콜드스타트가 문제.
  2. 멀티리전·글로벌 유저 — 한 리전 Postgres 하나로 전 세계 유저를 감당하려니, 지연시간과 데이터 주권이 걸림돌. 분산 SQL이 "더 이상 Google만의 문제"가 아님.
  3. 비용 모델 재편 — 유휴 상태에서도 벌크로 과금되는 RDS 대신, 스케일-투-제로가 가능한 서버리스 DB가 스타트업과 사이드 프로젝트의 기본값이 됐다.

이 글은 분산 SQL과 서버리스/엣지 DB가 어떻게 갈라졌고, 각자 어느 문제에 잘 맞는지를 실전 선택 기준으로 정리한다. "어느 게 제일 좋냐"가 아니라 "어느 문제엔 뭐가 맞냐"가 목표다.


1장. CAP·PACELC를 다시 읽는다

10년 전에는 "CAP 중 둘 고르기"로 끝냈지만, 2020년 이후 PACELC(Partition: A vs C / Else: Latency vs Consistency)가 더 유용한 분류 기준이 됐다. 네트워크 파티션이 발생했을 때뿐 아니라, 정상 상황에서도 지연과 일관성은 트레이드오프라는 얘기다.

시스템파티션 시평시
DynamoDB, CassandraA (가용성)L (저지연)
Spanner, CockroachDBC (일관성)C (강일관성)
MongoDB (기본)AL
MongoDB (majority write)CL→C

"강일관성(Strict Serializable)"은 공짜가 아니다. Spanner는 TrueTime(원자시계 + GPS)으로 한 리전 내 쓰기에 수ms를 쓴다. CockroachDB는 하이브리드 논리 클럭과 커밋 대기(commit-wait)로 비슷한 속성을 만들지만, 멀티리전 쓰기는 한 왕복 + 합의 지연을 피할 수 없다. 이 지연을 수용할 수 있느냐가 분산 SQL 선택의 첫 질문이다.

실전 체크


2장. 분산 SQL 3대장 — Spanner, CockroachDB, TiDB

2.1 Google Cloud Spanner

무엇인가. 구글이 2012년에 내놓고 지금도 구글 검색·애드워즈 뒤에서 돌아가는 원조 글로벌 분산 RDB. 2023년 말 Postgres 인터페이스가 GA 되면서 "Postgres 문법으로 쓰는 글로벌 DB"라는 포지션이 명확해졌다.

특징.

언제 쓰나.

언제 피하나.

2.2 CockroachDB

무엇인가. 2015년 출시된 "오픈소스 Spanner" 컨셉. Postgres 와이어 프로토콜 호환. Raft 합의 + 하이브리드 논리 클럭.

2024–2025 변화.

장점.

단점.

언제 쓰나.

2.3 TiDB

무엇인가. PingCAP이 만든 MySQL 프로토콜 호환 분산 SQL. "MySQL 대체를 꿈꾸던" 아시아권(특히 중국·일본·한국 일부)에서 큰 존재감.

구조.

2024–2025 업데이트.

강점.

약점.

2.4 세 제품 요약

항목SpannerCockroachDBTiDB
프로토콜PostgresPostgresMySQL
멀티리전 쓰기최강보통
HTAP보통강(TiFlash)
벤더 락인GCP낮음낮음
가격비쌈중~낮
오픈소스복잡(BSL)Apache 2.0

3장. Yugabyte — "정말 Postgres인 분산 SQL"

YugabyteDB는 Spanner/Cockroach와 구조가 비슷하지만 차별점이 분명하다. YSQL은 실제 Postgres 코드를 포크해 쓴다. 즉, Postgres 13+의 문법·함수·확장(특히 pgcrypto, pg_trgm, pgvector)이 "재구현"이 아니라 거의 그대로 동작한다.

주요 포인트

언제 쓰나

단점


4장. Aurora DSQL — AWS의 "서버리스 + 분산 + Postgres"

2024년 re:Invent에서 공개된 Amazon Aurora DSQL은 분산 SQL 시장의 판도를 흔든 공식 발표였다.

핵심 주장

특이한 선택

한계

언제 쓰나

언제 피하나


5장. 서버리스 Postgres 3대장 — Neon, Supabase, PlanetScale

여기부터는 "글로벌 분산이 아니라 단일 리전 Postgres를 서버리스로" 제공하는 제품군. 서버리스 프론트엔드(Vercel, Cloudflare Pages)와 가장 잘 맞는 조합이다.

5.1 Neon — "Git 같은 브랜칭이 가능한 Postgres"

독특한 점.

약점.

5.2 Supabase — "Postgres + Auth + Storage + RT + Edge Functions"

무엇인가. Postgres를 중심으로 Firebase 스타일 백엔드를 묶은 스택.

2024–2025 포인트.

약점.

5.3 PlanetScale — "처음엔 MySQL, 이제 Postgres"

흐름.

장점.

단점.

5.4 세 제품 요약

항목NeonSupabasePlanetScale
프로토콜PostgresPostgresMySQL + Postgres
브랜칭최강있음
스케일-투-제로OO(Pro)제한
무료 티어OO
백엔드-as-a-Service 번들O
매니지드 벡터pgvectorpgvectorpgvector

6장. 엣지 SQLite — Turso/libSQL, Cloudflare D1

"DB를 유저 가까이 둔다"는 아이디어는 오래됐지만, 2023–2024년에야 실전 제품이 됐다.

6.1 Turso / libSQL

구조. SQLite 포크인 libSQL을 사용. 임베디드 복제(Embedded Replicas)가 핵심:

  1. 마스터(쓰기)는 특정 리전에 있음.
  2. 각 엣지 노드/서버가 로컬에 SQLite 파일 복제본을 유지.
  3. 읽기는 로컬 파일에서 → 마이크로초 지연.
  4. 쓰기는 마스터로 전송 → 읽기와 분리된 지연.

장점.

약점.

6.2 Cloudflare D1

무엇인가. Cloudflare Workers 환경에 통합된 SQLite 기반 DB.

2024–2025.

약점.

6.3 언제 쓰나


7장. "Postgres 확장 전쟁" — pgvector, Citus, TimescaleDB, pgmq

Postgres 자체가 "단순 RDB"에서 "데이터 플랫폼"으로 진화한 게 2022–2025년의 큰 흐름이다. 확장이 핵심.

대표 확장

실전 조언


8장. 커넥션 관리 — 서버리스의 진짜 병목

서버리스 환경에서 Postgres를 쓸 때 진짜 문제는 "DB 성능"이 아니라 커넥션이다. Lambda 1000개가 각각 DB 직결하면 Postgres는 수백 연결에서 무너진다.

해결책 맵

도구위치특징
PgBouncer앱↔DB 사이전통 강자. 트랜잭션/세션 풀링. 운영 노하우 많음.
SupavisorSupabase 내장Postgres 와이어 프로토콜 커넥션 풀러(Elixir). IPv6·테넌트 분리.
Neon PoolerNeon 내장기본 활성화. 서버리스 지연에 최적화.
RDS ProxyAWS관리형. Lambda 전용으로 최적화되어 있음.
Prisma AccelerateSaaS전역 엣지 커넥션 풀 + 쿼리 캐시. 지리적 지연 감소에 유용.
HTTP Driver (Neon/Planetscale)클라이언트커넥션 자체를 버리고 HTTPS로 쿼리. 서버리스에 딱.

골라주기


9장. 마이그레이션·스키마 변경 — 2025년의 모범

DB 제품의 "진짜 차이"는 상당 부분 마이그레이션 UX에서 나온다.

전통적 고통

2025년 해법들

도구 계열

원칙 — "Expand & Contract"

  1. 새 컬럼 추가(null 허용, 기본값 없음).
  2. 앱에서 양쪽 쓰기(새/구 컬럼 동시).
  3. 백필.
  4. 읽기를 새 컬럼으로 전환.
  5. 구 컬럼 삭제.

각 단계는 역방향 호환. 배포 중 롤백하더라도 깨지지 않음.


10장. 관측성·백업·재해복구

기능은 다 비슷해 보여도, 운영 단계 품질은 제품마다 격차가 크다.

체크 항목

간단 매트릭스

제품PITR멀티리전 백업VPC 피어링
Aurora (AWS RDS)1초 단위OO
CockroachDB Cloud분 단위OO
Neon임의 시점조건부O(Enterprise)
Supabase일일(PITR은 유료)유료Enterprise
Turso분 단위지역별제한

11장. 비용 구조 이해 — "돈이 새는 곳" 5가지

1. IOPS·스토리지 분리 과금

Aurora·DSQL·Neon류는 스토리지와 컴퓨트가 분리되어 따로 과금. 컴퓨트만 줄여도 스토리지 고정비는 남는다.

2. 이탈 트래픽(Egress)

크로스-리전/클라우드-외부로 나가는 데이터가 비싸다. 리드 리플리카를 다른 리전에 두면 Egress 폭탄.

3. 커넥션당 메모리

커넥션 풀러 없이 Lambda 수천 개가 직결하면, 인스턴스 메모리가 커넥션 오버헤드로 소진 → 스펙 업 → 비용.

4. 브랜치·스냅샷 누적

Neon/PlanetScale처럼 브랜치가 많아지면 "CoW 스토리지 비용"이 쌓인다. CI가 매 커밋 브랜치를 만들면 빠르게 누적.

5. 벡터 인덱스 크기

pgvector HNSW는 빠르지만 메모리 쿵쿵 먹는다. "10M 벡터 × 1536d = 60GB+" 같은 계산을 미리.


12장. 의사결정 트리 — 요약

질문 1: 강일관성 + 글로벌 쓰기가 필수인가?
├─ 예: Spanner / CockroachDB / Yugabyte / Aurora DSQL
└─ 아니오 → 질문 2

질문 2: 서버리스/엣지 런타임이 주력인가?
├─ 읽기 중심 + 엣지: Turso(libSQL), Cloudflare D1
├─ 쓰기도 자주 + 일반적 CRUD: Neon, Supabase, PlanetScale
└─ 아니오 → 질문 3

질문 3: 대형 분석·HTAP가 필요한가?
├─ 예: TiDB(HTAP), BigQuery/Snowflake/ClickHouse 분리
└─ 아니오 → 질문 4

질문 4: Postgres 확장 생태계를 100% 원하는가?
├─ 예, 매니지드: Supabase, Neon, RDS for Postgres
├─ 예, 셀프호스팅: Postgres + Citus(분산) + TimescaleDB
└─ 아니오 → 일반적 RDB: RDS MySQL, Aurora MySQL, Cloud SQL

13장. 2026년 이후 — 향후 주시 포인트

  1. AI 네이티브 DB: Neon(Databricks 산하), TiDB, MotherDuck 등이 "에이전트를 위한 DB" 기능(즉석 브랜치, 대화형 쿼리)에 집중. DB = 에이전트의 작업 공간이 됨.
  2. 분산 벡터 인덱싱: pgvector HNSW는 샤딩이 어려움. 분산 환경에서 벡터 검색 성능이 2026년의 격전지.
  3. Aurora DSQL GA 이후: AWS 본류 서비스이므로 파급력이 크다. 기존 Aurora, RDS, DynamoDB 포지셔닝이 흔들릴 수 있음.
  4. 주권 클라우드(Sovereign Cloud): 유럽·중동·일본에서 데이터 주권 규제 강화 → 멀티리전 배포가 선택이 아닌 필수로.
  5. ZFS·DuckDB의 서버 쪽 침투: 스토리지 레이어에 DuckDB나 Parquet을 끼우는 "lakehouse-ish" DB가 소수 등장(MotherDuck, Trino 등).

실전 도입 체크리스트 — 12개 질문

  1. 현재 쿼리·커넥션 패턴을 측정했나(P50/P99, 동시 커넥션 피크)?
  2. 강일관성이 필요한 테이블/트랜잭션을 명시했나?
  3. 데이터 주권 요구사항이 명문화되어 있나?
  4. 필요한 Postgres 확장 목록이 있는가? 후보 DB가 모두 지원하는가?
  5. 스케일-투-제로가 필요한가? 아니면 24/7 부하가 있나?
  6. 브랜칭이 진짜 워크플로에 의미 있는가(PR당 브랜치 만들 것인가)?
  7. 백업/PITR 요구 RPO·RTO 숫자가 있나?
  8. 커넥션 풀러 전략을 정했나(HTTP 드라이버 vs PgBouncer vs RDS Proxy)?
  9. 스키마 변경 프로세스는? Atlas/pgroll/Deploy Request?
  10. 관측성 스택(Datadog·Grafana·pg_stat_statements)과 통합 가능한가?
  11. 락인 비용(떠날 때 얼마나 힘든가)을 계산했나?
  12. 3년 뒤 예상 데이터량·트래픽에서도 가격 모델이 유효한가?

흔한 실수 10가지

  1. "그냥 Postgres"라고 뭉뚱그리기 — RDS/Aurora/Neon/Supabase는 세부 동작이 다 다르다.
  2. 강일관성을 모든 테이블에 요구하기 — 80%는 결과적 일관성으로 충분. 비용 급증의 원인.
  3. 멀티리전을 "나중에"로 미루기 — 설계 단계에서 안 넣으면 나중에 리팩토링 지옥.
  4. 브랜치 청소 안 함 — Neon/PlanetScale에서 수천 브랜치 누적 → 비용 폭주.
  5. 커넥션 풀러 없이 서버리스 — 서비스 다운의 가장 흔한 원인.
  6. 벤더 락인 안 따짐 — Spanner·DSQL은 떠나기 어렵다. Yugabyte·Cockroach는 상대적으로 이식성 있음.
  7. EXPLAIN ANALYZE 안 돌림 — 분산 DB일수록 실행 계획이 중요.
  8. 타임존 혼란 — UTC로 저장, 표시에서만 변환. 분산이면 더욱 중요.
  9. 외래키 없이 시작 — 나중에 추가가 엄청 비싸다. 분산 DB에서 제약은 미리 검토.
  10. "DB는 안 바꿔도 돼" — 서비스 수명 5년 이상이면 마이그레이션은 한 번쯤 일어난다. 추상화 레이어를 미리.

다음 편 예고

시즌 7의 4화는 메시지 큐와 이벤트 스트리밍 2025 — Kafka·Pulsar·NATS·Redpanda·NSQ·pgmq·AWS SQS/SNS·GCP Pub/Sub를 비교하고, "우리 시스템엔 큐가 필요한가?"를 판단하는 기준을 다룹니다. 분산 트랜잭션이 어려운 이유, 이벤트 소싱과 CQRS의 실전 적용, Exactly-once가 거짓말인 이유까지.

— 분산 데이터베이스 편 끝.

댓글

아직 댓글이 없습니다.

로그인하면 댓글을 쓸 수 있습니다