Table Storage 장애 조치(failover)를 사용하는 2개 지역 웹 애플리케이션

Azure Front Door
Azure App Service
Azure 기능
Azure Table Storage
Azure Cache for Redis

솔루션 아이디어

이 문서는 솔루션 아이디어입니다. 잠재적인 사용 사례, 대체 서비스, 구현 고려 사항 또는 가격 책정 지침과 같은 추가 정보로 콘텐츠를 확장하려면 GitHub 피드백을 제공하여 알려주세요.

이 아키텍처는 대량의 데이터를 사용하는 웹 애플리케이션에 대한 고가용성 솔루션을 제공합니다. 보조 지역은 주 지역에 대한 대기 지역 역할을 하여 가용성을 개선합니다. 주 지역은 Azure Storage의 기본 제공 복제 기능을 사용하여 보조 지역으로 데이터를 보냅니다.

데이터는 Azure Table Storage 테이블에 저장됩니다. Azure Storage 서비스와 마찬가지로 Table Storage 데이터는 주 지역에서 동기적으로 세 번 복제됩니다. 또한 대기 사용을 위해 보조 지역에서 세 번 비동기적으로 복제됩니다. Azure Storage 복제에 대한 자세한 내용은 Azure Storage 중복도를 참조하세요.

아키텍처에는 액세스 부하를 줄이고 애플리케이션 응답을 개선하기 위해 테이블에 대한 캐시가 포함되어 있습니다.

참고

경우에 따라 애플리케이션에 여러 스토리지 계정이 필요할 수 있습니다. 자세한 내용은 고려 사항을 참조하세요.

잠재적인 사용 사례

아키텍처는 항상 사용할 수 있어야 하는 대량의 데이터를 사용하는 모든 애플리케이션에 적합할 수 있습니다. 예를 들어 다음과 같은 앱이 여기에 포함됩니다.

  • 고객의 지출 습관과 쇼핑 행동을 추적합니다.
  • 날씨를 예측합니다.
  • 스마트 교통 시스템을 제공 또는 구현하거나 스마트 기술을 사용해서 교통 상황을 모니터링합니다.
  • 제조 IoT(사물 인터넷) 데이터를 분석합니다.
  • 스마트 측정 데이터를 표시하거나 스마트 기술을 사용해서 측정 데이터를 모니터링합니다.

아키텍처

대기 지역으로 장애 조치(failover)할 수 있는 복원력 있는 시스템의 아키텍처

이 아키텍처의 Visio 파일을 다운로드합니다.

데이터 흐름

  1. 클라이언트는 Microsoft Entra ID를 사용하여 인증하고 Azure 앱 Service에서 호스트되는 웹 애플리케이션에 대한 액세스 권한을 부여합니다.
  2. 방화벽 및 계층 7 부하 분산 장치인 Azure Front Door는 지역 가동 중단이 있는 경우 사용자 트래픽을 대기 지역으로 전환합니다.
  3. Azure App Service는 웹 사이트 및 RESTful 웹 API를 호스트합니다. 브라우저 클라이언트는 API를 사용하는 AJAX 애플리케이션을 실행합니다.
  4. 웹 API가 백그라운드 작업을 처리하도록 함수 앱을 위임합니다. 이 작업은 Azure Queue Storage 큐에 대기됩니다.
  5. Azure Functions에서 호스트되는 함수 앱이 큐에 대기된 메시지로 트리거되는 백그라운드 작업을 수행합니다.
  6. Azure Cache for Redis는 함수 앱에 대한 테이블 데이터를 캐시합니다. 이렇게 하면 데이터베이스 활동이 오프로드되고 함수 앱 및 웹앱의 속도가 향상됩니다.
  7. Azure Table Storage는 웹 애플리케이션에서 사용한 데이터를 보유합니다.
  8. Table Storage는 데이터 센터 중단을 완화하기 위해 지역의 가용성 영역에서 데이터의 동기 복제를 지원합니다. 또한 비동기 복제를 사용하여 여러 Azure 지역에서 데이터를 복제하여 지역 중단을 해결하고 애플리케이션 가용성을 개선합니다.

구성 요소

  • Microsoft Entra ID 는 온-프레미스 디렉터리와 동기화할 수 있는 다중 테넌트 ID 및 액세스 관리 서비스입니다.
  • Azure DNS는 빠른 DNS 쿼리와 빠른 DNS 레코드 업데이트를 앱에 제공하는 DNS 도메인을 위한 고가용성 호스팅 서비스입니다. Azure DNS 관리는 다른 Azure 서비스 관리와 비슷하며 동일한 자격 증명, API, 도구 및 청구가 사용됩니다.
  • Azure Front Door는 즉각적인 장애 조치(failover)를 사용하는 보안 CDN(콘텐츠 배달 네트워크) 및 부하 분산 장치입니다. 사용자에게 가까운 에지에서 작동하며 사이버 위협으로부터 앱, API 및 웹 사이트를 보호하면서 콘텐츠 전송을 가속화합니다.
  • Azure App Service는 웹앱을 빌드, 배포 및 스케일링하기 위한 완전 관리형 서비스입니다. .NET, .NET Core, Node.js, Java, Python 또는 PHP를 사용하여 앱을 빌드할 수 있습니다. 앱은 컨테이너에서 실행하거나 Windows 또는 Linux에서 실행할 수 있습니다. 메인프레임 마이그레이션에서 프런트 엔드 화면 또는 웹 인터페이스를 HTTP 기반 REST API로 코딩할 수 있습니다. 분리될 수 있으며 마이크로 서비스 기반 시스템을 오케스트레이션하기 위해 상태 비저장일 수 있습니다. 웹 API에 대한 자세한 내용은 RESTful 웹 API 디자인을 참조하세요.
  • Azure Functions는 애플리케이션 인프라를 설정하지 않고도 함수라는 작은 코드 조각을 실행할 수 있는 환경을 제공합니다. 이를 사용하여 대량 데이터를 처리하고, 시스템을 통합하고, IoT를 사용하고, 간단한 API와 마이크로 서비스를 빌드할 수 있습니다. 마이크로 서비스를 사용하면 Azure 서비스에 연결되고 항상 최신 상태인 서버를 만들 수 있습니다.
  • Azure Storage는 대규모로 확장 가능하고 안전한 데이터, 앱 및 워크로드용 클라우드 서비스 세트입니다. 여기에는 Azure Files, Azure Table StorageAzure Queue Storage가 포함됩니다. Azure Files는 메인프레임 워크로드를 마이그레이션할 수 있는 효과적인 도구인 경우가 많습니다.
  • Azure Queue Storage는 대규모 워크로드를 위한 간단하고, 비용 효율적이고, 지속적인 메시지 큐 기능을 제공합니다.
  • Azure Table Storage는 대규모 반구조화된 데이터 세트를 사용하는 신속한 개발을 위한 NoSQL 키-값 저장소입니다. 테이블은 스키마가 없으며 필요에 따라 쉽게 조정됩니다. 액세스는 많은 유형의 애플리케이션에 대해 빠르고 비용 효율적이며 일반적으로 다른 유형의 키 스토리지보다 비용이 적게 듭니다.
  • Azure Cache for Redis는 컴퓨팅 리소스 간에 데이터와 상태를 공유하기 위한 완전 관리형 메모리 내 캐싱 서비스 및 메시지 broker입니다. 여기에는 오픈 소스 Redis 및 Redis Labs의 상업용 제품이 모두 관리되는 서비스로 포함되어 있습니다. Azure Cache for Redis 등의 메모리 내 데이터 저장소를 스케일링하고 사용하도록 디자인하여 처리량이 높은 온라인 트랜잭션 처리 애플리케이션의 성능을 향상할 수 있습니다.

대안

  • Azure Traffic Manager는 선택한 트래픽 라우팅 방법에 따라 전 세계 Azure 지역에서 들어오는 DNS 요청을 전달합니다. 또한 자동 장애 조치(failover) 및 성능 라우팅을 제공합니다.
  • Azure Content Delivery Network는 빠른 응답을 위해 정적 콘텐츠를 에지 서버에 캐시하고 네트워크 최적화를 사용하여 동적 콘텐츠에 대한 응답 속도를 높입니다. Content Delivery Network는 사용자 기반이 글로벌인 경우에 특히 유용합니다.
  • AKS(Azure Kubernetes Service)는 컨테이너화된 애플리케이션을 배포하고 관리하기 위한 완전 관리형 Kubernetes 서비스입니다. 또한 이를 사용해서 해당 구성 요소가 필요에 따라 독립적으로 스케일링되는 마이크로 서비스 아키텍처를 구현할 수 있습니다.
  • Azure Container Instances는 인프라를 관리할 필요 없이 빠르고 간단하게 작업을 실행할 수 있는 방법을 제공합니다. 개발 중이거나 예약되지 않은 작업을 수행할 때 유용합니다.
  • Azure Service Bus는 간단한 하이브리드 통합을 위한 신뢰할 수 있는 클라우드 메시징 서비스입니다. 이 아키텍처에서는 Queue Storage를 대신할 수 있습니다. 자세한 내용은 Storage 큐 및 Service Bus 큐 - 비교 및 대조를 참조하세요.

고려 사항

  • Table Storage에는 성능 제한이 있으며 스토리지 계정을 추가하여 극복할 수 있습니다. 다음 상황에서는 추가 계정이 필요할 수 있습니다.

    • 여러 고객을 지원하도록 다중 테넌트를 구현하려는 경우
    • 트랜잭션 속도가 더 높은 고객을 지원하려는 경우
    • 큰 데이터 세트가 있는 고객을 지원하려는 경우
    • 여러 스토리지 계정에 데이터를 분산하여 데이터 액세스 속도를 높이려는 경우
    • 데이터를 핫, 콜드 및 보관 계층으로 분리하려는 경우
    • 백업 및 보고 목적으로 데이터 복사본을 만들려는 경우

    자세한 내용은 Table Storage의 확장성 및 성능 목표를 참조하세요.

  • 일부 Azure 지역에서는 Table Storage 복제를 사용할 수 없습니다.

  • 보조 지역의 데이터에는 결과적 일관성이 있습니다. 즉, 주 지역에서 업데이트가 발생하는 시간과 보조 지역에서 업데이트가 표시되는 시간 사이에 지연이 있습니다. 주 지역에서 보조 지역으로의 복제는 비동기적이므로 주 지역이 실패하고 복구되지 않으면 데이터가 손실될 수 있습니다. 현재 보조 지역에 데이터를 복제하는 데 걸리는 시간에 대한 SLA(서비스 수준 계약)는 없습니다. 자세한 내용은 Azure Storage 중복성을 참조하세요.

참가자

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

보안 주체 작성자:

  • Nabil Siddiqui | 디지털 및 애플리케이션 혁신 클라우드 솔루션 설계자

다음 단계