6장 데이터 규칙을 코드 밖에서도 지킨다
애플리케이션 검사만으로 동시 요청을 완전히 막기 어렵다. 가능한 규칙은 데이터베이스 제약으로 한 번 더 지킨다. 사용자 이메일의 고유성, 요청 ID의 고유성, 외래키, 상태 값 범위가 대표적이다.
마이그레이션은 앞으로 가는 스크립트만 준비하지 않는다. 적용 전 백업, 소요 시간, 잠금 영향, 되돌리는 절차를 함께 기록한다. 큰 테이블에 NOT NULL 열을 바로 추가하면 서비스가 멈출 수 있다. nullable 열 추가, 데이터 채우기, 검증, 제약 강화처럼 나눈다.
RoomRelay의 메모리 예제에서는 requestId를 고유한 멱등성 키로 사용한다. 실제 DB에서는 UNIQUE(request_id)와 트랜잭션을 결합해야 한다. 책의 배열 구현은 개념 학습용이지 운영용 동시성 제어가 아니다.