다음을 통해 공유


Azure Cosmos DB for NoSQL에 대한 복원력 권장 사항

이 문서에는 Azure Cosmos DB for NoSQL의 복원력을 달성하기 위한 권장 사항이 포함되어 있습니다. 많은 권장 사항에는 비준수 리소스를 식별하는 데 도움이 되는 ARG(Azure Resource Graph) 쿼리 지원이 포함되어 있습니다.

복원력 권장 사항 영향 행렬

각 권장 사항은 다음 영향 행렬에 따라 표시됩니다.

이미지 영향 설명
높음 즉시 수정 필요.
중간 3-6개월 이내에 수정.
낮음 검토 필요.

복원력 권장 사항 요약

범주 우선 순위 권장
가용성 고가용성을 위해 두 개 이상의 지역 구성
재해 복구 단일 쓰기 지역이 있는 다중 지역 계정에 대한 서비스 관리 장애 조치(failover) 사용
다중 지역 쓰기 기능 평가
데이터 내구성 요구 사항을 반영하는 적절한 일관성 모드 선택
지속적인 백업 모드 구성
시스템 효율성 쿼리 결과가 완전히 유출되었는지 확인
클라이언트에서 싱글톤 패턴 유지
애플리케이션 복원력 클라이언트에서 재시도 논리 구현
Monitoring Cosmos DB 상태 모니터링 및 경고 설정

가용성

고가용성을 위해 두 개 이상의 지역 구성

더 높은 SLA를 달성하려면 Cosmos DB에서 보조 지역을 사용하도록 설정해야 합니다. 이렇게 하면 가동 중지 시간이 발생하지 않으며 맵에서 핀을 선택하는 것만큼 쉽습니다. 강력한 일관성을 활용하는 Cosmos DB 인스턴스는 하나의 지역에 오류가 있는 경우 쓰기 가용성을 보존하려면 3개 이상의 지역을 구성해야 합니다.

잠재적 이점: SLA 및 복원력을 향상합니다.

자세히 알아보기:Cosmos DB for No SQL의 안정성(고가용성)

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
     array_length(properties.locations) < 2 or
    (array_length(properties.locations) < 3 and properties.consistencyPolicy.defaultConsistencyLevel == 'Strong')
| project recommendationId='cosmos-1', name, id, tags

재해 복구

단일 쓰기 지역이 있는 다중 지역 계정에 대한 서비스 관리 장애 조치(failover) 사용

Cosmos DB는 높은 작동 시간과 복원력을 자랑합니다. 그럼에도 불구하고 문제가 발생할 수 있습니다. 서비스 관리 장애 조치(failover)를 사용하면 지역이 다운되면 Cosmos DB는 자동으로 사용 가능한 다음 지역으로 전환하므로 사용자 작업이 필요하지 않습니다.

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    array_length(properties.locations) > 1 and
    tobool(properties.enableAutomaticFailover) == false and
    tobool(properties.enableMultipleWriteLocations) == false
| project recommendationId='cosmos-2', name, id, tags

다중 지역 쓰기 기능 평가

다중 지역 쓰기 기능을 사용하면 일관성 요구 사항 및 충돌 해결에 세심한 주의가 필요하지만 여러 지역에서 가용성이 높은 애플리케이션을 설계할 수 있습니다. 잘못 설정하면 가용성이 감소하고 처리되지 않은 충돌로 인해 데이터가 손상될 수 있습니다.

잠재적 이점: 고가용성을 향상시킵니다.

자세한 정보:

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    array_length(properties.locations) > 1 and
    properties.enableMultipleWriteLocations == false
| project recommendationId='cosmos-3', name, id, tags

데이터 내구성 요구 사항을 반영하여 적절한 일관성 모드 선택

전 세계적으로 분산 데이터베이스에서 일관성 수준은 지역 중단 시 데이터 내구성에 영향을 미칩니다. 복구 계획에 대한 데이터 손실 허용 범위를 이해합니다. 더 강력한 것이 필요하지 않은 한 세션 일관성을 사용하여 더 높은 쓰기 대기 시간과 읽기 전용 중단으로 인한 잠재적인 쓰기 지역 영향을 허용합니다.

잠재적 이점: 데이터 내구성 및 복구가 향상됩니다.

자세히 알아보기:Azure Cosmos DB의 일관성 수준

지속적인 백업 모드 구성

Cosmos DB의 백업은 항상 켜져 있어 데이터 사고로부터 보호합니다. 연속 모드에서는 Microsoft 지원에 문의해야 하므로 복원 시간이 길어지는 정기 모드와 달리 사고 전 지점으로 셀프 서비스 복원이 가능합니다.

잠재적 이점: 더 빠른 셀프 서비스 데이터 복원을 수행합니다.

자세히 알아보기:Azure Cosmos DB의 특정 시점 복원 기능을 사용한 지속적인 백업

Resources
| where type =~ 'Microsoft.DocumentDb/databaseAccounts'
| where
    properties.backupPolicy.type == 'Periodic' and
    properties.enableMultipleWriteLocations == false and
    properties.enableAnalyticalStorage == false
| project recommendationId='cosmos-5', name, id, tags

시스템 효율성

쿼리 결과가 완전히 추출되었는지 확인합니다.

Cosmos DB에는 4MB 응답 제한이 있으므로 대규모 또는 파티션에 걸친 쿼리에 대해 페이지를 매긴 결과로 이어집니다. 각 페이지에는 가용성이 표시되고 다음 페이지에 대한 연속 토큰이 제공됩니다. 완료될 때까지 모든 페이지를 트래버스하려면 코드의 while 루프가 필요합니다.

잠재적 이점: 데이터 검색 효율성을 최대화합니다.

자세히 알아보기:SQL이 없는 Azure Cosmos DB의 페이지 매김

클라이언트에서 싱글톤 패턴 유지

연결이 클라이언트에 연결되어 있으므로 각 계정 및 애플리케이션에 대해 SDK 클라이언트의 단일 인스턴스를 사용해야 합니다. 컴퓨팅 환경에는 열린 연결에 대한 제한이 있으며 이를 초과하면 연결에 영향을 미칩니다.

잠재적 이점: 연결 및 효율성을 최적화합니다.

자세히 알아보기:Azure Cosmos DB SDK를 사용하여 복원력이 뛰어난 애플리케이션 디자인.

애플리케이션 복원력

클라이언트에서 재시도 논리 구현

Cosmos DB SDK는 다시 시도를 통해 많은 일시적 오류를 자동으로 관리합니다. 그럼에도 불구하고 애플리케이션에서는 SDK가 일반적으로 해결할 수 없는 특정 사례를 대상으로 추가 다시 시도 정책을 구현하여 보다 강력한 오류 처리를 보장해야 합니다.

잠재적 이점: 오류 처리 복원력을 향상합니다.

자세히 알아보기:Azure Cosmos DB SDK를 사용하여 복원력이 뛰어난 애플리케이션 디자인.

모니터링

Cosmos DB 상태 모니터링 및 경고 설정

Azure Cosmos DB 리소스의 가용성과 응답성을 모니터링하고 워크로드에 대해 경고를 설정하는 것이 좋습니다. 이를 통해 예기치 못한 사건을 활성적으로 처리할 수 있습니다.

잠재적 이점: 사전 문제를 관리합니다.

자세히 알아보기:Azure Monitor를 사용하여 Azure Cosmos DB에 대한 경고 만들기