Blob 스냅샷이 요금을 계산하는 방법 이해
Blob의 읽기 전용 복사본인 스냅샷을 만들면 계정에 데이터 스토리지 요금이 추가로 부과될 수 있습니다. 응용 프로그램을 디자인할 때 불필요한 비용의 발생을 최소화할 수 있도록 이러한 비용 청구 과정에 대해 잘 알고 있어야 합니다.
주요 청구 고려 사항:
아래 목록에는 스냅샷을 만들 때 고려할 주요 사항이 나와 있습니다.
Blob 또는 스냅숏 등, 그 저장 위치에 관계 없이 개별 블록 또는 페이지에 대해 비용이 청구됩니다. 스냅샷의 기준이 되는 Blob을 업데이트할 때까지는 해당 Blob와 연결된 스냅샷에 대해 계정에 추가 요금이 부과되지 않습니다. 기본 Blob를 업데이트하면 그 스냅숏과 내용이 달라지고 각 Blob 또는 스냅숏의 고유 블록이나 페이지에 대해 비용이 청구됩니다.
블록 Blob 내의 블록을 바꾸고 나면 해당 블록은 이후부터 고유 블록으로 요금이 청구됩니다. 블록의 ID와 데이터가 스냅샷에서와 같더라도 마찬가지입니다. 블록을 다시 커밋하면 해당 스냅숏과 다른 블록으로 간주되어 데이터에 대해 비용이 청구됩니다. 같은 데이터로 업데이트하는 페이지 Blob 내 페이지의 경우에도 마찬가지입니다.
UploadFile, UploadText, UploadStream 또는 UploadByteArray 메서드를 호출하여 블록 Blob을 바꾸면 해당 Blob의 모든 블록이 대체됩니다. 이 Blob와 연결된 스냅숏이 있을 경우 이제 기본 Blob와 스냅숏의 모든 블록이 서로 다른 것으로 간주되어 각각의 모든 블록에 대해 비용이 청구됩니다. 이는 기본 Blob와 스냅샷의 데이터가 동일하게 유지되더라도 마찬가지입니다.
Azure Blob service에서는 두 블록이 같은 데이터를 포함하는지를 확인할 수 없습니다. 업로드/커밋되는 각 블록은 데이터와 블록 ID가 같더라도 고유한 블록으로 처리됩니다. 고유한 모든 블록에 대해서는 비용이 청구되므로 스냅숏이 있는 Blob를 업데이트하면 결과적으로 고유 블록이 증가하게 되어 추가 비용이 발생합니다.
중요
모범 사례에 따르면 추가 비용을 방지하기 위해 스냅샷을 철저하게 관리해야 합니다. 다음과 같은 방식으로 스냅숏을 관리하는 것이 좋습니다.
- 애플리케이션 디자인상 스냅샷을 유지해야 하는 경우가 아니면, Blob을 업데이트할 때마다 같은 데이터로 업데이트하더라도 해당 Blob에 연결된 스냅샷을 삭제한 후에 다시 만듭니다. Blob의 스냅샷을 삭제한 후에 다시 만들면 Blob와 스냅샷이 달라지지 않습니다.
- Blob에 대한 스냅샷을 유지 관리하는 경우 Blob의 모든 블록을 대체하므로 UploadFile, UploadText, UploadStream 또는 UploadByteArray 를 호출하여 Blob을 업데이트하지 마십시오. 대신 PutBlock 및 PutBlockList 메서드를 사용하여 가능한 최소 블록 수만 업데이트합니다.
스냅숏 청구 시나리오
다음 시나리오에서는 블록 Blob와 해당 스냅샷에 대해 비용이 청구되는 방법을 보여 줍니다. 시나리오 1에서 스냅숏을 만든 후 기본 Blob가 업데이트되지 않으므로 고유 블록 1, 2 및 3에 대해서만 비용이 청구됩니다.
시나리오 1: 1, 2 및 3 누적 요금만 차단합니다.
시나리오 2에서는 기본 Blob만 업데이트되고 스냅숏은 업데이트되지 않습니다. 블록 3이 업데이트되고 동일한 데이터와 동일한 ID를 가지고 있지만 스냅샷의 블록 3과 같지는 않습니다. 그 결과 계정에 다음 4개의 블록에 대한 비용이 청구됩니다.
시나리오 2: 기본 Blob에서 1, 2 및 3을 차단하고 스냅샷 블록 3과 함께 요금이 발생합니다.
시나리오 3에서는 기본 Blob이 업데이트되었지만 스냅샷 업데이트되지 않았습니다. 기본 Blob에서 블록 3이 블록 4로 바뀌었지만 스냅샷은 계속 블록 3을 반영합니다. 그 결과 계정에 다음 4개의 블록에 대한 비용이 청구됩니다.
시나리오 3: 1, 2, 3 및 4 누적 요금을 차단합니다.
시나리오 4에서는 기본 Blob가 완전히 업데이트되어 원래 블록과 모두 달라졌습니다. 따라서 8개 고유 블록 모두에 대한 요금이 계정에 청구됩니다. UploadFile, UploadText, UploadFromStream, UploadByteArray 등의 업데이트 메서드를 사용하는 경우가 이러한 시나리오에 해당합니다. 이러한 메서드는 Blob의 모든 콘텐츠를 바꾸기 때문입니다.
시나리오 4: 1, 2, 3, 4, 5, 6, 7 및 8 누적 요금을 차단합니다.