멀티테넌시(Multi-tenancy)
tenancy의 뜻을 찾아보면, '(주택, 토지 등의)차용[임차/소작]'으로 소개되어 있다. 쉽게 말해 빌려 쓴다는 뜻이다. 멀티테넌시를 구글링해보면 단일테넌시와 구분지어 설명되어 있는 글을 쉽게 볼 수 있다.
단일 테넌시는 하나의 소프트웨어나 인스턴스가 하나의 사용자 혹은 사용자그룹을 위해 작동하는 아키텍처,
멀티테넌시는 하나의 소프트웨어나 인스턴스가 여러 사용자 혹은 사용자그룹을 위해 작동하는 아키텍처라고 한다.
쉽게 예를 들면, 웹메일 서비스로 생각해볼 수 있다. 웹메일 서비스는 멀티테넌시 구조로 동작하고 있다. 많은 사람들이 크게 하나의 웹메일 서비스(gmail, naver...)를 이용해 메일을 주고받고 있다. 하지만 여기서 중요한 것은 여러 사용자 및 사용자 그룹이 사용하더라도 각각이 독립적으로 이용한다는 사실이다. 모든 사용자의 메일 데이터는 각 메일 서비스 제공 기업에서 관리하지만, 사용자는 나를 제외한 다른 사람들의 메일 자료에 접근할 수 없고 마치 나만을 위한 서비스처럼 느껴진다.
만약 멀티테넌시가 아닌 단일테넌시라면 어땠을까? 단일 사용자 및 그룹을 위해 작동하는 아키텍처라는 점에서 모든 사용자가 각 메일 프로그램을 다운로드하고, 각 기기에서 설치한 뒤 각자의 기기 내에서 메일 데이터를 보관하고 사용하며 심지어 노트북에서 받은 메일은 스마트폰에서 읽을 수 없을 수도 있다.
멀티테넌시 아키텍처의 장점
- 비용 절감
소프트웨어를 지탱하는 하드웨어 측면에서 바라보면 규모의 경제로 인해 자원 구축 비용 절감, IT 리소스를 유연하게 할당할 수 있는 유연성을 포함해 새로운 버전이 나와도 장비 쪽 소프트웨어만 업데이트하면 모든 사용자가 새로운 기능을 사용할 수 있어 관리 비용도 크게 절감할 수 있다. 크게 최근 많이 사용되고 있는 클라우드 서비스와 맥락을 같이한다.
- 편리한 데이터 통합
하나의 시스템과 소프트웨어를 여러 사용자가 공유하는 구조이므로 사용자별 데이터가 사실상 같은 저장소에 저장된다. 결과적으로 대규모 데이터를 모을 수 있고, 분석하는 작업도 더 편리해진다. 최근 분석에 대한 수요가 커지고, 데이터의 양도 급속도로 거대해지면서 더 두드러지고 있다.
멀티테넌시 아키텍처의 단점
- 개인화를 지원하기 위한 정교한 아키텍처 구현
개인화를 지원하기 위해 그만큼 더 정교한 아키텍처 설계가 필요하다. 자칫 소프트웨어나 인스턴스 하나의 장애가 수많은 사용자 및 사용자그룹에게 모두 피해를 입힐 수 있고, 일부 사용자를 위한 업데이트가 또 다른 사용자에게는 오히려 불편함을 유발할 수도 있다.
- 보안
구조적으로 사용자별로 완전히 구분되어 있는 것처럼 보이지만, 실상은 단일 저장소에 여러 사용자 및 사용자그룹의 데이터가 보관되어 있다. 따라서 각 단위의 데이터가 서로 섞이지 않도록 해야 하고, 몸집이 커지는 만큼 해킹 위협에 대해서도 그만한 보안 체계를 갖춰야만 한다.
멀티테넌시 용어의 다양한 쓰임
지금까지 일반적인 소프트웨어 관점에서의 멀티테넌시 구조를 살펴봤는데, 쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼에서 멀티테넌시라는 용어는 또 조금 다르게 쓰인다. 소프트웨어 관점에서 tenancy 대상인 tenant(사용자)는 사용자, 사용자 그룹이지만, 컨테이너 오케스트레이션 플랫폼에서는 프로젝트 단위가 tenancy이기 때문이다. 즉 컨테이너 오케스트레이션 플랫폼에서 멀티테넌시라는 용어는 대개 여러개의 프로젝트를 서비스하는 단일 클러스터를 의미하고, 이 클러스터는 서로 분리 실행하도록 설정되어 있다.
출처 https://soosun.tistory.com/660
'Develop > Others' 카테고리의 다른 글
[typescript] Interface VS Abstract Class (0) | 2022.02.04 |
---|---|
check code difference / git diff with vscode (0) | 2022.01.27 |
wsl node version & nvm node version (0) | 2022.01.01 |
[npm] Github Actions로 npm publish 삽질기 (0) | 2021.12.18 |
[npm] NPM cheatsheet & package.json 속성 (0) | 2021.12.18 |
댓글