성능 최적화
대규모 환경(많은 사용자 또는 많은 규칙)에서는 **처리량(throughput)**과 정책 크기가 일반적인 병목 현상이 됩니다. 아래는 실질적인 완화 방안들입니다.
높은 요청 볼륨
하나의 enforcer가 처리량을 따라가지 못하는 경우(예: 10k+ req/s):
- Multi-threading — SyncedEnforcer를 사용하여 모든 코어를 활용하도록 여러 워커 스레드/인스턴스를 실행합니다.
- Cluster — 여러 대의 머신에서 Casbin을 실행하고 Watchers를 사용하여 정책을 동기화합니다. 두 방법을 결합할 수 있습니다. 예: 10개 노드 × 각 5개 스레드.
대용량 정책(많은 규칙)
수백만 개의 규칙이 있는 경우 강제 적용 및 로드 시간이 저하될 수 있습니다:
- Model and policy design — 대부분의 테넌트가 소규모 규칙 집합(예: < 100개 규칙)을 사용하도록 RBAC와 공유 기본값을 우선시하며, 필요한 경우에만 오버라이드하세요. 논의 내용은 GitHub #681을 참조하세요.
- Policy sharding — Policy subset loading을 통해 각 인포서가 필요로 하는 규칙만 로드합니다(예: 테넌트별 또는 도메인별).
- RBAC over direct user permissions — 권한을 역할에 할당하세요. Casbin은 O(1) 역할 조회 및 더 적은 정책 규칙을 위해 역할 트리를 캐시합니다.
최상의 결과를 위해 가능한 한 이러한 방법들을 조합하여 사용하세요.
Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.