멀티테넌시 재정의 - SaaS 아키텍처 기초

멀티테넌시 재정의

멀티테넌시SaaS라는 용어는 밀접하게 연관되는 때가 많습니다. 조직에서는 SaaS와 멀티테넌시를 같은 것으로 설명하는 경우가 있습니다. 당연해 보일 수도 있지만, SaaS와 멀티테넌시를 동일시하면 팀들이 SaaS에 대한 순수한 기술적 관점만 취하게 되는 경향이 있는데, 실제로는 SaaS는 아키텍처 전략이라기보다 비즈니스 모델에 가깝습니다.

이 개념을 더 잘 이해하기 위해 멀티테넌시에 대한 고전적인 관점부터 살펴보겠습니다. 순전히 인프라에 초점을 맞춘 이 관점에서 멀티테넌시는 민첩성과 비용 효율성을 높이기 위해 테넌트가 리소스를 공유하는 방법을 설명하는 데 사용됩니다.

SaaS 시스템의 여러 테넌트가 사용하는 마이크로서비스 또는 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있다고 가정해 보겠습니다. 테넌트는 이 서비스를 실행하는 인프라를 공유하므로 이 서비스는 멀티 테넌트 모델에서 실행되는 것으로 간주됩니다.

이 정의의 문제점은 멀티테넌시라는 기술적 개념을 SaaS에 너무 직접적으로 연결한다는 것입니다. SaaS의 특징은 공유 멀티테넌트 인프라가 있어야 한다는 점이라고 가정합니다. SaaS에 대한 이러한 관점은 다양한 환경에서 SaaS가 구현되는 다양한 방식을 살펴보면서 무너지기 시작합니다.

다음 다이어그램은 멀티테넌시를 정의할 때 발생하는 몇 가지 문제를 보여주는 SaaS 시스템을 보여줍니다.

여기서는 테넌트를 공동으로 관리하고 운영할 수 있는 공유 서비스로 둘러싸인 일련의 애플리케이션 서비스를 통해 앞서 설명한 클래식 SaaS 모델을 볼 수 있습니다.

새로 추가된 것은 여기에 포함된 마이크로서비스입니다. 다이어그램에는 제품, 주문, 카탈로그의 세 가지 샘플 마이크로서비스가 포함되어 있습니다. 각 서비스의 테넌시 모델을 자세히 살펴보면 모두 약간 다른 테넌시 패턴을 사용하고 있음을 알 수 있습니다.

SaaS 및 멀티테넌시를 나타내는 다이어그램

SaaS 및 멀티테넌시

제품 서비스는 모든 리소스(컴퓨팅 및 스토리지)를 모든 테넌트와 공유합니다. 이는 멀티테넌시의 기존 정의와 일치합니다. 그러나 주문 서비스를 살펴보면 컴퓨팅은 공유되지만 각 테넌트마다 별도의 스토리지가 있음을 알 수 있습니다.

카탈로그 서비스는 컴퓨팅이 모든 테넌트마다 분리되어 있지만(각 테넌트에 대한 별도의 마이크로서비스 배포) 모든 테넌트의 스토리지를 공유하는 또 다른 변형을 추가합니다.

이러한 특성의 변형은 SaaS 환경에서 흔히 볼 수 있습니다. 잡음이 많은 이웃, 계층화 모델, 격리 요구 사항 등이 SaaS 솔루션의 일부를 선택적으로 공유하거나 사일로화할 수 있는 이유 중 하나입니다.

이러한 변형과 기타 여러 가능성을 고려하면 멀티테넌트라는 용어를 사용하여 이 환경을 어떻게 특징지어야 할지 파악하기가 더 어려워집니다. 전반적으로 고객의 관점에서 볼 때 이 환경은 멀티테넌트 환경입니다. 그러나 가장 기술적인 정의를 사용하면 이 환경의 일부는 멀티테넌트이고 일부는 그렇지 않습니다.

SaaS 환경을 특징짓기 위해 멀티테넌트라는 용어를 사용하지 않는 것이 필요한 이유가 바로 여기에 있습니다. 대신 멀티테넌시가 애플리케이션 내에서 어떻게 구현되는지에 대해 설명하겠지만, 솔루션을 SaaS라고 특징짓는 데 멀티테넌시를 사용하는 것은 피해야 합니다. 멀티테넌트라는 용어를 사용하는 경우 전체 SaaS 환경을 멀티테넌트라고 설명하는 데 사용하는 것이 더 합리적입니다. 아키텍처의 일부는 공유될 수 있고 일부는 공유되지 않을 수 있다는 점을 염두에 두어야 합니다. 전반적으로 보면 여전히 멀티테넌트 모델에서 이 환경을 운영 및 관리하고 있습니다.

극단적인 사례

이러한 테넌시 개념을 더 잘 설명하기 위해 리소스를 전혀 공유하지 않는 테넌트가 있는 SaaS 모델을 살펴보겠습니다. 다음 다이어그램은 일부 SaaS 공급자가 사용하는 샘플 SaaS 환경을 제공합니다.

테넌트별 스택을 나타내는 다이어그램.

테넌트별 스택

이 다이어그램을 보면 이러한 테넌트를 둘러싼 공통된 환경이 여전히 남아 있음을 알 수 있습니다. 하지만 각 테넌트는 전용 리소스 컬렉션과 함께 배포됩니다. 이 모델에서는 테넌트가 아무 것도 공유하지 않습니다.

이 예시에서는 멀티테넌트가 무엇을 의미하는지 의문을 제기합니다. 공유되는 리소스가 없는데도 멀티테넌트 환경일까요? 이 시스템을 사용하는 테넌트는 공유 리소스가 있는 SaaS 환경에 대해 기대하는 것과 동일합니다. 실제로 SaaS 환경에서 리소스가 어떻게 배포되는지 알지 못할 수도 있습니다.

이러한 테넌트는 사일로화된 인프라에서 운영되지만 여전히 공동으로 관리되고 운영됩니다. 이들은 하나의 통합된 온보딩, 자격 증명, 지표, 청구 및 운영 경험을 공유합니다. 또한 새 버전이 출시되면 모든 테넌트에게 배포됩니다. 이렇게 하려면 개별 테넌트에 대한 일회성 사용자 지정을 허용할 수 없습니다.

이 극단적인 예는 멀티테넌트 SaaS의 개념을 테스트하기 위한 좋은 모델을 제공합니다. 공유 인프라의 효율성을 모두 실현할 수는 없지만 완전히 유효한 멀티테넌트 SaaS 환경입니다. 일부 고객의 경우 도메인에 따라 일부 또는 모든 고객이 이 모델을 사용하도록 지시할 수 있습니다. 그렇다고 SaaS가 아니라는 의미는 아닙니다. 이러한 공유 서비스를 사용하고 모든 테넌트가 동일한 버전을 실행하는 경우에도 SaaS의 기본 원칙을 준수합니다.

이러한 매개변수와 SaaS의 광범위한 정의를 고려하면 멀티테넌트라는 용어의 사용을 발전시켜야 할 필요성을 알 수 있습니다. 총체적으로 관리 및 운영되는 모든 SaaS 시스템을 멀티테넌트라고 부르는 것이 더 합리적입니다. 그런 다음 더 세분화된 용어를 사용하여 SaaS 솔루션 구현 내에서 리소스가 공유되거나 전용되는 방식을 설명할 수 있습니다.