올리브영 대규모 트래픽 레거시 시스템의 무중단 OAuth2 전환기
Feature Flag, Jitter, Circuit Breaker로 올리브영 인증을 무중단 전환했다.
올리브영은 Spring Session 기반 레거시 인증을 OAuth2로 바꾸면서도, 대규모 트래픽 이벤트인 올영세일을 앞두고 중단 없는 전환을 최우선 목표로 삼았다. 단순히 표준을 도입하는 것이 아니라, 기존 서비스의 핵심 기능을 보호하고 장애 시 즉시 되돌릴 수 있는 구조를 먼저 만들었다.
전환의 중심에는 Feature Flag 위임 패턴이 있었다. FeatureFlagDelegatingInterceptor가 요청을 가로채고, DB의 플래그 값에 따라 Legacy AuthenticationInterceptor와 JWT AuthenticationInterceptor 중 하나를 선택해 실행하는 방식이다. 임직원 대상 단계적 검증, 비로그인 사용자 제외, 오류 시 자동 Legacy Fallback까지 포함해 런타임에서 안전하게 인증 방식을 바꿀 수 있게 했다.
배포는 **10% → 20% → 50% → 75% → 100%**로 점진적으로 넓혔다. 전환 전에 Shadow Mode로 토큰만 먼저 발급해 사용자에게 미리 쌓아두었고, 실제 토큰 기반 인증 전환 시 로그아웃을 최소화했다. 2025.08.29~09.04 올영세일 기간에는 평소 대비 10배 트래픽을 받으면서도 100% 성공률을 유지했고, P50 약 5ms, P75 약 35ms, P95 약 50ms, CPU/메모리 30~35% 수준으로 운영됐다.
동시성 문제는 Jitter로 해결했다. Access Token 만료 시간을 고정 5분이 아니라 ±30초 랜덤으로 흔들어 갱신 요청이 특정 시점에 몰리지 않게 했고, 그 결과 Peak TPS가 5,000에서 3,000으로 40% 감소했다. 평균 TPS는 유지하면서도 스파이크를 분산해 Auto Scaling이 대응할 시간을 확보했다.
외부 Authorization Server 장애에 대비해 Resilience4j Circuit Breaker도 적용했다. 실패율 50% 또는 느린 호출 비율 **50%**를 넘으면 회로를 열고, 30초 뒤 반열림 상태에서 일부 요청만 허용해 복구를 확인했다. 여기에 **TimeLimiter(3초)**와 **Retry(최대 2회)**를 결합해 로그인, 토큰 갱신, 로그아웃, 기기 조회 같은 핵심 인증 경로를 다층으로 보호했다.
결국 이 전환의 핵심은 OAuth2 자체보다, 되돌릴 수 있는 구조, 사용자별 점진 전환, 트래픽 스파이크 완화, 외부 장애 격리를 함께 설계한 데 있었다. 그 조합 덕분에 올리브영은 세일 기간 같은 극한 상황에서도 레거시 인증을 무중단으로 OAuth2에 안착시킬 수 있었다.
이 요약은 원문 이해를 돕기 위한 큐레이션입니다. 저작권은 원저작자에게 있으며, 정확한 내용과 맥락은 원문을 확인하세요.
요약 오류, 출처 표기 문제, 삭제 요청은 문의 · 건의로 알려주세요.