피드로 돌아가기
GeekNewsSecurity
원문 읽기
모든 고객을 위한 Cloudflare OAuth
Hydra 2.X 마이그레이션을 통한 API P95 45% 개선 및 OAuth 공개
AI 요약
Context
수동 온보딩 파트너 위주의 제한적 OAuth 구조로 인한 일반 개발자의 API 토큰 의존성 심화 전체 고객 대상 self-managed OAuth 공개를 위한 권한 모델 성숙도 부족 및 레거시 엔진 성능 한계 직면
Technical Solution
- 배타 락으로 인한 가동 중단 방지를 위해 CREATE INDEX CONCURRENTLY 방식의 SQL 마이그레이션 수행
- SDK의 SELECT * 호출에 따른 역직렬화 오류 해결을 위해 명시적 컬럼을 선택하는 커스텀 Hydra 버전 구축
- 무중단 전환을 위해 데이터베이스 쓰기를 유지하며 토큰 만료 시간을 연장하는 Blue-Green 전략 채택
- 전환 중 발생하는 철회 이벤트 유실 방지를 위해 Cloudflare Queues 기반의 이벤트 재생 메커니즘 설계
- 엄격한 Refresh Token 무효화로 인한 세션 단절 해결을 위해 Worker 단에서 Request Coalescing 로직 구현
- 데이터 정합성 불일치로 인한 403 오류 대응을 위해 정적 Policy 의존도를 낮춘 Authorization 동작 개선
Impact
- API P95 지연시간: 185ms → 101ms (45% 감소)
- CPU 사용량: 1.07코어 → 0.67코어 (37% 감소)
- Go heap alloc: 449MB → 271MB (40% 감소)
- RSS 메모리: 888MB → 763MB (14% 감소)
Key Takeaway
대규모 상태 저장 시스템의 메이저 업그레이드 시 단순 스위칭이 아닌, 이벤트 큐를 활용한 상태 재현과 과도기적 캐싱 전략을 통한 가용성 확보가 핵심임
실천 포인트
- DB 스키마 변경 시 배타 락 범위를 확인하고 Concurrent Index 생성 적용 여부 검토 - 분산 환경에서 Token Refresh 시 발생하는 Race Condition 방지를 위해 요청 병합(Coalescing) 레이어 고려 - Blue-Green 배포 중 발생하는 쓰기 데이터 유실 방지를 위해 이벤트 기반의 재생(Replay) 큐 설계 - 외부 엔진 도입 시 기본 SDK의 Wildcard Query(*) 사용 여부를 확인하여 하위 호환성 확보