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

Cosmos DB
Traffic Manager

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

아키텍처

아키텍처 다이어그램:
이 아키텍처의 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)를 사용하도록 설정한 경우 지역 우선 순위를 수정할 수 있습니다.

구성 요소

  • 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: 웹 및 모바일을 위한 강력한 클라우드 앱을 신속 하 게 만듭니다.

서버를 사용 하지 않는 옵션

  • Azure Functions: 이벤트 기반 서버를 사용 하지 않는 계산 이상의 계산.
  • Azure Logic Apps: 강력한 통합 솔루션을 신속 하 게 빌드합니다.

고려 사항

가용성

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

위의 방법을 고려할 때 Azure Cosmos DB 자동 장애 조치 (Failover)에 대 한 고가용성을 구현 하는 경우 실행 중인 응용 프로그램을 가능한 가장 높은 SLA로 유지 하도록 솔루션을 구성 하 게 됩니다.

응용 프로그램 계층의 경우 중첩 된 프로필로 Traffic Manager 구성 해야 합니다. 이 디자인을 최고 수준으로 푸시할 경우 지역별 응용 프로그램 선택 항목을 확장할 수 있습니다. 지역별 배포에도 고가용성 방법이 사용 됩니다.

성능

시스템 성능은 계산 및 데이터베이스 수준에서 다양 한 요인의 영향을 받습니다. App Service 계획 또는 기타 계산 옵션의 SKU는 각 지역에서 사용할 수 있는 메모리와 코어에 영향을 줍니다. 또한 계산 계층이 배포 되는 지역 수는 처리할 수 있는 규모를 나타냅니다. 추가 위치를 배포 하면 기존 지역에서 부하가 낮아지고 응용 프로그램에서 수행할 수 있는 최대 처리량이 선형적으로 늘어납니다.

계산 계층 리소스에 병목 현상이 발생 하지 않도록 Cosmos DB를 구성 해야 합니다. Cosmos DB의 각 데이터베이스와 컨테이너는 자동으로 크기를 조정 하도록 구성 해야 하 고, Cosmos DB에서 요청을 제한 하지 않도록 하는 최대 요청 단위 값을 제공 해야 합니다. Cosmos DB 엔터티에 대 한 적절 한 최대 요청 단위 값을 확인 하려면 응용 프로그램에 대 한 최대 처리량에 가까운 부하 테스트를 실행할 수 있습니다. 더 강력 하 고 상응 하는 것과 비교 하면 더 약한 일관성 수준에서는 처리량과 성능이 향상 됩니다.

매우를 사용 하 여 Cosmos DB를 읽고 Azure Functions 하는 코드에서 논리를 구현 하는 경우 PreferredLocations 각 지역 API에서 가장 가까운 Cosmos DB 지역으로 요청을 라우팅하도록 하려면를 사용 해야 합니다. SDK는 Azure Cosmos DB 계정 구성, 현재 지역 가용성 및 지정 된 기본 설정 목록에 따라 읽기 및 쓰기 작업을 수행할 최적의 끝점을 선택 합니다. 이 프로세스로 인해 성능이 크게 향상 됩니다.

복원력

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

확장성

크기 조정은이 다이어그램에서 많은 수준을 기반으로 합니다. Azure Cosmos DB는 탄력적 확장 및 예측 가능한 성능을 목적으로 구축되었습니다. 응용 프로그램 수준에서 사용 된 계산 모델을 확인 해야 합니다. Azure Functions 및 App Service 자동 크기 조정을 수행할 수 있습니다. Azure Virtual Machines의 경우 Azure Virtual Machine Scale Sets를 사용할 수 있습니다. 이러한 요구 사항에 대해 알고 있는 경우 항상 서버를 사용 하지 않는 옵션을 고려해 야 합니다.

보안

보안 측면에서는 id 기반 시스템에 대해 구동 합니다. 여기서 Azure Active Directory는 환경에 대 한 액세스를 보호 하는 데 사용할 수 있습니다. 백 엔드에서 응용 프로그램은 관리 되는 id를 통해 액세스 하는 (최상의 디자인), Azure Active Directory 사용자 및 Azure Key Vault를 사용 하 여 액세스 보안을 유지 하는 방법을 고려할 수도 있습니다. 또한 Cosmos DB 인스턴스에 대 한 읽기 및 쓰기를 수행할 수 있는 유일한 엔터티는 다른 지역에 배포 되는 다양 한 백 엔드가 되도록 추가로 보안이 설정 되어야 합니다. 기본 제공 방화벽을 사용 하 여 계정에 IP 제한을 적용할 수 있습니다.

또한 Cosmos DB SQL API에서 RBAC Azure Active Directory를 직접지원 합니다.

다음 단계

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

Azure Traffic Manager에 대 한 자세한 정보:

관련 솔루션 아이디어:

관련 된 전체 아키텍처:

관련 아키텍처 지침: