결정 (ADR)
0004. DB 는 Postgres 하나로 정하고, 바꾸는 법은 문서로 둔다
0004. DB 는 Postgres 하나로 정하고, 바꾸는 법은 문서로 둔다
- 상태: 채택
- 날짜: 2026-10-17
- 관련:
docs/guides/database.md,docs/architecture.md, ADR-0003
맥락
이 저장소는 템플릿이라 쓰는 쪽이 어떤 DB 를 고를지 모른다. 그렇다고 여러 DB 를 받게 하면(ORM · 쿼리 빌더 · DB 별 테스트 정리) 만들어진 프로젝트는 결국 하나만 쓰면서 그 추상화를 계속 진다. SQL 은 모든 DB 의 공통분모로 줄고, ADR-0003(테스트 DB = 운영 엔진) 때문에 테스트 · CI 도 DB 수 × 서버 수만큼 돈다.
결정
- 기본 DB 는 Postgres 하나. 서버 코드는 그 드라이버 · SQL(
ON CONFLICT등)을 그대로 쓰고, 여러 DB 를 위한 추상화를 두지 않는다. - DB 를 만지는 코드는 서버마다
storage/와 테스트의 DB 정리에만 둔다. api · domain 은 저장소만 본다. - 서버마다 자기 DB 라서 서버 하나만 다른 DB 로 바꿔도 된다. 바꾸면 테스트도 그 엔진으로 돈다(ADR-0003). 인메모리 DB 로 대신하지 않는다.
- 바꾸는 곳은
docs/guides/database.md에 적는다. Postgres 에 묶인 곳을 새로 만들면 그 목록에도 더한다.
결과
- 예제 코드가 짧고 그 DB 의 기능을 쓴다. 테스트 · CI 는 엔진 하나.
- 다른 DB 를 쓰려면 서버마다 드라이버 · SQL · 테스트 정리를 직접 고친다(서버당 파일 몇 개).
- 다시 볼 조건: 한 프로젝트가 여러 DB 를 함께 지원해야 할 때(예: 고객이 DB 를 고르는 설치형 제품).