이 글의 목적
데이터베이스 따라잡기 본편 24편을 마쳤다. 이 글은 시리즈 전체를 압축·연결하고 다음에 어디로 갈지 짚는 에필로그다.
- 24편 동안 본 개념을 한 장 지도로 다시 본다
- DB에서 뻗어 나가는 주제와 블로그 내 다른 시리즈를 연결한다
- DB 지식이 어떤 직업·역할과 맞닿는지 정리한다
- 손으로 확인하는 방법과 읽을거리를 남긴다
1. 24편이 만든 큰 그림
데이터베이스는 한 쿼리가 아니라 저장·인덱스·트랜잭션·복제·운영이 겹친 시스템이다.

| Part | 핵심 질문 | 기억할 키워드 |
|---|---|---|
| 0~1 관계형 기초 | 데이터를 어떻게 모델링하고 질의하나 | 릴레이션, SQL, 정규화, 쿼리 처리 파이프라인 |
| 2 저장·인덱스 | 디스크에서 어떻게 빨리 찾나 | 페이지, B+ Tree, EXPLAIN, ACID |
| 3 동시성·복구 | 동시에 쓰면 뭐가 깨지고 어떻게 복구하나 | 격리 수준, 2PL, WAL, MVCC, vacuum |
| 4 분산·확장 | 한 노드를 넘으면 어떻게 나누나 | 복제 lag, 파티션·샤딩, saga·outbox, NoSQL |
| 5 실무 | 앱과 DB 사이에서 무엇이 병목인가 | connection pool, N+1, cache-aside, CDC |
| 6 운영 | 장애·성능을 어떻게 진단·유지하나 | pg_stat_statements, autovacuum, pruning, Debezium DLQ |
한 줄로 묶으면:
스키마·SQL로 질의하고
페이지·인덱스·플랜으로 읽고
트랜잭션·WAL·MVCC로 안전히 쓰고
복제·파티션·CDC로 확장하며
슬로우 쿼리·vacuum·slot lag로 운영한다
2. 실무에서 다시 만나는 지점
교과서 개념은 EXPLAIN·메트릭·로그로 확인할 때 살아난다.
| DB 개념 | 실무에서 보는 곳 | 도구·명령 |
|---|---|---|
| 인덱스·플랜 | API p99 급등 | EXPLAIN (ANALYZE), pg_stat_statements |
| 트랜잭션·락 | 결제 대기·타임아웃 | pg_locks, innodb_trx, lock wait log |
| MVCC·vacuum | 테이블 커졌는데 느림 | n_dead_tup, autovacuum, VACUUM |
| 복제 | 읽기 stale·failover | pg_stat_replication, Seconds_Behind_Master |
| Connection pool | 503·pool timeout | Hikari metrics, max_connections |
| ORM N+1 | RPS 대비 DB QPS 폭증 | query log, fetch join |
| 캐시 | stale·stampede | Redis hit ratio, TTL |
| CDC·outbox | 이벤트 누락·중복 | slot lag, consumer lag, DLQ |
| 파티션 | 월별 테이블 bloat | pg_inherits, DETACH |
- "DB가 느리다" 한 줄 뒤에 플랜·락·I/O·pool·replica lag가 겹쳐 있다 — 시리즈가 준 분해 프레임으로 첫 후보를 나열하는 게 출발점
- K8s StatefulSet·PVC·read replica routing은 결국 복제·연결·스토리지를 오케스트레이션한 것
3. 이후 확장되는 개념
본 시리즈는 RDBMS 내부·운영 공통 기반까지다. 같은 뿌리에서 가지가 갈라진다.

| 확장 영역 | DB에서 온 질문 | 더 깊이 가면 |
|---|---|---|
| 분산 DB | 샤딩·2PC 한계 | Citus, Vitess, Spanner, Cockroach |
| 데이터 플랫폼 | CDC·outbox | Kafka Connect, Flink, dbt, data mesh |
| 관측성 | 슬로우 쿼리·lag | DB 메트릭 exporter, query insights |
| 플랫폼·K8s | pool·복제 | Operator, Patroni, cloud RDS |
| 아키텍처 | polyglot·일관성 | CQRS, event sourcing, cache-aside 설계 |
| 보안 | 접근·감사 | row-level security, encryption at rest |
| OLAP·엔진 | 인덱스·스캔 | columnar store, vector index, query compiler |
| NewSQL·트렌드 | CAP·복제 | serverless DB, branching (Neon), AI+RAG store |
블로그 내 이어읽기 (권장 순)
- 관측성 기초 —
pg_stat·lag를 메트릭·알람으로 (슬로우 쿼리·CDC 편 이후) - ELK · Elastic Cloud — CDC·로그 ingest 파이프라인 심화
- 플랫폼 · DevOps · Cloud — RDS·Operator·배포
- 소프트웨어 아키텍처 — outbox·CDC·CQRS 설계 (17~19편과 맞물림)
- 운영체제 따라잡기 — 락·버퍼·디스크 I/O (6~12편 기반)
- 애플리케이션 보안 — SQL injection·AuthN/Z·감사 로그
4. 관심 있게 지켜볼 직업·직업군
DB는 백엔드·SRE·데이터 전반의 공통 언어다. 역할마다 깊이가 다르다.

| 역할 | 하는 일 | DB 시리즈와의 연결 |
|---|---|---|
| 백엔드 엔지니어 | API·도메인·ORM | SQL, 트랜잭션, N+1, pool |
| DBA / 데이터베이스 엔지니어 | 튜닝·백업·복제 | 인덱스, vacuum, replication, 파티션 |
| SRE | 가용성·용량·장애 | 슬로우 쿼리, failover, slot lag |
| 데이터 엔지니어 | ETL·CDC·웨어하우스 | WAL CDC, schema registry, idempotent sink |
| 플랫폼 | managed DB·Operator | connection limit, read replica routing |
| 아키텍트 | 저장소·일관성 설계 | 샤딩, saga, cache-aside, polyglot |
| 성능 엔지니어 | 병목·프로파일링 | EXPLAIN, buffer pool, bloat |
| 보안 | 접근·감사·암호화 | least privilege, audit log |
지켜볼 만한 방향 (2020s~)
- Serverless / branching DB — Neon, PlanetScale — dev/prod 분리·scale-to-zero
- HTAP / columnar — ClickHouse, DuckDB — OLTP 옆 분석
- CDC as default — Debezium·logical replication이 이벤트 버스 표준 축
- AI + RAG storage — pgvector, embedding index, hybrid search
- Automated tuning — query store, index advisor (보조 도구, EXPLAIN은 여전히 필수)
직업을 고를 때 한 분야만 파지 말고, 인접 칸을 같이 보는 게 유리하다. 백엔드는 EXPLAIN·트랜잭션을, DBA는 앱·CDC를, 데이터 엔지니어는 운영·vacuum을 어느 정도 알면 시너지가 난다.
5. 앞으로의 학습 루틴
개념만으로는 부족하다. 짧은 루프를 권한다.
| 주기 | 활동 | 예 |
|---|---|---|
| 매주 | 한 쿼리를 플랜으로 분해 | EXPLAIN ANALYZE — Seq Scan? lock? |
| 매월 | 메트릭 하나 깊게 | pg_stat_statements, replication lag |
| 분기 | 작은 실험 | 인덱스 추가 전후, vacuum 전후 dead_pct |
| 연 1회 | 교재·문서 정돈 | Silberschatz 한 챕터, DDIA Part II |
추가 읽을거리
| 수준 | 자료 |
|---|---|
| 입문·복습 | Database System Concepts 7/E (본 시리즈 기준) |
| 분산·스트리밍 | Designing Data-Intensive Applications — Kleppmann |
| PostgreSQL | postgresql.org docs — WAL, MVCC, partitioning |
| InnoDB | MySQL 8.0 InnoDB docs — isolation, purge |
| 실습 | EXPLAIN, pg_stat_statements, local Debezium quickstart |
| 트렌드 | Debezium blog, PGCon·Percona live slides |
6. 시리즈 색인 (24편 요약)
필요할 때 해당 편으로 바로 점프한다.
| # | 제목 | 거기서 답하는 질문 |
|---|---|---|
| 1 | 오리엔테이션 | DBMS가 왜 필요한가 |
| 2~5 | 관계형·SQL·정규화·쿼리 처리 | 모델링과 질의 |
| 6~8 | 디스크·인덱스·실행 계획 | 어떻게 빨리 읽나 |
| 9~13 | ACID·동시성·WAL·MVCC | 어떻게 안전히 쓰나 |
| 14~17 | 복제·파티션·분산 TX·NoSQL | 어떻게 확장하나 |
| 18~20 | Pool·캐시·CDC 개요 | 앱과 DB 사이 |
| 21~24 | 슬로우 쿼리·vacuum·파티션 ops·CDC 심화 | 어떻게 운영하나 |
7. 마치며
처음에는 SELECT * FROM users WHERE id = ? 한 줄이면 충분했을지 모른다. 시리즈를 지나며 그 한 줄 아래에 파서·옵티마이저·B+ Tree·버퍼 풀·트랜잭션·WAL·MVCC·복제 슬롯이 겹겹이 있다는 걸 봤다.
DB를 안다는 건 모든 SQL을 외운다는 뜻이 아니다. 장애·설계 대화에서 "그건 플랜 문제다 / vacuum이다 / replica lag다 / pool 고갈다"고 위치를 잡고, 다음 명령을 고를 수 있다는 뜻에 가깝다.
해당 내용은 Database System Concepts, 7/E (Avraham Silberschatz, Henry F. Korth, S. Sudarshan), Designing Data-Intensive Applications (Martin Kleppmann) 및 시리즈 1~24편을 바탕으로 정리했습니다.
'데이터베이스 따라잡기' 카테고리의 다른 글
| CDC 심화 (0) | 2026.07.11 |
|---|---|
| 파티션 운영 (0) | 2026.07.10 |
| Vacuum과 유지보수 (0) | 2026.07.09 |
| 슬로우 쿼리 진단 (0) | 2026.07.08 |
| CDC와 이벤트 (0) | 2026.07.07 |