Azure의 많은 다중 테넌트 솔루션은 오픈 소스 관계형 데이터베이스 관리 시스템 Azure Database for PostgreSQL을 사용합니다. 이 문서에서는 다중 테넌트 시스템을 사용할 때 유용한 Azure Database for PostgreSQL 기능을 검토합니다. 또한 이 문서는 다중 테넌트 솔루션에서 Azure Database for PostgreSQL을 사용하는 방법에 대한 지침 및 예제에 연결됩니다.
배포 모드
Azure Database for PostgreSQL에는 다중 테넌트 애플리케이션에 사용하기에 적합한 세 가지 배포 모드가 있습니다.
- Azure Database for PostgreSQL - 유연한 서버 - 이 배포 방법은 Azure Cosmos DB for PostgreSQL에서 제공하는 높은 확장성이 필요하지 않은 대부분의 다중 테넌트 배포에 적합합니다.
- Azure Database for PostgreSQL - 탄력적 클러스터가 있는 유연한 서버(미리 보기) - 몇 개의 테넌트에서 높은 수의 테넌트로 확장할 수 있도록 나중에 증명해야 하는 다중 테넌트 애플리케이션에 적합한 관리 서비스 내에서 수평 크기 조정을 제공합니다. 이 기능은 미리 보기로 제공되며 프로덕션용으로는 권장되지 않습니다. 그러나 향후 구현을 위해 평가할 수 있습니다.
- Azure Cosmos DB for PostgreSQL - 다중 테넌트 애플리케이션을 포함하는 높은 수준의 규모가 필요한 솔루션을 위해 설계된 Azure 관리형 데이터베이스 서비스입니다. 이 서비스는 Azure Cosmos DB 제품군의 일부입니다.
참고
Azure Database for PostgreSQL - 단일 서버는 사용 중지 경로에 있으며 2025년 3월 28일까지 사용 중지될 예정입니다. 새 다중 테넌트 워크로드에는 권장되지 않습니다.
다중 테넌시를 지원하는 Azure Database for PostgreSQL의 기능
Azure Database for PostgreSQL을 사용하여 다중 테넌트 애플리케이션을 빌드하는 경우 솔루션을 개선하는 데 사용할 수 있는 다양한 기능이 있습니다.
참고
일부 기능은 특정 배포 모드에서만 사용할 수 있습니다. 이러한 기능은 아래 지침에 표시됩니다.
행 수준 보안
행 수준 보안은 공유 테이블을 사용하는 경우 테넌트 수준 격리를 적용하는 데 유용합니다. PostgreSQL에서 행 수준 보안은 행 보안 정책을 테이블에 적용하여 테넌트별로 행에 대한 액세스를 제한하는 방식으로 구현합니다.
테이블에서 행 수준 보안을 구현할 때 성능에 약간의 영향을 줄 수 있습니다. 따라서 성능에 영향을 주지 않도록 행 수준 보안을 사용하도록 설정된 테이블에 다른 인덱스를 만들어야 할 수 있습니다. 행 수준 보안을 사용하는 경우 성능 테스트 기술을 사용하여 워크로드가 기준 성능 요구 사항을 충족하는지 확인하는 것이 중요합니다.
추가 정보:
샤딩을 통해 수평 스케일링
분할 패턴을 사용하면 여러 데이터베이스 또는 데이터베이스 서버에서 워크로드를 스케일링할 수 있습니다.
높은 수준의 확장이 필요한 솔루션은 PostgreSQL용 Azure Cosmos DB를 사용할 수 있습니다. 이 배포 모드를 사용하면 여러 서버(노드)에서 테넌트의 수평 분할을 수행할 수 있습니다. 다중 테넌트 데이터베이스에서 분산 테이블을 사용하면 테넌트의 모든 데이터가 동일한 노드에 저장되어 쿼리 성능이 향상될 수 있습니다.
참고
2022년 10월부터 Azure Database for PostgreSQL 하이퍼스케일(Citus)이 Azure Cosmos DB for PostgreSQL로 브랜드를 변경하고 Cosmos DB 제품군으로 이전되었습니다.
추가 정보:
- Azure Cosmos DB for PostgreSQL을 사용하여 다중 테넌트 데이터베이스 디자인
- 분산 테이블
- 분산 테이블에서 배포 열 선택
- 다중 테넌트 애플리케이션에 Citus를 사용하기 위한 지침입니다.
탄력적 클러스터(미리 보기)
탄력적 클러스터는 단일 관리형 서비스 내에서 수평 크기 조정 기능을 제공하는 Azure Database for PostgreSQL 유연한 서버의 기능입니다. 이 배포 옵션은 스케일 아웃 기능이 필요한 다중 테넌트 워크로드에 분산 테이블 기능을 사용합니다.
다중 테넌트 솔루션에서 탄력적 클러스터를 사용하면 여러 노드에서 테넌트 데이터를 분할할 수 있습니다. 테넌트 ID별로 테이블을 배포하여 특정 노드에서 테넌트 데이터 공동 배치를 보장하여 테넌트별 쿼리에 대한 쿼리 성능을 향상시킬 수 있습니다.
참고
탄력적 클러스터는 현재 미리 보기 상태이며 Azure Database for PostgreSQL - 유연한 서버에서만 사용할 수 있습니다.
추가 정보:
연결 풀링
Postgres는 연결에 프로세스 기반 모델을 사용합니다. 이 모델은 많은 수의 유휴 연결을 유지 관리하는 데 비효율적입니다. 일부 다중 테넌트 아키텍처에는 많은 수의 활성 연결이 필요하며 이는 Postgres 서버의 성능에 부정적인 영향을 줍니다.
PgBouncer를 통한 연결 풀링은 기본적으로 Azure Database for PostgreSQL - 유연한 서버에 설치됩니다.
추가 정보:
- postgresql용 Azure 데이터베이스의 유연한 서버에서 PgBouncer
- PostgreSQL용 Azure Cosmos DB의 연결 풀링
- Azure Database for PostgreSQL을 사용하여 PgBouncer 연결 풀링 프록시를 설치 및 설정하는 단계
Microsoft Entra 인증
Azure Database for PostgreSQL - 유연한 서버 는 Microsoft Entra ID를 사용하여 연결 인증을 지원합니다. 이 기능을 사용하면 다중 테넌트 환경의 애플리케이션 워크로드가 테넌트별 서비스 주체 또는 관리 ID를 사용하여 데이터베이스에 인증할 수 있습니다. 즉, 데이터베이스 액세스 범위를 개별 테넌트로 지정할 수 있습니다. Microsoft Entra ID 인증을 테넌트별 행 보안 정책과 결합하여 애플리케이션이 다중 테넌트 데이터베이스 내에서 다른 테넌트의 데이터에 액세스하는 위험을 줄일 수 있습니다. 추가 정보:
- Azure Database for PostgreSQL - 유연한 서버를 사용한 Microsoft Entra 인증
- 관리 ID를 사용하여 Azure Database for PostgreSQL - Flexible Server에 연결
Azure 기밀 컴퓨팅(미리 보기)
Azure 기밀 컴퓨팅에 대한 지원은 Azure Database for PostgreSQL - 사용 중인 데이터에 대한 하드웨어 기반 보호를 제공하는 TEE(신뢰할 수 있는 실행 환경)를 통한 유연한 서버에서 사용할 수 있습니다. 이 기능은 운영 체제, 하이퍼바이저 또는 기타 애플리케이션의 무단 액세스로부터 테넌트 데이터를 보호합니다.
중요한 데이터를 처리하는 다중 테넌트 솔루션의 경우 기밀 컴퓨팅은 처리 중에 하드웨어 수준 데이터 보호를 제공합니다. 테넌트에 엄격한 데이터 보호 요구 사항 또는 규정 준수 요구 사항이 있거나 애플리케이션 공급자가 테넌트 데이터에 액세스할 수 없도록 해야 하는 경우에 적합합니다.
참고
기밀 컴퓨팅은 현재 미리 보기 상태이며 특정 가상 머신 SKU가 필요합니다.
추가 정보:
암호화
Azure Database for PostgreSQL에 저장된 데이터 - 유연한 서버는 기본적으로 Microsoft 관리형 키를 사용하여 미사용 시 암호화되지만, 고객 관리형 키를 사용하여 테넌트가 자체 암호화 키를 지정할 수 있도록 할 수도 있습니다.
CMK(고객 관리형 키)를 사용하는 경우 Azure Key Vault에 저장된 고유한 암호화 키를 제공할 수 있습니다. 다중 테넌트 환경에서는 데이터가 동일한 데이터베이스 서버에 저장되어 있더라도 서로 다른 테넌트에 대해 서로 다른 암호화 키를 사용할 수 있습니다. 또한 이 기능을 사용하면 테넌트가 자체 암호화 키를 제어할 수 있으며, 계정을 비활성화해야 하는 경우 암호화 키를 삭제하면 데이터에 더 이상 액세스할 수 없게 됩니다.
Azure Database for PostgreSQL - 유연한 서버는 고객 관리형 키에 대한 자동 키 버전 업데이트를 지원합니다 . 이 기능은 수동 키 버전 관리 없이 Azure Key Vault에서 회전한 후 새 키 버전으로 자동으로 업데이트됩니다. 규정 준수에 정기적인 키 회전이 필요한 다중 테넌트 환경에서 이 자동화는 수동 작업 작업을 줄이고 서비스 중단 없이 데이터 보호를 유지합니다.
추가 정보:
기여자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자
- 다니엘 스콧-레인스포드 | 파트너 솔루션 설계자, 데이터 및 AI
기타 기여자:
- John Downs | 소프트웨어 수석 엔지니어
- Arsen Vladimirskiy | 수석 고객 엔지니어, FastTrack for Azure
- 폴 버포 | 수석 고객 엔지니어, Azure ISV용 FastTrack
- Assaf Fraenkel | 수석 엔지니어/데이터 설계자, ISV 및 스타트업을 위한 Azure FastTrack
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
다중 테넌시에 대한 스토리지 및 데이터 접근 방식을 검토합니다.