최근 한 개발자가 C++23 표준을 기반으로 AWS S3(Simple Storage Service) 클라이언트 라이브러리인 's3cpp'을 선보였습니다. 이 프로젝트는 libcurl과 OpenSSL 외에는 다른 외부 의존성(dependency)을 전혀 사용하지 않아, 기존 AWS SDK에 비해 매우 경량화된 것이 특징입니다. 개발자는 C++ 학습 목적으로 이 라이브러리를 만들었다고 밝혔지만, S3와 연동해야 하는 C++ 프로젝트에서 불필요한 복잡성을 줄이고자 하는 개발자들에게 실용적인 대안을 제시합니다.
s3cpp 라이브러리는 S3 버킷 생성, 버킷 목록 조회, 버킷 내 객체 목록 조회, 객체 삭제 등 기본적인 S3 작업들을 지원합니다. 특히 많은 객체를 처리해야 할 때 유용한 페이지네이터(Paginator) 기능도 포함되어 있어, 대규모 데이터셋 관리에도 효율적입니다. 내부적으로는 HTTP 클라이언트, AWS 시그니처 V4(Signature V4) 인증 프로토콜, 그리고 XML 파싱을 위한 커스텀 FSM(Finite State Machine) 등 모듈화된 컴포넌트로 구성되어 있어, 각 기능이 독립적으로 작동하며 유지보수 및 확장이 용이합니다. 개발자는 로컬 MinIO 환경에서 주로 테스트했지만, AWS S3에서도 일부 기능이 작동함을 확인했습니다.
이처럼 최소한의 의존성으로 S3 클라이언트를 구현한 것은 여러 가지 의미를 가집니다. 첫째, 불필요한 라이브러리 포함으로 인한 바이너리 크기 증가와 보안 취약점 노출 위험을 줄일 수 있습니다. 둘째, 특정 환경에서 AWS SDK가 제공하는 모든 기능이 필요하지 않을 때, 필요한 기능만 선택적으로 사용하여 개발 복잡성을 낮출 수 있습니다. 이는 특히 임베디드 시스템이나 리소스가 제한적인 환경에서 클라우드 스토리지 연동이 필요할 때 큰 장점이 될 수 있습니다. 비록 아직 프로덕션 레벨의 안정성을 보장하지는 않지만, C++ 개발자들이 S3 연동 방식을 이해하고 커스터마이징하는 데 좋은 학습 자료이자 출발점이 될 것입니다.