최소 스토리지 – 데이터 복제를 위한 변경 피드

Azure Front Door
Azure App Service
Azure 기능
Azure Cosmos DB
Azure Table Storage

이 문서에서는 특정 기간 동안 사용할 수 있어야 하는 대량의 데이터를 사용하는 웹 애플리케이션에 대한 고가용성 솔루션을 제공합니다. Azure Cosmos DB에 데이터를 저장하고 Azure Cosmos DB 변경 피드를 사용하여 데이터를 보조 스토리지에 복제합니다. 지정된 기간이 경과하면 Azure Functions를 사용하여 Azure Cosmos DB에서 데이터를 삭제합니다.

아키텍처

비용을 줄이기 위해 두 가지 유형의 스토리지를 사용하는 복원력 있는 시스템의 아키텍처.

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

데이터 흐름

  1. 클라이언트는 Microsoft Entra ID를 사용하여 인증하고 Azure 앱 Service에서 호스트되는 웹 애플리케이션에 대한 액세스 권한을 부여합니다.
  2. 방화벽 및 계층 7 부하 분산 장치인 Azure Front Door는 지역 가동 중단이 있는 경우 사용자 트래픽을 대기 지역으로 전환합니다.
  3. App Service는 웹 사이트 및 RESTful 웹 API를 호스트합니다. 브라우저 클라이언트는 API를 사용하는 AJAX 애플리케이션을 실행합니다.
  4. Web API는 백그라운드 작업을 처리하기 위해 Functions에서 호스트하는 코드에 책임을 위임합니다. 이 작업은 Azure Queue Storage 큐에 대기됩니다.
  5. 큐에 대기된 메시지는 백그라운드 작업을 수행하는 함수를 트리거합니다.
  6. Azure Cache for Redis는 함수에 대한 데이터베이스 데이터를 캐시합니다. 캐시를 사용하여 솔루션이 데이터베이스 작업을 오프로드하고 함수 앱 및 웹앱의 속도를 높입니다.
  7. Azure Cosmos DB는 최근에 생성된 데이터를 보유합니다.
  8. Azure Cosmos DB는 변경 내용을 복제하는 데 사용할 수 있는 변경 피드를 발급합니다.
  9. 함수 앱은 변경 피드를 읽고 변경 내용을 Azure Table Storage 테이블에 복제합니다. 다른 함수 앱은 Azure Cosmos DB에서 만료된 데이터를 주기적으로 제거합니다.
  10. Table Storage는 저렴한 스토리지를 제공합니다.

구성 요소

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

대안

  • 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 큐 - 비교 및 대조를 참조하세요.

시나리오 정보

이 솔루션은 Azure Cosmos DB를 사용하여 웹 애플리케이션에서 사용하는 대량의 데이터를 저장합니다. 대량의 데이터를 처리하는 웹앱은 Azure Cosmos DB가 처리량 및 스토리지를 탄력적이고 독립적으로 스케일링할 수 있다는 이점을 제공합니다.

또 다른 주요 솔루션 구성 요소는 Azure Cosmos DB 변경 피드입니다. 데이터베이스를 변경하면 변경 피드 스트림이 이벤트 기반 Functions 트리거로 전송됩니다. 그런 다음, 함수는 저렴한 스토리지 솔루션을 제공하는 Table Storage 테이블에 변경 내용을 실행하고 복제합니다.

웹앱에는 제한된 시간 동안만 데이터가 필요합니다. 이 솔루션은 이러한 사실을 활용하여 비용을 더욱 절감합니다. 특히 다른 함수는 Azure Cosmos DB에서 만료된 데이터를 주기적으로 실행하고 삭제합니다. 트리거되는 것 외에도 함수는 설정된 시간에 실행되도록 예약할 수도 있습니다.

잠재적인 사용 사례

아키텍처는 다음과 같은 모든 애플리케이션에 적합합니다.

  • 대량의 데이터를 사용합니다.
  • 필요할 때 데이터를 항상 사용할 수 있어야 합니다.
  • 만료되는 데이터를 사용합니다.

예를 들어 다음과 같은 앱이 여기에 포함됩니다.

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

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

  • 이 솔루션을 구현하고 유지 관리하면 추가 비용이 발생합니다.
  • 복제에 변경 피드를 사용하면 핵심 애플리케이션에서 복제를 수행하는 것보다 코드 유지 관리가 덜 필요합니다.
  • 기존 데이터를 마이그레이션해야 합니다. 마이그레이션 프로세스에는 이전 데이터를 스토리지 계정에 복사하는 임시 스크립트 또는 루틴이 필요합니다. 데이터를 마이그레이션할 때 타임스탬프를 사용하고 플래그를 복사하여 마이그레이션 진행률을 추적해야 합니다.
  • Azure Table 보조 스토리지에서 항목을 삭제하지 않도록 하려면 함수가 Azure Cosmos DB에서 항목을 삭제할 때 생성되는 삭제 피드를 무시합니다.

참가자

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

보안 주체 작성자:

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

다음 단계