Azure에서 다중 테넌트 솔루션을 디자인하고 빌드할 수 있는 다양한 방법이 있습니다. 한 가지 극단적인 경우 솔루션의 모든 리소스를 모든 테넌트 간에 공유할 수 있습니다. 다른 극단적인 경우 모든 테넌트에 대해 격리된 리소스를 배포할 수 있습니다. 모든 테넌트에 대해 별도의 리소스를 배포하는 것이 간단해 보일 수 있으며 소수의 테넌트에서 작동할 수 있습니다. 그러나 일반적으로 비용 효율성을 제공하지 않으며 리소스를 관리하기가 어려울 수 있습니다. 또한 이러한 극단에 맞는 다양한 접근 방식이 있으며 모두 규모, 격리, 비용 효율성, 성능, 구현 복잡성 및 관리 효율성 간의 절충이 필요합니다.
이 섹션에서는 컴퓨팅, 스토리지 및 데이터, 네트워킹, 배포, ID, 메시징, 인공 지능 및 기계 학습 및 IoT를 포함하여 솔루션을 구성하는 Azure 서비스의 주요 범주에 대해 설명합니다. 각 범주에 대해 다중 테넌트 솔루션을 디자인할 때 고려할 수 있는 주요 패턴 및 접근 방식과 피해야 할 몇 가지 안티패턴을 간략하게 설명합니다.
배포 스탬프 패턴
배포 스탬프 패턴은 다중 테넌트 솔루션에서 자주 사용됩니다. 테넌트 또는 테넌트 그룹에 대한 전용 인프라를 배포하는 작업이 포함됩니다. 단일 스탬프는 여러 테넌트에 서비스를 제공하거나 단일 테넌트에 전용일 수 있습니다.
단일 테넌트 스탬프를 사용하는 경우 각 스탬프가 다른 스탬프를 인식하지 못할 수 있으므로 애플리케이션 계층에 다중 테넌트 논리 또는 기능을 빌드할 필요가 없으므로 배포 스탬프 패턴을 구현하는 것이 간단합니다. 각 테넌트에 고유한 전용 스탬프가 있는 경우 이 패턴은 가장 높은 수준의 격리를 제공하며 노이즈 네이버 문제를 완화합니다. 또한 특정 지정학적 지역에 위치하거나 특정 고가용성 요구 사항을 갖는 것과 같은 자체 요구 사항에 따라 테넌트를 구성하거나 사용자 지정할 수 있는 옵션도 제공합니다.
다중 테넌트 스탬프를 사용하는 경우 스탬프 내에서 다중 테넌시를 관리하기 위해 다른 패턴을 고려해야 하며 노이즈 네이버 문제가 여전히 적용될 수 있습니다. 그러나 배포 스탬프 패턴을 사용하면 솔루션이 증가함에 따라 계속 확장할 수 있습니다.
배포 스탬프 패턴의 가장 큰 문제는 단일 테넌트에 서비스를 제공하는 데 사용되는 경우 인프라의 비용인 경향이 있습니다. 각 스탬프에는 별도의 인프라 집합이 있어야 하며 인프라는 다른 테넌트와 공유되지 않습니다. 또한 스탬프에 배포된 리소스가 해당 테넌트의 워크로드에 대한 최대 부하를 충족하기에 충분한지 확인해야 합니다. 가격 책정 모델이 테넌트의 인프라에 대한 배포 비용을 오프셋하는지 확인합니다.
적은 수의 테넌트가 있는 경우 단일 테넌트 스탬프가 잘 작동하는 경우가 많습니다. 테넌트 수가 증가함에 따라 단일 테넌트 스탬프를 관리하는 것은 가능하지만 점점 더 어려워집니다(예제로 이 사례 연구 참조). 배포 스탬프 패턴을 적용하여 리소스 및 비용 공유에 대한 이점을 제공할 수 있는 다중 테넌트 스탬프를 만들 수도 있습니다.
배포 스탬프 패턴을 구현하려면 자동화된 배포 방법을 사용하는 것이 중요합니다. 배포 전략에 따라 Bicep 파일 또는 Terraform 템플릿과 같은 선언적 인프라를 코드로 사용하여 배포 파이프라인 내에서 스탬프를 관리하는 것이 좋습니다. 또는 Azure SDK를 사용하는 등 각 스탬프를 배포하고 관리하는 사용자 지정 코드를 빌드하는 것이 좋습니다.
대상 그룹
이 섹션의 문서는 ISV(독립 소프트웨어 공급업체) 및 SaaS 솔루션을 개발하는 신생 기업 등 다중 테넌트 애플리케이션의 솔루션 설계자 및 수석 개발자에게 유용합니다. 이 섹션의 참고 자료는 대부분 일반이며 범주 내의 여러 Azure 서비스에 적용됩니다.
다음 단계
Azure 서비스의 특정 범주에 대한 참고 자료를 검토하기 전에 다중 테넌트 솔루션에서 리소스 조직에 대한 접근 방식을 검토하는 것이 좋습니다.