핵심 요약
스포카의 주문서 개발기는 동시성 이슈 해결과 주문 이력 관리, 도메인 이벤트 도입으로 데이터 일관성과 시스템 확장성을 확보한 경험을 공유합니다.
주요 경험
- 주문서 수정 시 revision 정보를 비교하고 비관적 잠금을 활용하는 조합으로 동시성 이슈를 방지하는 설계를 도입했다.
- 주문서 이력 관리와 상태 변경 이력을 JSONB 스냅샷으로 저장하는 방식으로 변경 이력을 체계적으로 관리했다.
- 도메인 이벤트를 도입해 주요 로직과 보조 로직의 책임을 분리하고 확장성과 테스트 용이성을 높였다.
얻은 인사이트
- 동시 수정 시나리오를 애플리케이션 레벨에서 관리하는 것이 데이터 무결성과 CS를 줄이는 핵심 전략임을 확인했다.
- 이력 관리와 이벤트 기반 아키텍처가 유지보수성과 확장성을 크게 개선했다.
- JPA 1차 캐시로 인한 버그를 발견하고, 트랜잭션 경계와 조회 전략의 중요성을 실무에서 체감했다.
