GN⁺: Amazon S3, Put-If-Match(Compare-and-Swap) 기능 추가
(aws.amazon.com)-
Amazon S3의 새로운 기능: 조건부 쓰기
-
Amazon S3는 이제 객체가 수정되지 않았는지 평가한 후 업데이트하는 조건부 쓰기를 수행할 수 있음. 이는 동일한 객체에 대한 동시 쓰기를 조정하고 여러 동시 작성자가 객체의 내용을 모르는 상태에서 의도치 않게 덮어쓰는 것을 방지하는 데 도움을 줌.
-
이 기능은 S3 일반 목적 및 디렉토리 버킷 모두에서 S3 PutObject 또는 CompleteMultipartUpload API 요청을 통해 객체의 ETag를 제공하여 사용할 수 있음.
-
조건부 쓰기는 여러 클라이언트가 공유 데이터 세트를 동시에 업데이트하는 분산 애플리케이션의 방식을 단순화함. HTTP if-none-match 조건부 헤더를 사용하여 객체가 생성되기 전에 존재하는지 확인하는 것과 유사하게, 클라이언트는 이제 API 요청에서 HTTP if-match 헤더를 통해 객체의 ETag를 지정하여 조건부 쓰기 검사를 수행할 수 있음.
-
S3는 객체의 ETag가 API 요청에서 제공된 값과 일치하는지 평가한 후 쓰기를 커밋하며, 조건이 충족될 때까지 클라이언트가 객체를 덮어쓰지 않도록 방지함.
-
이 새로운 조건부 헤더는 대규모 분석, 분산 머신 러닝 및 기타 고도로 병렬화된 작업의 효율성을 개선하는 데 도움을 줄 수 있음.
-
이 새로운 조건부 쓰기 기능은 모든 AWS 지역에서 추가 비용 없이 제공됨. AWS SDK, API 또는 CLI를 사용하여 조건부 쓰기를 수행할 수 있음. 조건부 쓰기에 대한 자세한 내용은 S3 사용자 가이드를 참조할 수 있음.
-
Hacker News 의견
-
Amazon S3에서 조건부 쓰기 작업을 강제할 수 있는 기능이 추가되었음
- S3에서 객체의 이름이 해시와 일치하도록 강제하는 기능을 원했음
- 이는 콘텐츠 주소 지정 가능한 저장소를 구축하는 데 도움이 됨
-
Turbopuffer.com은 객체 저장소 외의 의존성을 피하기 위해 이를 데이터베이스에서 사용해 왔음
- Google Cloud Storage에서 시작한 지 1년 만에 S3에서 이 기능을 사용할 수 있게 되어 기쁨
-
강력한 일관성을 통해 원하는 기능의 절반을 달성했음
-
이 기능이 왜 중요한지 이해하기 어려워하는 사람도 있음
-
이는 비교 후 교환(compare-and-swap)보다는 비교 후 설정(compare-and-set)에 가까움
-
읽기 후 쓰기 일관성 보장과 결합하면 객체 저장소 위에 증분 추가 전용 저장소를 구축하는 데 완벽한 기반이 됨
- 여러 작성자가 WAL에 접근할 때의 문제를 해결함
-
Azure Blob Storage도 e-tag 및 낙관적 제어를 지원함
- AWS의 기능과 어떻게 다른지 궁금해하는 사람도 있음
-
AWS의 기본 ETag 알고리즘이 평범한 MD5 해시인 경우, MD5 충돌로 인해 객체 데이터가 실패할 가능성이 있는지 의문을 가짐
- 서로 다른 사용자 제공 데이터가 항상 다른 ETag를 생성할 것이라고 가정하는 상황을 고려함
-
Amazon S3의 오픈 소스 구현인 MinIO는 거의 2년 전부터 이 기능을 제공해 왔음
- Amazon이 이제야 따라잡고 있음
-
s3fs의 IfNoneMatch 기능에 대한 반응으로 여름에 새로운 기능이 추가되었음
- 이 새로운 기능이 파일 시스템 추상화에서 어떻게 나타날지 궁금해하는 사람도 있음