이유
초기에는 DB에서 정합성을 검증해주는것이 좋다고 생각했지만
이때문에 테스트와 여러 마이크로 서비스간 강한 결합이 생겨버림..
성능적인 측면에서도 매번 검증해야 하니 속도 저하가 있을것 이라고 생각했고
정합성은 차라리 어플리케이션 레벨에서 검증하는게 더 편리하고 가독성있지 않을까 라고 생각함
목적
- 마이크로 서비스간 강한 결합 해제
- 확장성 있는 어플리케이션 레벨에서 정합성 제어
성능 영향
- 외래키로 인한 성능 저하는 생각보다 미미함
- 단일 행 삽입의 경우 차이가 거의 없음
- 대량 삽입 시에도 행당 약 0.002ms 정도의 차이만 발생
장점
- 마이크로서비스 간 데이터베이스 분리가 용이함
- 쓰기 작업 시 성능상 이점 (외래키 검증 불필요)
- 서비스 간 독립성 향상
- 스키마 변경이 자유로움
단점
- 데이터 정합성을 애플리케이션에서 보장해야 함
- 잘못된 데이터 입력 가능성 증가
- 데이터 정리/복구가 어려워질 수 있음