Cloudflare, 모든 고객에게 OAuth 전면 개방!
Cloudflare는 기존 소수 파트너에게만 제공되던 OAuth를 모든 고객에게 확대 제공하여 앱 생태계 확장을 추진함
API 토큰 관리의 어려움을 해소하고, 사용자 동의 및 제어 강화로 위임된 접근(Delegated Access) 흐름을 개선함
기존 Hydra OAuth 엔진을 1.X 및 2.X 버전으로 순차 업그레이드하며 성능 및 안정성 개선을 달성함
셀프 관리형 OAuth(Self-Managed OAuth) 도입으로 개발자 편의성과 보안성을 동시에 향상시킴
Hydra OAuth 엔진의 순차 업그레이드 전략
기존 Hydra 엔진을 1.X와 2.X 버전으로 분할하여 순차 업그레이드하는 전략을 채택하여 위험을 최소화함. 특히 1.X 버전으로의 업그레이드 시 발생할 수 있는 스키마 마이그레이션(Schema Migration)의 잠금 문제를 해결하기 위해 `CREATE INDEX CONCURRENTLY`와 같은 기능을 활용하고, `SELECT *` 대신 명시적 컬럼 선택(Explicit Column Selection)을 구현한 커스텀 버전을 사용함. 이는 데이터베이스 잠금(Database Locking)으로 인한 사용자 영향을 방지하기 위한 핵심 조치였음.
블루-그린 배포를 위한 데이터베이스 마이그레이션 기법
2.X 버전 업그레이드를 위해 블루-그린(Blue-Green) 배포 전략을 사용했으나, 기존 방식의 쓰기 비활성화(Write Disabling) 문제를 해결해야 했음. 이를 위해 토큰 만료 시간을 늘려 새 토큰 발급 수를 최소화하고, 사용자 취소 요청은 Cloudflare Queues를 활용한 큐 시스템에 기록하여 이후 재처리하는 방식으로 데이터 유실(Data Loss) 및 취소 불가능성(Irrevocable Access) 문제를 해결함. 이는 다운타임(Downtime) 없이 안전한 마이그레이션을 가능하게 한 핵심 기법임.
업그레이드 후 발생한 리프레시 토큰 오류 해결
1.X 버전으로 업그레이드 후, 리프레시 토큰 재사용 시 전체 세션이 무효화되는 문제가 Wrangler 및 MCP 클라이언트에서 발견됨. 이 문제를 해결하기 위해 Worker에서 리프레시 토큰 코알레싱(Coalescing) 동작을 구현하여, 재시도 시 Hydra에 도달하기 전에 요청을 단축하고 토큰을 캐싱하는 방식으로 세션 무효화(Session Invalidation)를 방지함. 이는 새 버전의 엄격한 토큰 무효화 정책에 대응하기 위한 임시 방편이었으며, 향후 Hydra 2.X 버전의 설정 가능한 리프레시 토큰 유예 기간(Grace Period)으로 근본적인 해결을 기대함.
데이터 정제 작업 중 발생한 OAuth 세션 충돌
2.X 버전으로의 전환 후, 데이터 정제 작업(Data Cleanup Job)이 과도하게 동작하여 유효한 OAuth 세션이 손상되는 문제가 발생함. 이는 Hydra 마이그레이션 과정에서 일부 세션 상태가 잘못 처리되어 발생했으며, Hydra와 인증 서비스 간의 불일치로 인해 403 오류가 증가함. 이 문제를 해결하기 위해 데이터 복원 및 OAuth 인증 동작 개선 작업을 진행하여, 정적 정책 데이터에 대한 의존성을 제거하고 안정적인 OAuth 세션 관리를 확보함.
업그레이드 완료 후 성능 지표 변화
업그레이드 완료 후 Hydra API의 P95 지연 시간이 185ms에서 101ms로 45% 감소했으며, 메모리 사용량(RSS)은 14%, Go 힙 할당량은 40%, 고루틴 수는 23%, CPU 사용량은 37% 감소함. 이러한 상당한 성능 개선(Considerable Performance Improvement)은 Hydra 엔진의 최신 버전 도입과 최적화된 데이터베이스 마이그레이션 덕분임. 이는 더 나은 확장성과 안정성을 제공하며, 향후 셀프 관리형 OAuth 기능의 성공적인 출시를 뒷받침함.