라떼군 뉴스


JPA에 스며든 암호화 컬리의 실전 암호화 모듈 개발기

이 글은 다음 링크를 참고하여 인사이트를 더한 것입니다. 원문은 해당 링크에서 확인해주세요: https://helloworld.kurly.com/blog/delivery-encryption-module/↗

컬리는 왜 암호화 모듈을 직접 만들었을까? 기존 오픈소스의 보안 리스크와 불확실한 요구사항을 감안해, 컬리는 자체 암호화 모듈 cowcow-enc을 직접 개발했습니다.

가장 중요한 결정은 JPA @Converter를 통한 암복호화 방식 채택이었습니다. PostLoad 방식은 dirty checking 문제, Hibernate PreLoad는 버전 호환 이슈로 모두 탈락했고, 결국 대중적이고 안정적인 방식으로 귀결됐습니다.

이 외에도 실용적인 기술 선택이 눈에 띕니다:

  • 봉투암호화를 도입해 암호키 자체를 노출하지 않음
  • 암호화 데이터의 base64 제거로 저장 공간과 속도 최적화
  • 종속성 최소화로 모듈 충돌 가능성 제거
  • fixture-monkey 기반 엣지케이스 테스트로 신뢰도 확보
  • 실제 운영환경과 버전 차이까지 고려한 cowcow-tests 모듈 운영

성능 측면에서도 300만 건 처리 기준 5초대 처리 성능을 기록하며 실용성을 입증했습니다.

기능보다 ‘개발자가 실수하지 않게 만드는 설계’가 얼마나 중요한지 다시금 느끼게 해주는 사례입니다.