Files
DongHyeonkaandClaude Opus 5 ab59130196 chore: 이전 세션이 남긴 변경을 커밋한다
이번 파이프라인 작업과 무관하게 작업 트리에 남아 있던 것을 그대로 올린다.
사용자가 「전부 커밋」으로 정했고, 이번 작업과 섞이지 않게 커밋만 나눴다.

대부분은 clean-architecture-backend-template 의 그림 정본 재배치다 —
final/assets/diagrams/<이름>/ 에 있던 것이 CLAUDE.md 가 적은 배치인
final/assets/<이름>/ 로 옮겨졌고 .techviz/<이름>/ 이 함께 들어왔다.
삽입 줄의 대부분(3.15M)이 그 .techviz context.json 이다.

그 밖에 ca-tmpl·document-haness 의 정리, .claude/agents/ 열한 개,
writing-practitioner-guides 스킬, .playwright-mcp 세션 산출물,
scripts/check-ssot-facts.py 와 그 시험이 들어 있다.

이 커밋의 내용은 내가 만든 것이 아니라 이전 세션이 남긴 것이고 검증하지 않았다.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 11:02:02 +09:00

63 lines
2.9 KiB
Markdown

---
kind: REFERENCE
slug: local-with-a-different-db-is-a-different-system
title: 로컬이 다른 DB면 로컬 테스트는 다른 시스템에 대한 진술이다
topic: schema-ownership-and-capability-streams
project: clean-architecture-backend-template
status: 게시 전
sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916
rootTreeNode: reference:local-with-a-different-db-is-a-different-system
verifiedOn: # 이 기록은 이번 회차에 실행 확인을 하지 않았다
---
# 로컬이 다른 DB면 로컬 테스트는 다른 시스템에 대한 진술이다
로컬에서 초록불이라는 사실을 배포 대상에 대한 증거로 읽는 것을 막는다. 로컬 데이터베이스가 다르면 방언과 타입 매핑과 제약 처리와 잠금 동작이 다르고, 스키마를 엔티티에서 만드는 구성은 스키마 불일치를 원리적으로 발견하지 못한다.
## 목적
로컬에서 초록불이라는 사실을 배포 대상에 대한 증거로 읽는 것을 막는다.
## 규칙
1. 로컬 데이터베이스가 다르면 결과도 다른 시스템의 것이다
방언과 타입 매핑과 제약 처리와 잠금 동작이 다르다.
2. 스키마를 엔티티에서 만드는 구성은 스키마 불일치를 원리적으로 발견하지 못한다
생성 소스와 검증 소스가 같으면 어긋날 수 없다.
3. 실제 데이터베이스에 대한 레인을 별도로 둔다
그 레인이 없으면 이 계열의 결함은 배포 시점에 처음 나타난다.
4. 로컬 설정이 값을 덮어쓰면 기본값의 결함이 로컬에서 보이지 않는다
기본값을 검증하는 경로가 따로 필요하다.
5. 어느 결함이 어느 환경에서만 보이는지 기록한다
그 정보가 다음 사람이 레인을 고를 때 쓰인다.
## 적용 조건
로컬과 배포 대상의 데이터베이스가 다른 모든 프로젝트
프로파일별로 설정 기본값이 덮이는 구성
## 예외
데이터베이스에 의존하지 않는 순수 로직 테스트는 이 규칙의 대상이 아니다.
## 예시
고정 길이와 가변 길이 컬럼 타입 불일치가 실제 PostgreSQL 검증에서 기동 실패를 냈고, 로컬이 H2 로 도는 동안에는 보이지 않았다. H2 구성은 엔티티에서 스키마를 만들므로 엔티티와 어긋날 수 없다.
풀 커넥션 타임아웃 기본값의 형식 오류가 prod 와 dev 배포를 전부 실패시켰고 로컬만 통과했다. 로컬 프로파일 파일이 그 값을 덮어쓴다.
## 관계
- **char(64)와 varchar(64) 불일치를 H2가 가리고 있었다**
이 규칙을 만든 사례다.
- **connection-timeout이 5s 문자열로 출하되어 prod와 dev 배포가 전부 시작에 실패했다**
네 번째 규칙의 사례다.
- **컨테이너가 필요한 특수 레인의 실제 결과를 실행으로 확인하지 않았다**
실제 데이터베이스 레인의 현재 상태에 대한 질문이다.