Cosmos DB를 사용한 글로벌 분산형 애플리케이션

Cosmos DB
Traffic Manager

솔루션 아이디어

잠재적인 사용 사례, 대체 서비스, 구현 고려 사항 또는 가격 책정 지침과 같은 추가 정보를 사용하여 이 문서를 확장하려는 경우 GitHub 피드백을통해 알려주세요!

Microsoft의 글로벌 데이터 센터에 기본 제공되는 고가용성 및 짧은 대기 시간 기능을 사용하여 전 세계 사용자에게 액세스를 보장합니다.

Architecture

아키텍처 다이어그램:
이 아키텍처의 SVG 버전을 다운로드합니다.

데이터 흐름

  1. 사용자가 전용 클라이언트를 통해 애플리케이션에 액세스합니다.
  2. Azure Traffic Manager 단일 또는 중첩된 라우팅 프로필에 따라 애플리케이션에 액세스하기 위한 가장 적합한 위치로 사용자의 연결을 라우팅합니다.
  3. 애플리케이션이 호스팅되는 랜치 지역에서 애플리케이션은 세션 및 데이터베이스에 대한 연결을 처리합니다.
  4. 이 애플리케이션은 간단한 정적 페이지부터 Kubernetes에서 호스트되는 마이크로 서비스 지향 애플리케이션까지 다양할 수 있습니다.
  5. 애플리케이션 환경과 Cosmos DB 간의 연결은 Key Vault Cosmos DB 키를 선택할 수 있는 Azure Active Directory 사용자를 통해 처리됩니다.
  6. Azure Cosmos DB 멀티 호밍 API를 사용하면 애플리케이션이 가장 가까운 지역을 인식하고 해당 지역에 요청을 보낼 수 있습니다. 가장 가까운 지역은 구성 변경 없이 식별됩니다. Azure Cosmos 계정에서 지역을 추가 및 제거할 때 애플리케이션을 다시 배포하거나 일시 중지할 필요가 없으며 항상 고가용성으로 제공됩니다. Cosmos DB는 정의된 지역 수에 따라 데이터의 전역 배포 및 복제를 처리합니다. 또한 지역을 사용할 수 없게 되면 사용자 작업 없이 장애 조치(failover) 우선 순위가 가장 높은 지역으로 장애 조치(failover)하는 자동 장애 조치(failover) 옵션도 활용해야 합니다. 자동 장애 조치(failover)를 사용하도록 설정한 경우 지역 우선 순위를 수정할 수 있습니다.

구성 요소

  • Azure Traffic Manager:중첩될 수 있는 6가지 유형의 DNS 기반 트래픽 라우팅 옵션을 사용하여 애플리케이션에 대한 DNS 기반 부하 분산/라우팅 옵션을 만듭니다.
  • Azure Active Directory:온-프레미스 디렉터리를 동기화하고 Single Sign-On을 사용하도록 설정합니다.
  • Azure Cosmos DB:모든 규모에 대해 전역적으로 분산된 다중 모델 데이터베이스입니다.

컴퓨팅 옵션

  • Azure Virtual Machines:몇 초 안에 Linux 및 Windows VM(가상 머신)을 만들고 비용을 절감합니다.
  • Azure Kubernetes Services:모든 애플리케이션 및 마이크로 서비스 기본 워크로드에 대해 고가용성, 보안 및 완전 관리형 Kubernetes 서비스입니다.
  • App Service:웹 및 모바일용 강력한 클라우드 앱을 빠르게 만듭니다.

서버리스 옵션

고려 사항

가용성

Cosmos DB 인스턴스의 가용성은 여러 요인에 따라 달라집니다. Cosmos 복제되는 지역 수가 많을수록 애플리케이션의 가용성이 높아질 수 있습니다. 각 지역은 Azure Cosmos DB 컨테이너의 모든 데이터 파티션을 포함하며 기본적으로 읽기를 제공할 수 있습니다. 데이터 계층의 가용성을 높이기 위해 다중 지역 쓰기를 사용하도록 설정할 수 있습니다. 이렇게 하면 데이터 계층의 가용성이 증가합니다. 더 약한 일관성 수준 및 가용성 영역을 채택하여 가용성을 높일 수도 있습니다.

위의 방법을 고려할 때 Azure Cosmos DB 자동 장애 조치(failover)에서 고가용성을 달성하는 경우 실행 중인 애플리케이션을 가능한 가장 높은 SLA로 유지하도록 솔루션을 구성합니다.

애플리케이션 계층의 경우 Traffic Manager 중첩 프로필로 구성해야 합니다. 이 디자인을 가장 높은 수준으로 푸시할 때 지역별로 다양한 애플리케이션 선택 항목을 확장할 수 있습니다. 또한 지역별 배포는 고가용성 접근 방식을 취합니다.

성능

시스템 성능은 컴퓨팅 및 데이터베이스 수준의 여러 요인에 의해 영향을 받습니다. App Service 계획 또는 기타 컴퓨팅 옵션에 대한 SKU는 각 지역에서 사용할 수 있는 메모리 및 코어에 영향을 미칩니다. 또한 컴퓨팅 계층이 배포되는 지역 수는 처리할 수 있는 규모를 결정합니다. 추가 위치를 배포하면 기존 지역에 부담을 주게 되며 애플리케이션이 처리할 수 있는 최대 처리량이 선형으로 증가합니다.

Cosmos 컴퓨팅 계층 리소스에 병목 현상이 발생하지 않도록 DB를 구성해야 합니다. Cosmos DB의 각 데이터베이스와 컨테이너는 자동 크기 조정하도록 구성되어야 하며 Cosmos DB가 요청을 제한하지 않도록 하는 최대 요청 단위 값을 제공해야 합니다. Cosmos DB 엔터티에 대한 적절한 최대 요청 단위 값을 확인하려면 애플리케이션의 대략적인 최대 처리량에 가까운 부하 테스트를 실행할 수 있습니다. 더 강력한 일관성 수준과 비교할 때 일관성 수준이 약하면 처리량과 성능상의 이점이 높아질 수 있습니다.

중요한 것은 SDK, Azure Functions 바인딩 등을 통해 Cosmos DB에서 읽고 쓰는 코드에서 논리를 구현할 때 PreferredLocations 각 지역 API가 요청을 가장 가까운 Cosmos DB 지역으로 라우팅하도록 사용해야 합니다. Azure Cosmos DB 계정 구성, 현재 지역 가용성 및 지정된 기본 설정 목록에 따라 SDK는 읽기 및 쓰기 작업을 수행하는 데 가장 적합한 엔드포인트를 선택합니다. 이 프로세스로 인해 성능이 크게 향상됩니다.

복원력

복원력을 높이기 위해 Azure Cosmos DB 배포에 가용성 영역을 사용할 수 있습니다. 복원력은 Cosmos DB 배포에서 선택하는 일관성 수준에 따라 달라집니다. 이 일관성 수준에 따라 다른 수준의 복원력을 얻을 수 있습니다(자세한 내용은 일관성, 가용성 및 성능 장단점 참조).

확장성

크기 조정은 이 다이어그램의 여러 수준을 기반으로 합니다. Azure Cosmos DB는 탄력적 확장 및 예측 가능한 성능을 목적으로 구축되었습니다. 애플리케이션 수준에서 사용되는 컴퓨팅 모델을 확인해야 합니다. Azure Functions 및 App Service 자동 크기 조정이 가능합니다. Azure Virtual Machines Azure Virtual Machine Scale Sets 사용할 수 있습니다. 이러한 필요성을 알고 있는 경우 가능한 경우 항상 서버리스 옵션을 고려해야 합니다.

보안

보안 관점에서 Azure Active Directory 사용하여 환경에 대한 액세스를 보호할 수 있는 ID 기반 시스템으로 전환합니다. 백 엔드에서 애플리케이션은 관리 ID를 통해 액세스되지만 액세스 보안을 위해 Azure Active Directory 사용자 및 Azure Key Vault 사용하는 방법을 고려할 수도 있습니다. 또한 Cosmos DB 인스턴스는 읽기 및 쓰기가 가능한 유일한 엔터티가 다른 지역에 배포되는 다양한 백 엔드가 도록 추가로 보호되어야 합니다. IP 제한은 기본 제공 방화벽를 사용하여 계정에 적용할 수 있습니다.

참고

Ignite 2021년 3월을 기준으로 이제 Cosmos DB SQL API에서 직접 Azure Active Directory RBAC도지원합니다.

다음 단계

Azure Cosmos DB에 대한 자세한 정보:

Azure Traffic Manager 대한 자세한 정보:

관련 솔루션 아이디어:

관련 전체 아키텍처:

관련 아키텍처 지침: