다중 테넌시
다중 테넌시 (Multi Tenancy)
Pulsar는 처음부터 다중 테넌트(multi-tenant) 시스템으로 설계된 메시징 플랫폼이에요. 한 클러스터를 여러 팀이나 애플리케이션이 함께 나눠 쓰면서도 서로 간섭 없이 관리할 수 있게 해주는 구조죠. 이 글에서는 테넌트(tenant)와 네임스페이스(namespace)라는 두 핵심 개념을 중심으로 다중 테넌시가 어떻게 동작하는지 설명해 드릴게요.
출처: 문서
본문
Pulsar는 처음부터 다중 테넌트 시스템으로 만들어졌어요. 다중 테넌시를 지원하기 위해 Pulsar에는 테넌트(tenant)라는 개념이 있어요. 테넌트는 클러스터 전반에 걸쳐 퍼질 수 있고, 각각 자신만의 인증 및 권한 부여 방식을 적용할 수 있어요. 또 테넌트는 저장 할당량, 메시지 TTL, 격리 정책을 관리하는 행정 단위이기도 해요.
Pulsar의 다중 테넌트 성격은 토픽 URL에서 가장 잘 드러나요. 토픽 URL의 구조는 이렇게 생겼어요:
persistent://tenant/namespace/topic
보시다시피 테넌트는 토픽을 분류하는 가장 기본적인 단위예요 (네임스페이스와 토픽 이름보다 더 근본적인 단위죠).
테넌트
Pulsar 테넌트는 용량을 할당하고 인증 또는 권한 부여 방식을 적용하기 위한 행정 단위예요. Pulsar 인스턴스의 각 테넌트에 다음을 할당할 수 있어요:
- 권한 부여 방식
- 테넌트의 설정이 적용되는 클러스터 집합
네임스페이스
Pulsar 네임스페이스는 토픽을 논리적으로 묶어 놓은 것이에요. 테넌트와 네임스페이스는 다중 테넌시를 지원하는 Pulsar의 두 핵심 개념이에요.
- Pulsar는 특정 테넌트를 위해 프로비저닝되며, 해당 테넌트에 적절한 용량이 할당돼요.
- 네임스페이스는 테넌트 안의 행정 단위 이름이에요. 네임스페이스에 설정한 구성 정책은 그 네임스페이스 안에 생성된 모든 토픽에 적용돼요. 테넌트는 REST API와
pulsar-adminCLI 도구를 이용해 자체 관리 방식으로 여러 네임스페이스를 만들 수 있어요. 예를 들어 서로 다른 애플리케이션을 가진 테넌트는 애플리케이션마다 별도의 네임스페이스를 만들 수 있죠.
같은 네임스페이스 안의 토픽 이름은 이렇게 생겼어요:
persistent://tenant/app1/topic-1persistent://tenant/app1/topic-2persistent://tenant/app1/topic-3
네임스페이스 변경 이벤트와 토픽 수준 정책
Pulsar는 다중 테넌트 이벤트 스트리밍 시스템이에요. 관리자는 다양한 수준에서 정책을 설정해 테넌트와 네임스페이스를 관리할 수 있어요. 하지만 보존 정책, 저장 할당량 정책 같은 정책은 네임스페이스 수준에서만 사용할 수 있어요. 많은 사용 사례에서 사용자들은 토픽 수준에서 정책을 설정해야 하죠. 이런 토픽 수준 정책을 효율적으로 지원하기 위해 네임스페이스 변경 이벤트(namespace change events) 접근 방식이 제안됐어요. 이 접근 방식에서는 Pulsar를 이벤트 로그로 사용해 네임스페이스 변경 이벤트(예: 토픽 정책 변경)를 저장해요. 네임스페이스 변경 이벤트 접근 방식의 장점은 다음과 같아요:
- ZooKeeper를 사용하지 않고 ZooKeeper에 더 많은 부하를 주지 않아요.
- Pulsar를 이벤트 로그로 사용해 정책 캐시를 전파해요. 효율적으로 확장할 수 있죠.
각 네임스페이스에는 __change_events라는 이름의 시스템 토픽이 있어요. 이 시스템 토픽은 해당 네임스페이스의 변경 이벤트를 저장해요. 다음 그림은 시스템 토픽을 활용해 토픽 수준 정책을 갱신하는 방법을 보여줘요.
- Pulsar 관리 클라이언트가 Admin RESTful API와 통신해 토픽 수준 정책을 갱신해요.
- Admin HTTP 요청을 받은 브로커가 해당 네임스페이스의 시스템 토픽(__change_events)에 토픽 정책 변경 이벤트를 게시해요.
- 네임스페이스 번들(bundle)을 보유한 각 브로커가 시스템 토픽(__change_events)을 구독해 해당 네임스페이스의 변경 이벤트를 수신해요.
- 각 브로커가 변경 이벤트를 자신의 정책 캐시에 적용해요.
- 정책 캐시가 갱신되면 브로커가 Pulsar 관리 클라이언트에 응답을 보내요.
더 알아보기 (Learn more)
- 보안 개요 — 테넌트별 인증·권한 부여 방식을 어떻게 적용하는지 알아봐요.
- 보존 및 만료 쿡북 — 네임스페이스 수준에서 설정하는 보존 정책과 메시지 TTL을 다뤄요.
- 메시징 개념 — 시스템 토픽과 토픽 분류 구조를 이해해요.
- 네임스페이스 관리 —
pulsar-adminCLI로 네임스페이스를 직접 만들어 보세요.