
쏘카의 대규모 인증토큰 트래픽 대응 : 개발기
두줄요약
인증 토큰 검증을 계정 서비스로 통합하고 read DB 분산, 만료 토큰 배치 분리로 DB 부하를 낮췄습니다. Redis 캐시를 적용해 조회 요청과 지연 시간을 추가로 줄였습니다.
문제 상황
- 모든 서비스의 인증 토큰 검증이 write DB 직접 접근에 집중되며 트래픽 증가 시 부하와 변경 범위 확대
- 만료 토큰 약 2,800만 건 적재에 따른 인덱스 재구성 비용 및 락 경합
- 읽기 요청이 압도적인 인증 검증 특성으로 read DB에도 향후 성능 이슈 가능성
해결 방법
- DB 접근과 인증 토큰 로직을 계정 서비스로 통합해 개별 서비스의 DB 의존성 제거
- MariaDB Aurora protocol로 write/read 클러스터 엔드포인트를 분리해 조회 부하 분산
- 만료 토큰을 별도 테이블로 이관하는 일회성·시간 단위 배치와 Redis Look Aside·Write Around 캐시 적용
선택 이유
- 촉박한 일정과 기존 서비스 영향 최소화 조건에 따라 코드 변경이 적은 Aurora protocol 선택
- 만료 토큰 삭제의 영향도 조사 대신 운영 이력 보존을 위한 별도 보관 전략 채택
- 쓰기 시 캐시 삭제 후 재적재 방식으로 조회 성능과 데이터 불일치 위험 간 균형
성능/운영 포인트
- 만료 토큰 분리 후 인증 토큰 테이블 행 수 약 86% 감소, 약 200만 건 유지
- read DB 분산과 Redis 캐시로 DB 요청 수 및 계정 서비스 지연 시간 감소
- MariaDB Connector 3.x 이후 Aurora protocol 미지원 제약



