지리적으로 분산된 데이터 아키텍처 디자인

완료됨

고려해야 할 애플리케이션 아키텍처 디자인의 마지막 부분은 데이터 스토리지 계층입니다. 지역 전체 장애 후 모든 기능을 사용하여 데이터를 읽고 쓸 수 있도록 보장하려고 합니다.

배송 추적 포털에서 Azure Front Door를 사용하여 미국 동부 지역에 있는 App Services에 모든 요청을 전송하도록 선택했습니다. 미국 동부 지역이 실패할 경우 Front Door는 장애를 감지하고 미국 서부 지역에서 App Services 구성 요소를 복제하도록 요청을 보냅니다. 원래 단일 지역 아키텍처에서는 Azure SQL Database 및 반구조적 Cosmos DB에 관계형 데이터를 저장했습니다. 이제 미국 동부 지역이 실패할 경우 두 데이터베이스를 모두 계속 사용할 수 있도록 보장하는 방법을 살펴보겠습니다.

여기서는 지역 간에 데이터를 복제하는 방법과 필요한 경우 장애 조치가 신속하게 수행되도록 보장하는 방법에 대해 알아봅니다.

A diagram showing multi-region architecture databases.

Azure SQL Database

관계형 데이터를 저장할 Azure SQL Database의 다중 지역 구현을 만들려면 다음 중 하나를 사용할 수 있습니다.

  • 활성 지리적 복제
  • 자동 장애 조치 그룹

활성 지역 복제

Azure SQL Database는 활성 지역 복제 기능을 사용하여 데이터베이스 간에 자동으로 데이터베이스 및 모든 변경 내용을 복제할 수 있습니다. 주 논리 서버만 데이터베이스의 쓰기 가능한 복사본을 호스트합니다. 데이터베이스의 읽기 전용 복사본을 호스트하는 최대 4개의 다른 논리 서버를 만들 수 있습니다.

배송 추적 포털의 경우 미국 서부 지역에 보조 데이터베이스를 만들고 미국 동부 지역에서 지역 복제를 구성합니다. 지역 장애가 발생하면 Front Door가 사용자 요청을 미국 서부 지역의 App Services로 리디렉션합니다. 복사본이 이미 미국 서부 지역에 복제되었으므로 App Services 및 Azure Functions가 관계형 데이터에 액세스할 수 있습니다.

이 변경은 자동으로 수행되지만, 미국 서부의 보조 데이터베이스는 읽기 전용입니다. 예를 들어 사용자가 새 배송을 만들어 데이터를 수정하려고 하면 오류가 발생할 수 있습니다. Azure Portal에서 문제를 확인하는 즉시 미국 서부에 대한 장애 조치를 수동으로 시작할 수 있습니다. 이 프로세스를 자동화하려는 경우 개발자는 Azure SQL Database REST API에서 failover 메서드를 호출하는 코드를 작성할 수 있습니다.

참고

Azure SQL Database의 관리되는 인스턴스는 활성 지역 복제를 지원하지 않습니다. 관리되는 인스턴스는 보안을 유지하면서 온-프레미스 SQL Server에서 데이터를 간단하게 마이그레이션할 수 있도록 디자인되었습니다. 관리되는 인스턴스를 사용하는 경우 장애 조치 그룹을 대신 사용하는 것이 좋습니다.

자동 장애 조치 그룹

자동 장애 조치 그룹은 주 서버에서 하나 이상의 보조 서버로 데이터가 자동으로 복제되는 데이터베이스 그룹입니다. 이 디자인은 활성 지역 복제와 비슷하며 동일한 데이터 복제 방법을 사용합니다. 그러나 정책을 정의하여 장애에 대한 대응을 자동화할 수 있습니다.

배송 포털의 경우 미국 서부 지역에 보조 데이터베이스를 만듭니다. 그런 다음, 미국 동부 지역에서 치명적인 오류가 발생하는 경우 데이터베이스의 주 복제본을 미국 서부로 장애 조치하는 정책을 추가합니다. 이 경우 미국 서부 복제본이 자동으로 쓰기 가능한 주 데이터베이스가 되고 전체 기능이 유지됩니다.

트리거하는 사용자 지정 코드를 작성하지 않고 쓰기 가능한 데이터베이스의 장애 조치를 자동화하려면 자동 장애 조치 그룹을 사용하는 것이 좋습니다. 또한 데이터베이스가 Azure SQL Database의 관리되는 인스턴스에서 실행되는 경우 자동 장애 조치 그룹을 사용합니다.

중요

활성 지역 복제 및 자동 장애 조치 그룹은 비동기 복제를 기반으로 합니다. 변경 내용이 주 복제본에 적용되면 승인이 클라이언트에 전송됩니다. 이때 트랜잭션이 완료된 것으로 간주되며 복제가 수행됩니다. 오류가 발생하는 경우 주 데이터베이스에서 수행된 최신 변경 내용이 보조 데이터베이스에 복제되지 않을 수 있습니다. 재해가 발생한 후 가장 최근 데이터베이스 변경 내용이 손실되었을 수 있다는 점에 유의하세요.

Azure Cosmos DB

Azure Cosmos DB는 다중 지역 클라우드 데이터베이스 시스템으로 설계되었기 때문에 구성이 덜 복잡합니다. Cosmos DB는 관계형 데이터, 반구조적 데이터 및 기타 형식의 데이터를 저장할 수 있는 다중 모델 데이터베이스입니다. 단일 지역에서 Cosmos DB를 실행하는 경우에도 최상의 가용성을 위해 데이터는 여러 장애 도메인에 걸쳐 여러 인스턴스에 복제됩니다.

Cosmos DB 계정 다중 지역을 만들 때 다음 모드 중에서 선택할 수 있습니다.

  • 여러 쓰기 지역이 포함된 다중 지역 계정.

    이 모드에서 데이터베이스의 모든 복사본은 항상 쓰기 가능합니다. 한 지역이 실패하는 경우에는 장애 조치가 필요하지 않습니다.

  • 단일 쓰기 지역이 포함된 다중 지역 계정.

    이 모드에서는 주 지역에만 쓰기 가능 데이터베이스가 포함됩니다. 보조 지역에 복제되는 데이터는 읽기 전용입니다. 주 지역이 실패하는 경우 기본적으로 업데이트를 사용할 수 없습니다. 그러나 자동 장애 조치 사용을 선택하면 Cosmos DB가 데이터베이스의 주 쓰기 가능 복사본을 다른 지역으로 자동으로 장애 조치합니다.

중요

Cosmos DB에서 데이터 복제는 동기적입니다. 변경이 적용되면 트랜잭션은 복제본의 쿼럼에 복제될 때까지 완료된 것으로 간주되지 않습니다. 그런 다음, 승인이 클라이언트에 전송됩니다. 복제가 이미 수행되었으므로 오류가 발생해도 최근 변경 내용이 손실되지 않습니다.

지식 점검

1.

배송 추적 애플리케이션에서 지역 중단이 발생하는 경우 SQL 데이터베이스에 대해 쓰기 권한을 자동으로 장애 조치하려고 합니다. 사용자 지정 코드를 작성하지 않으려고 합니다. 어떻게 해야 하나요?

2.

지역 중단 시 완료된 트랜잭션이 손실되지 않도록 보장하려고 합니다. 어떻게 해야 하나요?