다중 테넌트 솔루션의 설계자 및 개발자를 위한 리소스
다중 테넌트 애플리케이션에 대한 아키텍처
다음 문서에서는 Azure의 다중 테넌트 아키텍처 예제를 제공합니다.
Architecture | 요약 | 기술 포커스 |
---|---|---|
Azure의 다중 테넌트 SaaS | 여러 지역에 배포되는 Azure의 다중 테넌트 SaaS 시나리오에 대한 참조 아키텍처 | 웹 |
AKS(다중 테넌트 Azure Kubernetes Service)에서 Application Gateway 수신 컨트롤러 사용 | AKS 및 AGIC를 사용한 다중 테넌트 지원 구현 예제 | Kubernetes |
모든 다중 테넌트 아키텍처 | 다중 테넌트 지원을 포함하는 모든 아키텍처를 나열합니다. | 여러 접두사 |
클라우드 디자인 패턴
다음 클라우드 디자인 패턴은 다중 테넌트 아키텍처에서 자주 사용됩니다.
패턴 | 요약 |
---|---|
배포 스탬프 패턴 | 데이터 저장소를 포함하여 애플리케이션 구성 요소의 여러 독립 복사본(스케일링 단위)을 배치합니다. |
페더레이션 ID | 외부 ID 공급자에게 인증을 위임합니다. |
게이트 키퍼 | 클라이언트와 애플리케이션 또는 서비스 간 브로커 역할을 하며, 요청을 검사 및 정리하고, 요청 및 데이터를 전달하는 전용 호스트 인스턴스를 사용하여 애플리케이션 및 서비스를 보호합니다. |
큐 기반 부하 평준화 | 작업 그리고 그 작업이 일시적인 높은 부하를 부드럽게 처리하기 위해 호출하는 서비스 사이에서 버퍼 역할을 하는 큐를 사용합니다. |
분할 | 데이터 저장소를 수평 파티션 또는 분할 집합으로 나눕니다. |
제한 | 애플리케이션 인스턴스, 개별 테넌트 또는 서비스 전체의 리소스 사용량을 제어합니다. |
안티패턴
한 테넌트의 활동이 다른 테넌트의 시스템 사용에 부정적인 영향을 미칠 수 있는 노이지 네이버 안티패턴을 고려합니다.
Microsoft Azure Well-Architected Framework
Azure Well-Architected Framework의 전체는 모든 솔루션에 중요하지만 안정성 핵심 요소에 특히 주의해야 합니다. 클라우드 호스팅의 속성 상 애플리케이션은 다중 테넌트인 경우가 많고, 공유 플랫폼 서비스를 사용하고, 리소스와 대역폭에 대해 경쟁하고, 인터넷을 통해 통신하고, 상용 하드웨어에서 실행됩니다. 이 때문에 일시적 오류 및 더 영구적인 오류가 발생할 가능성이 둘 다 높아집니다.
다중 테넌트 아키텍처 참고 자료
- Azure에서 다중 테넌트 솔루션 설계(비디오): 이 비디오에서는 Azure에서 다중 테넌트 솔루션을 디자인, 설계 및 빌드하는 방법을 설명합니다. SaaS 제품 또는 다른 다중 테넌트 서비스를 빌드하는 경우 고성능, 테넌트 격리를 계획하고 배포를 관리할 때 고려해야 할 사항이 많습니다. 이 세션은 스타트업 및 ISV를 포함하여 다중 테넌트 또는 SaaS 애플리케이션을 빌드하는 개발자와 설계자를 대상으로 합니다.
- Azure Friday - Azure에서 다중 테넌트 솔루션 설계(비디오): Azure Friday의 이 비디오에서는 Azure에서 다중 테넌트 SaaS(서비스 제공 소프트웨어) 솔루션을 디자인, 설계 및 빌드하는 방법을 설명합니다.
- SaaS로의 여정 가속화 및 위험성 제거(비디오): 이 비디오에서는 기존 솔루션을 온-프레미스에서 Azure로 리프트 앤 시프트하거나, 다중 테넌트 아키텍처를 고려하거나, 기존 SaaS 웹 애플리케이션을 현대화하려는 경우에 SaaS(서비스 제공 소프트웨어) 제공 모델로 전환하기 위한 참고 자료를 제공합니다.
Azure 서비스용 리소스
거버넌스 및 규정 준수
- 여러 Azure 구독 구성 및 관리: Azure 구독을 관리하는 방법과 구독에 테넌트 리소스를 할당하는 방법을 고려하는 것이 중요합니다.
- 테넌트 간 관리 환경: 서비스 공급자로서 Azure Lighthouse를 사용하여 사용자 고유의 Microsoft Entra 테넌트 내에서 여러 고객을 위한 리소스를 관리할 수 있습니다. Azure 위임 리소스 관리를 사용하여 여러 작업 및 서비스를 관리되는 테넌트에서 수행할 수 있습니다.
- Azure 관리형 애플리케이션: 관리되는 애플리케이션에서 리소스는 앱 게시자가 관리하는 리소스 그룹에 배포됩니다. 리소스 그룹은 소비자의 구독에 있지만, 게시자 테넌트의 ID는 해당 리소스 그룹에 액세스할 수 있습니다.
Compute
- AKS(Azure Kubernetes Service)의 클러스터 격리 모범 사례: AKS는 다중 테넌트 클러스터를 실행하고 리소스를 격리할 수 있는 방법에 유연성을 제공합니다. Kubernetes에 대한 투자를 최대화하려면 먼저 AKS 다중 테넌트 지원 및 격리 기능을 이해하고 구현해야 합니다. 이 모범 사례 문서는 클러스터 운영을 위한 격리를 중점적으로 설명합니다.
- Azure Kubernetes Service에서 클러스터 보안 및 업그레이드에 대한 모범 사례: AKS(Azure Kubernetes Service)에서 클러스터를 관리할 때 워크로드 및 데이터 보안이 주요 고려 사항입니다. 논리적 격리를 사용하여 다중 테넌트 클러스터를 실행하는 경우 특히 리소스 및 워크로드 액세스를 보호해야 합니다.
네트워킹
Private Link
- 공급자(SaaS ISV) 및 소비자 관점에서 본 Azure Private Link 서비스 설명 및 데모: 다중 테넌트 서비스 공급자(예: SaaS 제품을 빌드하는 독립 소프트웨어 공급업체)를 지원하는 Azure Private Link 서비스 기능을 살펴보는 비디오입니다. 이 솔루션을 사용하면 소비자가 소비자 고유의 Azure 가상 네트워크에서 개인 IP 주소를 사용하여 공급자의 서비스에 액세스할 수 있습니다.
- Azure Private Link 서비스와 TCP 프록시 프로토콜 v2 — 심층 분석: Azure Private Link 서비스의 고급 기능인 TCP 프록시 프로토콜 v2에 대한 심층 분석을 제공하는 비디오입니다. 다중 테넌트 및 SaaS 시나리오에서 유용합니다. 이 비디오에서는 Azure Private Link 서비스에서 프록시 프로토콜 v2를 사용하도록 설정하는 방법을 보여 줍니다. 또한 프라이빗 엔드포인트를 통해 서비스에 액세스하기 위해 NAT IP가 아닌 원래 클라이언트의 원본 개인 IP 주소를 읽도록 NGINX 서비스를 구성하는 방법도 보여 줍니다.
- NGINX Plus를 사용하여
linkIdentifier
Azure Private Link 서비스에서 프록시 프로토콜 TLV 디코딩: NGINX Plus를 사용하여 Azure Private Link 서비스에서 TCP 프록시 프로토콜 v2 TLV를 가져오는 방법을 보여 주는 비디오입니다. 이 비디오에서는 프라이빗 엔드포인트 연결의 숫자linkIdentifier
(LINKID
라고도 함)를 추출하고 디코딩하는 방법을 보여 줍니다. 이 솔루션은 연결이 만들어진 특정 소비자 테넌트를 식별해야 하는 다중 테넌트 공급자에게 유용합니다. - SaaS 프라이빗 연결 패턴: Azure Managed Applications를 사용하여 프라이빗 엔드포인트 연결의 승인을 자동화하는 한 가지 방법을 보여 주는 예제 솔루션입니다.
웹
- SaaS 솔루션에 대한 클레임 기반 라우팅: 이 문서에서는 테넌트 라우팅 및 테넌트에 대한 매핑 요청을 용이하게 하기 위해 역방향 프록시를 사용하여 SaaS 솔루션에서 백 엔드 서비스 관리를 강화하는 방법을 설명합니다.
스토리지 및 데이터
- Azure Cosmos DB를 사용하여 대규모로 다중 테넌트 SaaS 앱 디자인 및 빌드(비디오): Azure Cosmos DB 를 사용하여 다중 테넌트 SaaS 애플리케이션을 디자인하고 최적화하는 방법을 알아봅니다. 이 세션에서는 테넌트 격리, 비용 최적화 및 전역 배포와 관련된 주요 디자인 고려 사항을 살펴봅니다. 이 세션의 내용은 볼륨이 작은 B2C 테넌트가 많든, 비뚤어진 B2B 테넌트 볼륨이 적은지에 관계없이 적용됩니다.
- Azure Cosmos DB 및 다중 테넌트 시스템: Azure Cosmos DB를 사용하는 다중 테넌트 시스템을 빌드하는 방법을 설명하는 블로그 게시물입니다.
- Azure Cosmos DB 계층적 파티션 키: 하위 분할이라고도 하는 계층적 파티션 키를 사용하면 기본적으로 여러 수준의 파티션 키로 컨테이너를 분할할 수 있습니다. 이렇게 하면 가상 파티션 키를 사용했을 다중 테넌트 시나리오 또는 워크로드에 대해 더 많은 최적의 분할 전략을 사용할 수 있습니다.
- Azure SQL 데이터베이스 다중 테넌트 SaaS 데이터베이스 테넌트 패턴: Azure SQL Database를 사용하여 다중 테넌트 SaaS 애플리케이션에 사용할 수 있는 다양한 테넌트 모델을 설명하는 문서의 집합입니다.
- 대규모 SaaS 공급자를 위해 Azure SQL에서 100만 개의 데이터베이스 실행: Microsoft Dynamics 365 및 Power Platform: Dynamics 365 팀이 대규모로 데이터베이스를 관리하는 방법을 설명하는 블로그 게시물입니다.
- Azure Database for PostgreSQL - 하이퍼스케일을 사용하여 다중 테넌트 데이터베이스 디자인
- 수평, 수직 및 기능별 데이터 분할: 많은 대규모 및 다중 테넌트 솔루션에서 데이터는 별도로 관리 및 액세스할 수 있는 파티션으로 나뉩니다. 분할을 통해 확장성을 향상시키고 경합을 줄여 성능을 최적화할 수 있습니다. 데이터를 사용 패턴 기준 및 테넌트 기준으로 나누는 메커니즘도 제공할 수 있습니다.
- Azure 서비스를 사용한 데이터 분할 전략: 이 문서에서는 다양한 Azure 데이터 저장소의 데이터 분할 전략을 설명합니다.
- Azure Database for PostgreSQL Hyperscale Citus를 사용하여 다중 테넌트 애플리케이션 빌드하기(비디오)
- Azure Cosmos DB를 사용하는 다중 테넌트 애플리케이션(비디오)
- Azure Cosmos DB 및 Azure를 사용하여 다중 테넌트 SaaS 빌드(비디오): 다중 테넌트 SaaS 스타트업인 Whally가 Azure Cosmos DB 및 Azure에서 최신 플랫폼을 처음부터 빌드하는 방법에 대한 실제 사례 연구입니다. Azure App Services에서 ASP.NET Core를 사용하여 분할, 데이터 모델링, 보안 다중 테넌트 지원, 성능, 변경 피드에서 SignalR로의 실시간 스트리밍 등과 관련된 설계 및 구현 결정을 보여 줍니다.
- Azure SQL Database에서 SaaS 애플리케이션에 대한 다중 테넌트 디자인 패턴(비디오)
메시징
- Azure Event Grid 도메인: Azure Event Grid 도메인을 사용하면 대규모로 다중 테넌트 이벤트 아키텍처를 관리할 수 있습니다.
- Service Bus 샘플: Azure Service Bus를 사용한 테넌트 간 통신: 중앙 공급자와 하나 이상의 고객(테넌트) 간에 통신하는 방법을 보여 주는 Azure Service Bus의 샘플 구현입니다.
ID
- Microsoft Entra ID의 테넌트: Microsoft Entra ID에는 여러 Microsoft Entra 디렉터리에서 작동하는 것을 의미하는 자체적인 다중 테넌트 개념이 있습니다. 개발자는 Microsoft Entra 앱을 사용할 때 다양한 시나리오를 지원하도록 앱을 단일 테넌트 또는 다중 테넌트로 구성하도록 선택할 수 있습니다.
- Azure AD B2C를 사용한 사용자 지정 브랜드 ID 솔루션: Azure Active Directory B2C는 하루에 수백만 명의 사용자와 수십억 개의 인증을 지원할 수 있는 고객 ID 액세스 관리 솔루션입니다.
- Microsoft ID 플랫폼 엔드포인트를 사용하여 다중 테넌트 디먼 빌드: 이 샘플 애플리케이션은 Microsoft ID 플랫폼 엔드포인트를 사용하여 장기 실행 비대화형 프로세스에서 Microsoft 비즈니스 고객의 데이터에 액세스하는 방법을 보여줍니다. 이는 OAuth2 클라이언트 자격 증명 부여를 사용하여 액세스 토큰을 획득한 다음, 이를 사용하여 Microsoft Graph를 호출하고 조직 데이터에 액세스합니다.
- Microsoft Entra ID를 사용하여 다중 테넌트 앱 인증 및 권한 부여: Microsoft Entra ID를 통해 다중 테넌트 시나리오에서 클라우드 네이티브 앱의 기능을 개선할 수 있는 방법을 알아봅니다.
- Azure 아키텍처 연습: B2C 시나리오를 위한 다중 테넌트 Azure 아키텍처 빌드: Azure Active Directory B2C 및 API Management를 사용하여 다중 테넌트 모바일 앱 뒤에 있는 아키텍처를 안내합니다.
- SaaS 솔루션에서 Microsoft Entra ID를 사용하여 사용 권한, 역할 및 범위를 정의하고 구현합니다. 이 문서에서는 SaaS 공급자가 사용할 수 있는 Microsoft Entra 인증 및 권한 부여와 관련된 세 가지 주요 개념을 다룹니다. 애플리케이션 역할 기능, 위임 및 애플리케이션 권한 및 범위 기능에 대해 설명합니다.
분석
- Power BI Embedded 분석이 포함된 다중 테넌트 지원 솔루션: Power BI Embedded를 포함하는 다중 테넌트 애플리케이션을 디자인할 때는 요구 사항에 가장 적합한 테넌트 모델을 신중하게 선택해야 합니다.
IoT
- IoT Hub Device Provisioning Service의 다중 테넌트: 다중 테넌트 IoT 솔루션은 일반적으로 지역에 분산된 IoT Hub 그룹을 사용하여 테넌트 디바이스를 할당합니다.
AI/ML
- 다중 테넌트 SaaS 애플리케이션 및 Azure Cognitive Search 대한 디자인 패턴: 이 문서에서는 Azure Cognitive Search를 사용하여 빌드된 다중 테넌트 애플리케이션에 대한 테넌트 격리 전략에 대해 설명합니다.
- 다중 테넌트 방식으로 ML 파이프라인에 대한 솔루션: 이 블로그 게시물에서는 Azure Machine Learning 작업 영역을 사용하여 여러 테넌트를 지원하도록 Azure Machine Learning 파이프라인을 설계하는 방법을 설명합니다.
커뮤니티 콘텐츠
Kubernetes
- Kubernetes에 대한 세 가지 테넌시 모델: Kubernetes 클러스터는 일반적으로 조직의 여러 팀에서 사용합니다. 이 문서에서는 Kubernetes에 대한 세 가지 테넌시 모델을 설명합니다.
- Kubernetes 다중 테넌트 이해: Kubernetes는 다중 테넌트 시스템이 아니며 사용자 지정 구성이 필요합니다. 이 문서에서는 Kubernetes 다중 테넌트 유형에 대해 설명합니다.
- Kubernetes 다중 테넌트 – 모범 사례 가이드: Kubernetes 다중 테넌시는 Kubernetes 사용량이 확산됨에 따라 조직이 점점 더 관심을 가지는 주제입니다. 그러나 Kubernetes는 명시적으로 다중 테넌트 시스템이 아니므로 다중 테넌트 Kubernetes 구현을 설계하기가 어려울 수 있습니다. 이 문서에서는 이러한 과제와 이를 극복하는 방법 및 Kubernetes 다중 테넌트용 몇 가지 유용한 도구에 대해 설명합니다.
- 캡슐: Kubernetes 다중 테넌트를 간단하게 만들었습니다. 캡슐은 Kubernetes 클러스터에서 다중 테넌트 및 정책 기반 환경을 구현하는 데 도움이 됩니다. PaaS(Platform as a Service) 제품이 아니라 업스트림 Kubernetes만 사용하는 미니멀한 디자인 접근 방식을 사용하는 마이크로 서비스 기반 에코시스템입니다.
- 크로스플레인: 클라우드 네이티브 컨트롤 플레인 프레임워크: 크로스플레인을 사용하면 Kubernetes 기반 접근 방식을 사용하여 자체 솔루션에 대한 제어 평면을 빌드할 수 있습니다.
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- John Downs | 주요 소프트웨어 엔지니어
- Paolo Salvatori | 수석 고객 엔지니어, FastTrack for Azure
- Arsen Vladimirskiy | 수석 고객 엔지니어, FastTrack for Azure
- LaBrina Loving | 주요 고객 엔지니어링 관리자, FastTrack for Azure
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인하세요.