로그인 / 등록 Account

클라우드 컴퓨팅

멀티테넌시란?

멀티테넌시는 단일 소프트웨어 인스턴스로 서로 다른 여러 사용자 그룹에 서비스를 제공할 수 있는 소프트웨어 아키텍처입니다. 서비스로서의 소프트웨어(Software-as-a-Service, SaaS) 제품이 멀티테넌트 아키텍처의 예입니다.

클라우드 컴퓨팅에서는 서로 다른 고객이 서버 리소스를 나누어 사용하는 공유 호스팅을 멀티테넌시라고 부르기도 합니다.

멀티테넌시의 반대 개념인 단일 테넌시에서는 소프트웨어 인스턴스 또는 컴퓨터 시스템 하나에 사용자 또는 사용자 그룹이 하나만 있습니다.

시분할에서 SaaS로 발전

멀티테넌시 개념은 수십 년 전에 등장했습니다. 1960년대에 고가의 고성능 메인프레임을 보유한 대학들은 여러 사용자가 기본적으로 동시에 컴퓨터를 사용할 수 있도록 시분할 소프트웨어를 개발했습니다.

이 아이디어는 사실상 사라지지 않았고, 오늘날 멀티테넌시 개념은 클라우드 컴퓨팅의 근간으로 자리잡았습니다. 퍼블릭 클라우드에서는 공유 리소스(프로세싱 성능 및 메모리)의 풀을 구성한 다음 여러 테넌트에 분할합니다. 그러므로 여러 테넌트가 물리적으로 동일한 머신 또는 동일한 머신 그룹에서 실행되더라도 각 테넌트의 워크로드는 분리된 상태를 유지합니다.

이 아이디어를 더 발전시켜 소프트웨어 아키텍처에 적용한 것이 바로 오늘날 SaaS 개념입니다. SaaS 제공업체는 애플리케이션의 단일 인스턴스를 실행하여 개별 고객들에게 액세스를 제공합니다. 따라서 모든 사용자가 같은 소프트웨어에 액세스하지만 각 사용자의 데이터는 계속 분리되어 있습니다.

쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼에서 멀티테넌시라는 용어는 대개 여러 개의 프로젝트를 서비스하는 단일 클러스터를 의미합니다. 이 클러스터는 각 프로젝트를 서로 분리 실행하도록 설정되어 있습니다.

멀티테넌트 아키텍처의 이점

클라우드 컴퓨팅의 인기로 알 수 있듯이 멀티테넌시에는 장점이 대단히 많습니다.

멀티테넌시의 비용 절감 효과. 규모가 커질수록 컴퓨팅 비용이 저렴해지므로 멀티테넌시에서는 효율적으로 리소스를 통합하고 할당할 수 있습니다. 개별 사용자 입장에서는 클라우드 서비스 또는 SaaS 애플리케이션에 대한 액세스 비용을 지불하는 것이 단일 테넌트 하드웨어 및 소프트웨어를 운영하는 것보다 경제적일 때가 많습니다.

멀티테넌시의 유연성. 하드웨어와 소프트웨어를 자체적으로 구입하면 수요가 많을 때는 용량이 부족하고 수요가 적을 때는 용량이 남아돌 수 있습니다. 반면에 멀티테넌트 클라우드에서는 사용자의 리소스 수요 증감에 맞춰 필요한 사용자에게 리소스 풀을 할당할 수 있습니다. 퍼블릭 클라우드 제공업체의 고객이 되면 용량이 더 필요할 때 요청하여 사용하고, 필요하지 않을 때는 비용을 내지 않아도 됩니다.

멀티테넌시의 효율성. 멀티테넌시에서는 개별 사용자가 인프라를 관리하고 업데이트 및 유지 관리를 수행하는 일이 줄어듭니다. 개별 테넌트는 이 반복적이고 번거로운 작업을 직접 처리하는 대신 중앙의 클라우드 제공업체에 맡길 수 있습니다.

단일 테넌트를 선호하는 경우

멀티테넌시의 장점에도 불구하고 활용 사례에 따라서는 단일 테넌트 컴퓨터 시스템이 더 적합할 수 있습니다.

고도로 민감한 데이터를 다루는 애플리케이션이 대표적인 경우입니다. 퍼블릭 클라우드 환경 및 SaaS 제품은 워크로드와 데이터를 분리하도록 설계되었으며 이러한 설계 원칙을 충실히 지켜 왔습니다. 그러나 통제 환경에서 테스트한 결과, 적어도 이론상으로는 클라우드 환경에서 크로스 테넌트 공격을 허용하는 취약점이 있습니다.

사실 그러한 리스크는 미미한 수준입니다. 공유 테넌시의 취약점은 흔치 않을 뿐 아니라 매우 정교한 공격 기술이 필요하다고 미국 국가안보국의 2020년 클라우드 취약점 보고서는 지적합니다. NSA의 보고서에 따르면, 주요 퍼블릭 클라우드 제공업체 중 어디서도 크로스 테넌트 공격이 발생했다는 기록이 없었습니다. NSA에서는 이러한 리스크보다 부실한 액세스 제어 및 설정 오류로 인한 리스크가 더 크다고 판단합니다.

Linux의 멀티테넌트 환경

멀티테넌트 환경을 설정할 때는 가상 머신(VM)으로 환경을 분리할지 아니면 컨테이너로 분리할지 선택해야 합니다.

VM을 사용하는 경우에는 하이퍼바이저가 생성하는 게스트 머신마다 자체 운영 체제와 애플리케이션은 물론 종속성까지 있으며, 하이퍼바이저에 의해 사용자도 분리됩니다.

컨테이너는 VM에 비해 더 가볍고 유연하며 스케일하기 쉬운 모델입니다. 컨테이너는 단일 호스트에서 여러 애플리케이션을 배포하고 커널 및 컨테이너 런타임을 사용하여 각 컨테이너를 가동하는 방식으로 멀티테넌시 배포를 간소화합니다. 저마다 자체 커널이 있는 VM과 달리, 컨테이너에서 실행되는 애플리케이션은 여러 테넌트 간에 커널 하나를 공유합니다.

Linux®에서는 네임스페이스 덕분에 여러 컨테이너가 같은 리소스를 충돌 없이 동시에 사용할 수 있습니다. 컨테이너 보안은 실행 중인 프로세스의 보안과 같은 방식으로 이루어집니다. 

컨테이너 오케스트레이션에 쿠버네티스를 사용할 경우, 쿠버네티스 클러스터 하나로 멀티테넌트 환경을 설정할 수 있습니다. 이때 테넌트를 각자의 네임스페이스로 분리하고 테넌트 분리 정책을 생성할 수 있습니다.

클라우드 컴퓨팅에 필요한 툴

Red Hat Enterprise Linux logo

최적화된 공간 절약형 운영 체제를 통해 경량의 Linux 컨테이너를 실행할 수 있습니다.

Red Hat OpenStack Platform product logo

표준 하드웨어를 실행하여 필요할 때 단일한 위치에서 필요한 모든 프라이빗 클라우드 툴을 배포할 수 있도록 지원하는 클라우드 인프라입니다.

Red Hat OpenShift product logo

장소나 스케일에 상관없이 컨테이너를 개발, 배포, 관리할 수 있습니다.

클라우드의 더 큰 가능성을 살펴보세요