
코딩 애플 영상을 보던 중 구글은 어떻게 방대한 데이터 베이스에 대해서 빠르게 접근하고 구글 드라이브, 지메일 등의 여러 서비스의 접근 권한이나 이런 연산까지 순식간에 처리하고 우리에게 좋은 경험을 주는 지에 대한 영상을 만났다. 거기서 이런 방식을 쓴다 라는 느낌으로 가볍게 논문에 대한 언급이 나와서 실제로 어떤 논문인 지 궁금해져서 읽어봤다.
Abstract
Introduction
본 논문에선 권한 부여 확인을 수행하는 시스템인 Zanzibar를 제시
구글의 많은 서비스 중 일부는 10억 명 이상의 사용자를 위한 수십억 개의 객체를 관리해야함.
이 상황에서 통합된 권한 부여 시스템은 개별된 시스템보다 중요한 이점을 제공함.
Zanzibar 시스템의 목표
이러한 목표 달성을 위해 설계한 복잡한 접근 제어 정책은 교차 및 합집합과 같은 집합 대수 연산자가 포함됨
예시) 애플리케이션은 문서에 대한 편집 권한을 부여 받은 사용자는 문서에 댓글을 달 수도 있지만, 모든 댓글 작성자에게 편집 권한이 부여되는 것은 아님.
런타임 시, Zanzibar는 클라이언트가 원격 프로시저 호출 인터페이스(RPC)를 통해 접근 제어 목록 (ACL)을 생성 수정 평가 할 수 있도록 함.
여기서 S는 다른 객체 - 관계 쌍으로 지정
예시) 비디오 댓글을 달 수 잇는 사용자 집합은 특정 비디오에 대한 보기 권한을 부여 받은 사용자와 비디오 채널에 대한 보기 권한을 가진 사용자로 구성
그룹 멤버십은 객체가 그룹이고, 관계가 의미적으로 멤버와 동일한 ACL의 중요한 클래스
-> 이 부분이 처음에 무슨 말인지 이해가 안갔다. 찾아보니, ACL이 앞서 말한 접근 제어 목록인데 거기서 그룹이라는 것이 접근 제어 목록을 나누는 객체 기준이 됨. 그러면 그 안에 속한 멤버들은 그 객체 클래스와 동일한 제어를 받게 되는 의미. (상속 느낌)
그룹은 다른 그룹을 포함할 수 있음.
그러면 이 속에서 내제된 문제점이 보일 수 있는 부분 : 어떤 제어 목록에 대해서 추적을 한다고하면, 계속해서 중첩된 그룹을 따라 깊게 내려가야 할 수 있음.
이때의 권한 부여 확인은
의 형태로 분산 서버 모음에서 시작된다.
이때 확인 요청이 Zanzibar로 간다면, 그룹이 개별 멤버와 다른 그룹을 모두 포함하는 경우와 같이 확인을 평가하는 작업이 여러 서버로 분산됨.
각 서버는 멤버십의 계층 구조를 재귀적으로 탐색하기 위해 다른 서버에 차례로 연결할 수 있음. (이 작업들이 어떻게 10밀리초?)
Zanzibar는 여러 차원에서 전역 규모 운영됨.
2조 개 이상의 ACL 저장, 초당 수백만 건의 권한 부여 확인 수행함.
ACL 데이터는 지리적 파티셔닝에 적합하지 않다. 모든 객체에 대한 권한 부여 확인은 전 세계 어디에서나 발생 가능함.
따라서 모든 ACL 데이터를 수십 개의 지리적 분산된 데이터 센터에 복제하고 전 세계 수천 대의 서버에 부하를 분산함. (이게 뭔)
Zanzibar는 상호 관련 두 가지 기능을 통해 전역적 일관성을 지원한다.
일관성 프로토콜을 통해 대부분의 요청이 지역적으로 복제된 데이터로 처리 가능하며, 지역 간 왕복 필요가 없다.
Zanzibar는 일관성을 위해 정규화 형태로 데이터를 저장하며 최종 결과 및 중간 결과는 캐싱한다.
제한된 비정규화를 통해 헤징 요청 및 깊이 중첩된 집합에 대한 계산 최적화 기술을 적용한다.
| [Serendi] 검색 엔진(추천시스템) 만들기 (5) | 2025.07.27 |
|---|---|
| [Redis] 바이트 반환 값 (1) | 2025.07.24 |
| [Serendi] 프로젝트 #4 플레이리스트가 유지하는 음악의 인덱스가 바뀌었을 경우 (1) | 2025.07.18 |
| [Serendi] 프로젝트 #3.1 DB 수정 (0) | 2025.07.13 |
| [Serendi] 프로젝트 #3 DB설계 (0) | 2025.07.03 |