멀티 테넌시 (multi tenancy)

용어 정리다.
multi tenancy, 혹은 multi tenant는 클라우드 및 Queue 등에서 사용하는 핵심 용어 중 하나다.

기본적인 개념은 막 그렇게 복잡한 것은 아니다.

tenant는 영단어로는 세입자를 뜻하는 단어다. 근데 용어에 그렇게 매몰될 것은 없다. user로 해석해도 무방하다.


https://m.blog.naver.com/ki630808/221778753901
multi tenant라는게 뭐나면, 같은 애플리케이션으로 여러명의 tenant, user에게 데이터 등을 제공한다는 것이다.
여기서 tenant가 무엇인지는 상황에 따라 달라진다. 그냥 다른 고객들이 서로 독립된 데이터 세트를 가지고, 그걸 각각에게 잘 제공하기만 한다면 multi tenant라고 할 수 있다. 그렇게 엄밀한 개념은 아니다.

그래서 사실, 쿠팡 같은 웹사이트 서비스들도 다 multi tenant라고 볼 수 있다.
내가 쿠팡에 회원가입을 해서 User 계정을 만들고 나만의 데이터를 쌓는다면, 내가 tenant가 되어서 multi tenant로 쿠팡의 데이터베이스를 사용하는 것이다.

다른 예로, 쿠버네티스 클러스터에서 별도의 서비스 단위를 tenant로 보고, 서비스별로 네임스페이스를 쪼개서 관리한다면 그것도 multi tenant라고 부른다.

https://platform9.com/blog/difference-between-multi-cluster-multi-master-multi-tenant-federated-kubernetes/





Kafka와 multi tenant

multi tenant라는 용어를 가장 적극적으로 사용하고 자랑하는 것은 Kafka와 같은 메세지 브로커들이다.

이것도 뭐 그렇게 대단한 것은 아니다.
topic의 상위 그룹 단위로 tenant라는 논리적 스키마 단위를 두고, 그걸 통해서 엄격한 격리를 할 수 있게 제공해주는 것이다.

https://aws.amazon.com/blogs/big-data/stream-multi-tenant-data-with-amazon-msk/

카프카라는 것이 여러개의 서브시스템을 느슨하게 잇는 용도로도 사용하기도 하고, 그냥 비용 줄이려고 돌려쓰는 경우가 많다보니, 여러 시스템이 동시에 사용하는 경우가 원체 많다.

multi tenant는 그런 상황에서 시스템별로 리소스 제한, 권한제어를 포함한 관리상의 이점을 챙기기 위해 쓴다.

tenant별로 리소스 사용 할당량을 걸어두고 쓸 수 있다는 것도 서비스별 안정성을 더해줄 수 있는 부분이다.
A 서비스에서 과소비를 하니까 B, C 서비스까지 뻗는 현상을 방지할 수 있다는 것이다.



https://platform9.com/blog/difference-between-multi-cluster-multi-master-multi-tenant-federated-kubernetes/
https://www.quora.com/How-does-multi-tenancy-work-in-Apache-Kafka
https://stackoverflow.com/questions/48117662/what-is-multi-tenancy-and-ways-to-achive-it