컬
컬리
September 25, 20221회
컬리 공통 암호화 모듈의 동시성 이슈 해결하기

간단 소개
컬리 공통 암호화 모듈에서 발생한 동시성 이슈를 분석하고, ByteBuffer의 duplicate() 메소드를 사용하여 해결한 과정을 설명합니다.
AI Summary
- 컬리 공통 암호화 모듈의 동시성 이슈
- 컬리에서는 AWS KMS를 사용하여 개인정보를 암호화하고, 비용 절감을 위해 Caffeine 캐시를 활용한 공통 암호화 SDK 모듈을 사용한다.
- 1:1 문의 게시판 서비스에서 간헐적인 버퍼 오류(newPosition > limit)가 발생하여, 마스킹 처리된 전화번호를 보지 못하는 문제가 발생했다.
- 문제 해결 과정 및 원인 분석
- 오류 발생 지점을 추적한 결과,
ByteBuffer의position관련 메소드에서newPosition이limit을 초과하는 경우가 발생함을 확인했다. - 테스트 결과,
ByteBuffer가 thread-safe하지 않아 동시성 문제가 발생함을 확인했다. 여러 스레드에서 동시에 버퍼에 접근하면서position값이 예상치 않게 변경되는 것이 원인이었다.
- 오류 발생 지점을 추적한 결과,
- 해결 방법 및 결론
ByteBuffer사용 시duplicate()메소드를 사용하여 각 스레드마다 새로운 객체를 생성함으로써 동시성 이슈를 해결했다.GenerateDataKeyResult객체의getPlaintext()메소드 사용 시asReadOnlyBuffer()메소드 사용을 권장하는 Java API Reference를 참고했다.
Next Feeds

Core Values of a Global Team
글로벌 팀 BIC의 핵심 가치(Problem-centric, Go Beyond, Autonomous, Adventurous, Lean Everything)와 실천 방안을 소개합니다.
핵심 가치글로벌 팀BIC협업스타트업
2022. 9. 22.
버즈빌
자바스크립트로 만든 유한 상태 기계 XState
자바스크립트 유한 상태 기계 XState의 기본 개념, 사용법, 활용 예시를 통해 UI 상태 관리의 효율성을 높이는 방법을 제시합니다.
XStateFSM상태 관리리액트유한 상태 기계
2022. 9. 22.
카카오엔터테인먼트FE
자바스크립트로 만든 유한 상태 기계 XState
자바스크립트 유한 상태 기계 XState의 기본 개념, 사용법, 고급 기능 및 활용 예시를 소개합니다.
XState유한 상태 기계상태 관리액션컨텍스트
2022. 9. 22.
카카오엔터테인먼트FE
타다 드라이버 앱 상태관리 개선하기
타다 드라이버 앱의 상태 관리 문제점을 개선하고 Redux 스타일의 StateMachine을 도입하여 안정성과 개발 생산성을 향상시킨 과정 공유.
타다드라이버 앱상태 관리ReduxMiddleware
2022. 9. 16.
VCNC

KURLY HACK FESTA 2022 개최기를 소개합니다.
컬리 해커톤 2022 개최 결과 공유: 테크 인재 발굴 및 입사 연계, 다양한 기술 과제 해결 및 풍성한 리워드 제공.
컬리해커톤이커머스리테일 테크입사 연계
2022. 9. 15.
컬리

Building a Startup Inside a Startup: Story of the BIC Team
Buzzvil 내 스타트업 BIC 팀의 목표, 구성, 특징을 소개하고, 자율적인 의사결정, 빠른 실행, 제품에 대한 주인의식을 강조한다.
BIC스타트업Buzzvil팀 문화제품 개발
2022. 9. 15.
버즈빌