JavaScript 또는 TypeScript를 사용하여 재시도 정책 구현
클라우드에서 실행되거나 원격 서비스 및 리소스와 통신하는 모든 애플리케이션은 일시적인 오류를 처리할 수 있어야 합니다. 이러한 애플리케이션에서는 네트워크 연결의 순간적인 손실, 서비스 또는 리소스가 사용 중일 때의 요청 시간 제한 또는 기타 요인으로 인해 오류가 발생하는 것이 일반적입니다. 개발자는 안정성과 복원력을 향상시키기 위해 일시적인 오류를 투명하게 처리하는 애플리케이션을 빌드해야 합니다.
이 문서에서는 JavaScript용 Azure Storage 클라이언트 라이브러리를 사용하여 Azure Blob Storage에 연결하는 애플리케이션에 대한 재시도 정책을 구성하는 방법을 알아봅니다. 다시 시도 정책은 애플리케이션이 실패한 요청을 처리하는 방법을 정의하며, 항상 애플리케이션의 비즈니스 요구 사항 및 오류의 특성에 맞게 조정해야 합니다.
다시 시도 옵션 구성
Blob Storage에 대한 다시 시도 정책은 프로그래밍 방식으로 구성되어 다양한 서비스 요청 및 시나리오에 다시 시도 옵션이 적용되는 방식을 제어할 수 있습니다. 예를 들어 사용자 상호 작용을 기준으로 요청을 실행하는 웹앱은 다시 시도 횟수가 적고 지연이 짧은 정책을 구현하여 응답성을 높이고 오류가 발생할 때 사용자에게 알릴 수 있습니다. 또는 백그라운드에서 일괄 처리 요청을 실행하는 앱 또는 구성 요소는 다시 시도 횟수를 늘리고 지수 백오프 전략을 사용하여 요청 시간이 성공적으로 완료되도록 할 수 있습니다.
다음 표에는 StorageRetryOptions 인스턴스를 만들 때 사용할 수 있는 매개 변수와 유형, 간단한 설명 및 변경하지 않을 경우의 기본값이 나열되어 있습니다. 앱의 요구 사항을 충족하기 위해 이러한 속성 값을 사전에 조정해야 합니다.
속성 | Type | 설명 | 기본값 |
---|---|---|---|
maxRetryDelayInMs |
number |
선택 사항. 작업을 다시 시도하기 전에 허용되는 최대 지연 시간을 지정합니다. | 120초(또는 120 * 1000ms) |
maxTries |
number |
선택 사항. 포기하기 전 최대 재시도 횟수입니다. | 4 |
retryDelayInMs |
number |
선택 사항. 작업을 다시 시도하기 전에 사용할 지연 시간을 지정합니다. | 4초(또는 4 * 1000ms) |
retryPolicyType |
StorageRetryPolicyType | 선택 사항. StorageRetryPolicyType, 기본값은 지수 재시도 정책입니다. | StorageRetryPolicyType.Exponential |
secondaryHost |
string |
선택 사항. 요청을 다시 시도할 보조 스토리지 계정 엔드포인트. 이 값을 설정하기 전에 부실하고 잠재적으로 일관되지 않은 데이터 읽기와 관련된 문제를 이해해야 합니다. 자세한 내용은 지역 중복을 사용하여 고가용성 애플리케이션 설계를 참조하세요. | None |
tryTimeoutInMs |
number |
선택 사항. 요청이 취소되고 실패한 것으로 간주되기 전에 허용되는 최대 시간입니다. 이 시간 제한은 작업 요청에 적용되며 호스트 컴퓨터에서 사용 가능한 대역폭과 Storage 서비스에 대한 근접성을 기반으로 해야 합니다. | 값이 0이거나 정의되지 않으면 클라이언트에서 기본 시간 제한이 발생하지 않으며 서버측 기본 시간 제한이 사용됩니다. 자세한 내용은 Blob Service 작업에 대한 시간 제한을 참조하세요. |
다음 코드 예제에서는 StorageRetryOptions 인스턴스에서 다시 시도 옵션을 구성하고, 이를 새 StoragePipelineOptions 인스턴스에 전달하고, BlobServiceClient
인스턴스화할 때pipeline
전달합니다.
const options = {
retryOptions: {
maxTries: 4,
retryDelayInMs: 3 * 1000,
maxRetryDelayInMs: 120 * 1000,
retryPolicyType: StorageRetryPolicyType.EXPONENTIAL
},
};
const pipeline = newPipeline(credential, options);
const blobServiceClient = new BlobServiceClient(
`https://${accountName}.blob.core.windows.net`,
credential,
pipeline
);
이 예제에서 BlobServiceClient
개체에서 발행된 각 서비스 요청은 retryOptions
에 정의된 대로 다시 시도 옵션을 사용합니다. 이 정책은 클라이언트 요청에 적용됩니다. 앱의 요구 사항에 따라 서비스 클라이언트에 대한 다양한 다시 시도 전략을 구성할 수 있습니다.
관련 콘텐츠
- 다시 시도 정책에 대한 아키텍처 지침 및 일반적인 모범 사례는 일시적인 오류 처리를 참조하세요.
- 일시적인 오류에 대한 다시 시도 패턴을 구현하는 방법에 대한 지침은 다시 시도 패턴을 참조하세요.