올리브영, OAuth2 전환으로 대규모 트래픽에도 무중단 서비스 달성!

by DD
4개월 전
조회수 48

올리브영은 레거시 세션 기반 인증 시스템을 OAuth2로 전환하며, 2주 뒤 10배 트래픽을 처리해야 하는 '올영세일'을 대비

Feature Flag 위임 패턴을 통해 런타임에 인증 방식을 전환하고, 점진적 롤아웃 전략으로 안전한 배포를 진행

Jitter 도입으로 토큰 갱신 요청 집중 현상을 완화하여 Peak TPS 40% 감소 효과를 달성

Resilience4j Circuit Breaker를 도입하여 외부 서비스 장애 발생 시 장애 격리(Fault Isolation)를 구현

무중단 전환의 핵심은 안전한 롤백 구조 구축, 실제 트래픽 검증, 장애를 가정한 설계에 있었음

Feature Flag 위임 패턴: 런타임 인증 방식 전환

올리브영은 Feature Flag 위임 패턴을 통해 코드 배포 없이 런타임에 인증 방식을 전환하는 구조를 구현했다. FeatureFlagDelegatingInterceptor를 단일 진입점으로 설정하여, Feature Flag 값에 따라 JWT 또는 Legacy 인증 방식을 선택하도록 설계했다.

단일 진입점(Single Entry Point): 모든 요청을 하나의 인터셉터(Interceptor)를 거치도록 하여 일관성 확보

런타임 분기(Runtime Branching): 데이터베이스 설정 변경만으로 인증 방식 즉시 전환

안전한 Fallback: 오류 발생 시 Legacy 모드로 자동 전환

완전한 격리(Isolation): Phase 2와 Phase 1 로직 독립적 운영

이러한 구조는 무중단 배포를 가능하게 했으며, 임직원 대상 베타 테스트를 통해 실제 사용자 환경에서의 오류를 사전에 검증했다.

점진적 롤아웃 전략: 10%에서 100%까지

올리브영은 Feature Flag를 활용하여 10%에서 시작해 100%까지 단계적으로 OAuth2 전환을 진행했다. 핵심은 문제 발생 시 즉시 롤백 가능한 안전장치를 마련하는 것이었다. 롤아웃 과정에서 Shadow Mode를 통해 토큰을 미리 발급하고, 기존 세션 기반 인증과 병행하여 안정성을 검증했다.

점진적 확대(Progressive Rollout): 10% → 20% → 50% → 75% → 100% 단계적 확대

안정화 기간(Stabilization Period): 각 단계별 2~14일 안정화 기간 확보

올영세일 대비(Preparation for Sales Event): 100% 전환 후 2주 버퍼 확보

이러한 전략을 통해 올영세일 기간 중 평소 대비 10배 트래픽에도 안정적인 서비스를 제공할 수 있었다.

Jitter 도입: 토큰 갱신 요청 집중 완화

올리브영은 대규모 동시 접속 시 토큰 갱신 요청이 특정 시점에 집중되는 문제를 해결하기 위해 Jitter(무작위 지연)를 도입했다. 토큰 만료 시간에 ±30초의 랜덤 값을 추가하여 갱신 요청의 부하를 분산시켰다. 이로 인해 Peak TPS가 40% 감소하는 효과를 얻었으며, 시스템 안정성을 향상시켰다.

랜덤 만료 시간(Random Expiration Time): 각 토큰마다 독립적인 랜덤 만료 시간 부여

부하 분산(Load Balancing): 갱신 요청의 스파이크(Spike) 제거

사용자 경험 유지(User Experience Preservation): ±30초 지연은 사용자 인지 불가

Jitter 도입은 Auto Scaling이 대응할 시간을 확보하여, 고부하 상황에서도 안정적인 서비스 운영을 가능하게 했다.

Resilience4j Circuit Breaker: 장애 격리 및 자동 복구

올리브영은 외부 서비스 장애에 대한 대비책으로 Resilience4j의 Circuit Breaker를 도입했다. Authorization Server 장애 발생 시, Circuit Breaker는 즉시 OPEN 상태로 전환되어 해당 서버 호출을 차단하고, Fallback 전략을 통해 기존 세션 인증 방식으로 자동 대체했다. 30초 후 HALF_OPEN 상태로 전환되어 서버 회복 여부를 확인하고, 정상화되면 다시 CLOSED 상태로 돌아가 운영을 재개했다.

장애 격리(Fault Isolation): 외부 서버 장애가 전체 서비스로 확산되는 것을 방지

자동 복구(Automatic Recovery): 서버 정상화 시 자동 트래픽 재개

스레드 보호(Thread Protection): 블로킹으로 인한 스레드 고갈 방지

실시간 모니터링(Real-time Monitoring): 장애 상황 즉시 감지 및 대응

이러한 Circuit Breaker, Timeout, Retry 3단계 보호 체계를 통해 시스템 안정성을 확보했다.

OAuth2 전환의 핵심: 안전한 접근 방식

올리브영의 OAuth2 전환 프로젝트 성공의 핵심은 완벽한 기술 구현이 아닌, 안전한 접근 방식에 있었다. Feature Flag를 통해 언제든 되돌릴 수 있는 구조를 구축하고, 점진적 롤아웃과 Circuit Breaker를 통해 장애를 예방했다. 특히, 안정성(Stability)을 최우선 가치로 삼고, 실제 트래픽으로 검증하며, 장애를 가정한 설계를 통해 올영세일과 같은 대규모 트래픽 상황에서도 안정적인 서비스를 제공할 수 있었다.

안전한 롤백(Safe Rollback): Feature Flag를 활용한 런타임 전환

실제 트래픽 검증(Real Traffic Validation): 실제 사용자 환경에서의 검증

장애 대응 설계(Fault-Tolerant Design): Circuit Breaker를 통한 장애 격리

레거시 시스템 전환 시, 안전한 구조 구축, 실제 사용자 검증, 장애를 가정한 설계를 통해 안정성을 확보하는 것이 중요하다.

올리브영 대규모 트래픽 레거시 시스템의 무중단 OAuth2 전환기