다중 테넌시 및 Azure Database for PostgreSQL
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 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를 사용하기 위한 지침입니다.
연결 풀링
Postgres는 연결에 프로세스 기반 모델을 사용합니다. 이 모델은 많은 수의 유휴 연결을 유지 관리하는 데 비효율적입니다. 일부 다중 테넌트 아키텍처에는 많은 수의 활성 연결이 필요하며, 이는 Postgres 서버의 성능에 부정적인 영향을 줍니다.
PgBouncer를 통한 연결 풀링은 기본적으로 Azure Database for PostgreSQL - 유연한 서버에 설치됩니다.
추가 정보:
- Azure Database for PostgreSQL - 유연한 서버의 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에 연결
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
보안 주체 작성자:
- Daniel Scott-Raynsford | 파트너 기술 전략가
기타 기여자:
- John Downs | 소프트웨어 수석 엔지니어
- Arsen Vladimirskiy | 수석 고객 엔지니어, FastTrack for Azure
- 폴 버포 | 수석 고객 엔지니어, Azure ISV용 FastTrack
- Assaf Fraenkel | 수석 엔지니어/데이터 설계자, ISV 및 스타트업을 위한 Azure FastTrack
비공개 LinkedIn 프로필을 보려면 LinkedIn에 로그인합니다.
다음 단계
다중 테넌시에 대한 스토리지 및 데이터 접근 방식을 검토합니다.