피드로 돌아가기
Dev.toBackend
원문 읽기
2조 ACL · 10ms 미만 지연 — 단일 튜플 포맷으로 범용 권한 시스템 구현
Google Zanzibar Deep Dive: Handling 2 Trillion ACLs in Under 10ms
AI 요약
Context
Google에서 수십 개의 서비스가 각각 자체 권한 체계를 구현하면서 서비스 간 ACL 불일치, 크로스 서비스 조정 문제, 권한 인식 검색 구축의 복잡성이 발생했다. 각 팀이 일관성과 확장성을 처음부터 재현하는 공학적 낭비도 심각했다.
Technical Solution
- Relation Tuple → object#relation@user 포맷으로 ACL과 그룹을 단일 데이터 구조로 통합
- Namespace Configuration → userset_rewrite를 선언적으로 정의하여 owner ⊂ editor ⊂ viewer 상속 관계 구현
- Zookies → 불투명 토큰에 인과 타임스탬프를 인코딩하여 New Enemy 문제 해결
- Leopard → 그룹 간 관계를 사전 확장하여 중첩 멤버십 체크를 O(min(|A|,|B|))로 최적화
- Timestamp quantization + 분산 캐싱 → 동시 요청을 배치 처리하여 핫스팟 분산
Impact
2조 개 이상의 ACL을 p95 지연 10ms 미만으로 처리하며, 초당 1,000만 건 이상의 권한 체크를 지원한다.
Key Takeaway
ACL과 그룹을 동일한 튜플 구조로 표현함으로써 데이터 모델의 단순성을 유지하면서도 ReBAC 요구사항을 충족한다.
실천 포인트
다중 서비스를 운영하는 조직에서 Centralized 권한 관리가 필요한 경우, Relation Tuple 기반 시스템(SpiceDB, OpenFGA 도입)을 검토하여 서비스 간 일관성을 확보하고 중복 개발을 제거할 수 있다.