아마존 S3(Amazon S3)와 같은 객체 스토리지에서 수천만 개 이상의 객체 목록을 가져오는 작업은 복잡하고 시간이 많이 소요될 수 있습니다. 이러한 문제를 해결하기 위해 'Swath'라는 새로운 오픈소스 도구가 등장했습니다. Swath는 S3 버킷의 키 분포를 미리 알지 못해도 병렬로 객체 목록을 효율적으로 생성하며, 작업 중단 시에도 이어서 재개할 수 있는 기능을 제공합니다.
기존 S3 목록화 방식은 한 번에 최대 1,000개의 키를 사전 순으로 가져오며, 병렬 처리를 위해서는 키 공간을 어떻게 나눌지 추측해야 하는 어려움이 있었습니다. Swath는 이러한 추측 문제를 해결하기 위해 키 공간을 여러 범위로 나누고, 각 작업자(worker)가 독립적으로 목록을 생성합니다. 특정 범위가 예상보다 밀도가 높거나 낮으면 작업량을 동적으로 재분배하여 균형을 맞춥니다. 이 과정에서 접두사 힌트나 사전 지식 없이 실시간으로 키 분포를 파악하며 작업을 진행합니다. Varve가 개발한 Swath는 자바(Java) 25 기반의 CLI 도구로, 자체 포함된 JAR 파일이나 설치 가능한 런처 형태로 배포되며, Parquet 형식으로 정렬된 출력과 충돌 방지 체크포인트/재개 기능을 지원합니다.
Swath는 특히 AWS S3 인벤토리(Inventory)나 S3 메타데이터 테이블(Metadata tables)을 사용할 수 없거나, 데이터가 최신이 아닌 경우에 큰 가치를 발휘합니다. 객체 내용을 읽지 않고 목록만 가져오므로 LIST 요청 비용만 발생하며, 10억 개의 키를 가진 버킷도 약 100만 건의 LIST 요청으로 처리 가능하여 비용 효율적입니다. 이는 대규모 데이터셋을 관리하는 기업이나 데이터 분석가들에게 매우 유용한 도구가 될 것입니다. 향후에는 'inspect' 및 'diff'와 같은 추가 명령과 S3 외 다른 객체 스토리지 지원도 계획되어 있어 활용 범위가 더욱 넓어질 전망입니다.