다음을 통해 공유


다중 테넌트 솔루션에서 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 Database for PostgreSQL 유연한 서버 는 관리되는 서비스 내에서 수평 크기 조정을 제공합니다. 몇 개의 테넌트에서 높은 수의 테넌트로 확장해야 하는 다중 테넌트 애플리케이션에 적합합니다. 이 기능은 미리 보기로 제공되며 프로덕션 용도에는 권장되지 않습니다. 그러나 향후 구현을 위해 평가할 수 있습니다.

  • PostgreSQL용 Azure Cosmos DB 는 다중 테넌트 애플리케이션과 같이 높은 수준의 확장이 필요한 솔루션을 위해 설계된 Azure 관리형 데이터베이스 서비스입니다. 이 서비스는 Azure Cosmos DB 제품군의 일부입니다.

참고

Azure Database for PostgreSQL 단일 서버는 사용 중지 경로에 있으며 2025년 3월 28일까지 사용 중지될 예정입니다. 새 다중 테넌트 워크로드에는 권장되지 않습니다.

다중 테넌시를 지원하는 Azure Database for PostgreSQL 기능

Azure Database for PostgreSQL을 사용하여 다중 테넌트 애플리케이션을 빌드하는 경우 다음 기능을 통해 솔루션을 향상시킬 수 있습니다.

참고

일부 기능은 특정 배포 모드에서만 사용할 수 있습니다. 다음 지침에서는 사용 가능한 기능을 설명합니다.

행 수준 보안

행 수준 보안은 공유 테이블을 사용할 때 테넌트 수준 격리를 적용하는 데 유용합니다. PostgreSQL에서는 테이블에 행 보안 정책을 적용하여 행 수준 보안을 구현하여 테넌트별로 행에 대한 액세스를 제한합니다.

테이블에서 행 수준 보안을 구현하면 성능에 영향을 줄 수 있습니다. 성능에 영향을 주지 않도록 행 수준 보안을 사용하도록 설정된 테이블에 다른 인덱스를 만들어야 할 수 있습니다. 행 수준 보안을 사용하는 경우 성능 테스트 기술을 사용하여 워크로드가 기준 성능 요구 사항을 충족하는지 확인하는 것이 중요합니다.

자세한 내용은 Azure Database for PostgreSQL 서버 보안을 참조하세요.

샤딩을 통해 수평 스케일링

분할 패턴을 사용하면 여러 데이터베이스 또는 데이터베이스 서버에서 워크로드를 스케일링할 수 있습니다.

높은 수준의 확장이 필요한 솔루션은 PostgreSQL용 Azure Cosmos DB를 사용할 수 있습니다. 이 배포 모드를 사용하면 여러 서버 또는 노드에서 테넌트의 수평 분할을 수행할 수 있습니다. 다중 테넌트 데이터베이스의 분산 테이블을 사용하여 테넌트의 모든 데이터가 동일한 노드에 저장되도록 합니다. 이 방법은 쿼리 성능을 향상시킵니다.

참고

2022년 10월, Azure Database for PostgreSQL 하이퍼스케일(Citus)은 Azure Cosmos DB for PostgreSQL로 브랜드를 변경하고 Azure Cosmos DB 제품군으로 이전했습니다.

자세한 내용은 다음 문서를 참조하세요.

탄력적 클러스터(미리 보기)

탄력적 클러스터는 Azure Database for PostgreSQL 유연한 서버의 기능입니다. 단일 관리 서비스 내에서 수평 크기 조정 기능을 제공합니다. 이 배포 옵션은 스케일 아웃 기능이 필요한 다중 테넌트 워크로드에 분산 테이블 기능을 사용합니다.

다중 테넌트 솔루션에서 탄력적 클러스터를 사용하면 여러 노드에서 테넌트 데이터를 분할할 수 있습니다. 테넌트 ID별로 테이블을 배포하여 테넌트 데이터가 특정 노드에 배치되도록 할 수 있습니다. 이 방법은 테넌트별 쿼리에 대한 쿼리 성능을 향상시킬 수 있습니다.

참고

탄력적 클러스터는 미리 보기로 제공되며 Azure Database for PostgreSQL 유연한 서버에서만 사용할 수 있습니다.

자세한 내용은 Azure Database for PostgreSQL 유연한 서버(미리 보기)의 탄력적 클러스터를 참조하세요.

연결 풀링

Postgres는 연결에 프로세스 기반 모델을 사용합니다. 이 모델은 많은 수의 유휴 연결을 유지 관리하는 데 비효율적입니다. 일부 다중 테넌트 아키텍처에는 Postgres 서버의 성능에 부정적인 영향을 미치는 많은 활성 연결이 필요합니다.

PgBouncer를 통한 연결 풀링은 기본적으로 Azure Database for PostgreSQL 유연한 서버에 설치됩니다.

자세한 내용은 다음 문서를 참조하세요.

Microsoft Entra 인증

Azure Database for PostgreSQL 유연한 서버는 Microsoft Entra ID를 사용하여 연결 인증을 지원합니다. 이 기능을 사용하면 다중 테넌트 환경의 애플리케이션 워크로드가 테넌트별 서비스 주체 또는 관리 ID를 사용하여 데이터베이스에 인증할 수 있습니다. 데이터베이스 액세스의 범위를 개별 테넌트로 지정할 수 있습니다. Microsoft Entra ID 인증을 테넌트별 행 보안 정책과 결합하여 애플리케이션이 다중 테넌트 데이터베이스 내에서 다른 테넌트의 데이터에 액세스하는 위험을 줄일 수 있습니다.

자세한 내용은 다음 문서를 참조하세요.

Azure 기밀 컴퓨팅(미리 보기)

Azure Database for PostgreSQL 유연한 서버는 사용 중인 데이터에 대한 하드웨어 기반 보호를 제공하는 TEE(신뢰할 수 있는 실행 환경)를 통해 Azure 기밀 컴퓨팅을 지원합니다. 이 기능은 운영 체제, 하이퍼바이저 또는 기타 애플리케이션의 무단 액세스로부터 테넌트 데이터를 보호합니다.

중요한 데이터를 처리하는 다중 테넌트 솔루션의 경우 기밀 컴퓨팅은 처리 중에 하드웨어 수준 데이터 보호를 제공합니다. 테넌트에 엄격한 데이터 보호 요구 사항 또는 규정 준수 요구 사항이 있거나 애플리케이션 공급자가 테넌트 데이터에 액세스할 수 없도록 해야 하는 경우 기밀 컴퓨팅을 사용합니다.

참고

기밀 컴퓨팅은 현재 미리 보기 상태이며 특정 가상 머신 SKU가 필요합니다.

자세한 내용은 Azure Database for PostgreSQL(미리 보기)에 대한 Azure 기밀 컴퓨팅을 참조하세요.

암호화

Azure Database for PostgreSQL 유연한 서버에 저장된 데이터는 기본적으로 Microsoft 관리형 키를 사용하여 미사용 시 암호화되지만, CMK(고객 관리형 키)를 사용하여 테넌트가 자체 암호화 키를 지정할 수 있도록 할 수도 있습니다.

CMK를 사용하는 경우 Azure Key Vault에 저장된 고유한 암호화 키를 제공할 수 있습니다. 다중 테넌트 환경에서 이 방법을 사용하면 데이터가 동일한 데이터베이스 서버에 저장되어 있더라도 서로 다른 테넌트에 대해 서로 다른 암호화 키를 사용할 수 있습니다. 또한 이 기능을 사용하면 테넌트가 자체 암호화 키를 제어할 수 있습니다. 테넌트가 계정을 비활성화하도록 선택하는 경우 연결된 키를 삭제하면 해당 데이터에 더 이상 액세스할 수 없게 됩니다.

Azure Database for PostgreSQL 유연한 서버는 CMK에 대한 자동 키 버전 업데이트를 지원합니다. 이 기능은 Key Vault에서 순환한 후 새 키 버전으로 자동으로 업데이트되며 수동 키 버전 관리가 필요하지 않습니다. 규정 준수에 정기적인 키 회전이 필요한 다중 테넌트 환경에서 이 자동화는 수동 작업 작업을 줄이고 서비스 중단 없이 데이터 보호를 유지합니다.

자세한 내용은 다음 문서를 참조하세요.

기여자

Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 이 문서를 작성했습니다.

주요 작성자

기타 기여자:

  • John Downs | 주요 소프트웨어 엔지니어, Azure 패턴 및 사례
  • Arsen Vladimirskiy | 수석 고객 엔지니어, FastTrack for Azure
  • 폴 버포 | 수석 고객 엔지니어, Azure ISV용 FastTrack
  • Assaf Fraenkel | 수석 엔지니어/데이터 설계자, ISV 및 스타트업을 위한 Azure FastTrack

LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.