
딜리버리 암호화 모듈 개발기
두줄요약
배송 시스템 요구에 맞춰 JPA 컨버터와 봉투암호화 기반의 암호화 모듈을 직접 개발했습니다.\n의존성·호환성·엣지 케이스·성능을 함께 검증하며 여러 서비스 적용 기반을 마련했습니다.
문제 상황
- 애플리케이션 단 암·복호화, 빈번한 키 교체, 엔티티 자동 처리, 기존 평문 데이터 마이그레이션 요구
- 오픈소스 라이브러리 취약점 부담과 향후 성능·저장 용량·암호 방식 변경 요구 대응 필요
구조와 흐름
AttributeConverter로 엔티티 필드 저장 시 암호화와 조회 시 복호화 위임- 클라우드 마스터키로 발급한 데이터키와 암호화된 데이터키를 함께 저장하는 봉투암호화 적용
- 암호화 바이트와 암호화된 키를 봉투에 담고 데이터키는 즉시 폐기
선택 이유
@PostLoad방식의 flush 시 불필요한 update 문제와 Hibernate PreLoad의 버전 호환성 문제 회피- 리플렉션 없이 다양한 타입 매핑 가능, JPQL·QueryDSL DTO 일부 조회에도 컨버터 적용
- 헤더 최적화와 DB 바이트 타입 저장으로 저장 크기 및 base64 인코딩 오버헤드 절감
성능/운영 포인트
- compile classpath 비노출과 runtime 의존성 4개로 종속성 충돌 최소화
- fixture-monkey·jqwik 기반 무작위 및 경계값 테스트, 실제 애플리케이션 환경 호환성 검증
- 300만 건 처리 측정과 장시간 CPU·heap memory 관찰을 통한 성능 안정성 확인



