적용 대상:  NoSQL
다중 지역 쓰기 시나리오에서는 애플리케이션 인스턴스와 가까운 지역에만 쓰기를 통해 성능 이점을 얻을 수 있습니다. Azure Cosmos DB는 백그라운드에서 복제를 처리합니다.
여러 쓰기 지역에 계정을 사용하도록 설정한 후에는 ConnectionPolicy에 대한 애플리케이션에서 두 가지를 변경해야 합니다. ConnectionPolicy 내에서 UseMultipleWriteLocations를 true로 설정하고 애플리케이션이 배포된 지역 이름을 ApplicationRegion에 전달합니다. 이 작업은 전달된 위치에서 지역 근접도에 따라 PreferredLocations 속성을 채웁니다. 나중에 새 지역이 계정에 추가되는 경우 애플리케이션을 업데이트하거나 다시 배포할 필요가 없습니다. 지역 이벤트가 발생할 경우 더 가까운 지역을 자동으로 감지하고 해당 위치로 자동으로 복귀합니다.
참고
처음에 단일 쓰기 지역으로 구성된 Azure Cosmos DB 계정은 가동 중지 시간이 0인 여러 쓰기 지역으로 구성할 수 있습니다. 자세한 내용은 여러 쓰기 지역 구성을 참조하세요.
Azure Portal
다중 지역 쓰기를 사용하려면 Azure Portal에서 여러 지역에 대해 Azure Cosmos DB 계정을 사용하도록 설정합니다. 애플리케이션에서 쓸 수 있는 지역을 지정합니다.
- Azure Portal에 로그인합니다. 
- Azure Cosmos DB 계정으로 이동합니다. 메뉴에서 전역적으로 데이터 복제 창을 엽니다. 
- 다중 지역 쓰기 옵션에서 사용을 선택합니다. 기존 영역을 읽기 및 쓰기 영역에 자동으로 추가합니다. 
- 지도에서 아이콘을 선택하거나 지역 추가 단추를 선택하여 지역을 더 추가할 수 있습니다. 추가하는 모든 지역은 읽기 및 쓰기가 모두 가능하도록 설정됩니다. 
- 지역 목록을 업데이트한 후 저장을 선택하여 변경 내용을 적용합니다. 
.NET SDK v2
애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 UseMultipleWriteLocations를 true로 설정합니다. 또한 SetCurrentLocation을 애플리케이션이 배포되고 Azure Cosmos DB가 복제되는 지역으로 설정합니다.
ConnectionPolicy policy = new ConnectionPolicy
    {
        ConnectionMode = ConnectionMode.Direct,
        ConnectionProtocol = Protocol.Tcp,
        UseMultipleWriteLocations = true
    };
policy.SetCurrentLocation("West US 2");
.NET SDK v3
애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 ApplicationRegion을 애플리케이션이 배포되고 Azure Cosmos DB가 복제되는 지역으로 설정합니다.
CosmosClient cosmosClient = new CosmosClient(
    "<connection-string-from-portal>", 
    new CosmosClientOptions()
    {
        ApplicationRegion = Regions.WestUS2,
    });
필요에 따라 CosmosClientBuilder 및 WithApplicationRegion을 사용하여 동일한 결과를 얻을 수 있습니다.
CosmosClientBuilder cosmosClientBuilder = new CosmosClientBuilder("<connection-string-from-portal>")
            .WithApplicationRegion(Regions.WestUS2);
CosmosClient client = cosmosClientBuilder.Build();
Java V4 SDK
애플리케이션에서 다중 지역 쓰기를 활성화하려면, 클라이언트 빌더 내에서 .multipleWriteRegionsEnabled(true) 및 .preferredRegions(preferredRegions)을 호출하십시오. 여기서 preferredRegions는 데이터가 우선 순위에 따라 복제되는 지역의 목록인 List 입니다. 가장 짧은 거리 또는 대기 시간이 가장 긴 지역이 먼저 나열되는 것이 가장 좋습니다.
Java SDK V4(Maven com.azure::azure-cosmos) 비동기 API:
ArrayList<String> preferredRegions = new ArrayList<String>();
preferredRegions.add(region);
CosmosAsyncClient client =
        new CosmosClientBuilder()
                .endpoint(HOST)
                .key(MASTER_KEY)
                .multipleWriteRegionsEnabled(true)
                .preferredRegions(preferredRegions)
                .buildAsyncClient();
비동기 Java V2 소프트웨어 개발 키트 (SDK)
Java V2 SDK는 Maven com.microsoft.azure::azure-cosmosdb를 사용합니다. 애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면, policy.setUsingMultipleWriteLocations(true)을(를) 설정하고 policy.setPreferredLocations에는 데이터가 복제될 지역들의 원하는 순서가 지정된 List을(를) 설정합니다. 가장 짧은 거리 또는 대기 시간이 가장 긴 지역이 먼저 나열되는 것이 가장 좋습니다.
ConnectionPolicy policy = new ConnectionPolicy();
policy.setUsingMultipleWriteLocations(true);
policy.setPreferredLocations(Collections.singletonList(region));
AsyncDocumentClient client =
    new AsyncDocumentClient.Builder()
        .withMasterKeyOrResourceToken(this.accountKey)
        .withServiceEndpoint(this.accountEndpoint)
        .withConsistencyLevel(ConsistencyLevel.Eventual)
        .withConnectionPolicy(policy).build();
Node.js, JavaScript 및 TypeScript SDK
애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 connectionPolicy.UseMultipleWriteLocations를 true로 설정합니다. 또한 기본 설정에 따라 데이터가 순서대로 복제되는 지역으로 설정합니다 connectionPolicy.PreferredLocations . 가장 짧은 거리 또는 대기 시간이 가장 긴 지역이 먼저 나열되는 것이 가장 좋습니다.
const connectionPolicy: ConnectionPolicy = new ConnectionPolicy();
connectionPolicy.UseMultipleWriteLocations = true;
connectionPolicy.PreferredLocations = [region];
const client = new CosmosClient({
  endpoint: config.endpoint,
  auth: { masterKey: config.key },
  connectionPolicy,
  consistencyLevel: ConsistencyLevel.Eventual
});
Python SDK
애플리케이션에서 다중 지역 쓰기를 사용하도록 설정하려면 connection_policy.UseMultipleWriteLocations를 true로 설정합니다. 또한 기본 설정에 따라 데이터가 순서대로 복제되는 지역으로 설정합니다 connection_policy.PreferredLocations . 가장 짧은 거리 또는 대기 시간이 가장 긴 지역이 먼저 나열되는 것이 가장 좋습니다.
connection_policy = documents.ConnectionPolicy()
connection_policy.UseMultipleWriteLocations = True
connection_policy.PreferredLocations = [region]
client = cosmos_client.CosmosClient(self.account_endpoint, {
                                    'masterKey': self.account_key}, connection_policy, documents.ConsistencyLevel.Session)
Go 소프트웨어 개발 키트 (SDK)
애플리케이션에서 다중 지역을 사용하도록 설정하려면 PreferredRegions에서 사용합니다.
client, err := azcosmos.NewClient(endpoint, token, &azcosmos.ClientOptions{
	PreferredRegions: []string{"West US", "Central US"},
})
