
S3는 사실상 '인터넷의 하드디스크'예요. 싸고, 사실상 무한하고, 웬만해선 데이터가 유실되지 않거든요. 그런데 딱 하나 아쉬운 게 있어요. 파일시스템이 아니라는 점이요. 그래서 "S3를 진짜 디스크처럼 쓰고 싶다"는 건 개발자들의 오랜 꿈이었는데요, 이 문제에 정면으로 도전한 오픈소스 프로젝트 ZeroFS가 자신들의 방식과 AWS의 파일 접근 솔루션을 조목조목 비교하는 글을 올렸어요.
S3는 왜 파일시스템이 아닐까요
S3 같은 객체 스토리지는 파일을 '객체'라는 통짜 덩어리로 다뤄요. 올리고(PUT), 받고(GET), 지우는(DELETE) 게 기본이거든요. 그래서 일반 파일시스템에서는 당연한 것들이 안 돼요. 예를 들어 10GB 파일에서 중간 1바이트만 고치고 싶어도 객체 전체를 다시 올려야 하고, 파일 이름 바꾸기(rename)도 내부적으로는 복사 후 삭제라서 한 번에 끝나는 작업이 아니에요. 이 동네에서 POSIX라는 말이 자주 나오는데, 이게 뭐냐면 리눅스 같은 운영체제에서 파일을 다루는 표준 규약이에요. 파일 열기, 부분 쓰기, 잠금, 권한 같은 것들이요. 데이터베이스를 비롯한 대부분의 프로그램이 이 규약을 전제로 만들어져 있어서, POSIX가 안 되는 S3 위에서는 그냥 돌릴 수가 없거든요.
ZeroFS는 어떻게 풀었나
ZeroFS의 접근이 재밌어요. S3 위에 LSM 트리 기반 스토리지 엔진(SlateDB)을 한 층 올렸거든요. LSM 트리가 뭐냐면, 작은 쓰기 요청들을 일단 메모리에 모아뒀다가 큰 덩어리로 묶어서 순차적으로 기록하는 자료구조예요. RocksDB 같은 유명 데이터베이스 엔진들이 쓰는 방식이죠. 이 구조가 S3와 궁합이 좋은 게, S3는 작은 쓰기를 자주 하면 요청 비용과 지연시간이 부담스럽지만 큰 덩어리를 가끔 쓰는 건 아주 잘하거든요. 몇 년 전 S3에 조건부 쓰기(다른 클라이언트가 먼저 썼는지 확인하고 쓰는 기능)가 추가되면서 이런 설계를 안전하게 만들 수 있게 된 것도 컸어요.
그 위에 ZeroFS는 NFS와 NBD 인터페이스를 제공해요. NFS는 네트워크 파일 공유 프로토콜이고, NBD는 네트워크 너머의 저장공간을 마치 로컬 블록 디바이스(디스크)처럼 보이게 하는 프로토콜이거든요. 블록 디바이스로 보인다는 건, 그 위에 ext4든 ZFS든 원하는 파일시스템을 얹거나 심지어 데이터베이스를 직접 돌릴 수도 있다는 뜻이에요. "S3 요금으로 완전한 POSIX 디스크를 쓴다"는 게 이 프로젝트의 핵심 주장인 거죠.
AWS 순정 솔루션과 뭐가 다른가
AWS도 물론 답을 갖고 있어요. Mountpoint for Amazon S3는 공식 도구지만 순차 읽기·쓰기 위주라 기존 파일의 중간을 수정하는 건 안 되고, S3 File Gateway는 별도의 게이트웨이를 운영해야 해요. 완전한 파일시스템이 필요하면 EFS가 있지만, GB당 가격이 S3 표준 스토리지의 열 배 가까이 되거든요. 결국 구도는 이래요. AWS 순정은 관리형이라 운영 부담이 없는 대신 기능이나 가격에서 타협해야 하고, ZeroFS는 완전한 POSIX 지원과 S3 수준의 저장 비용을 주는 대신 직접 띄우고 운영해야 하며 캐시 계층의 정합성도 스스로 이해하고 써야 해요. 공짜 점심은 없는 거죠.
이 분야, 사실 꽤 붐빕니다
객체 스토리지 위에 파일시스템을 올리려는 시도는 역사가 길어요. s3fs-fuse 같은 고전부터, 메타데이터를 별도 데이터베이스에 두는 JuiceFS, 상용 제품인 ObjectiveFS까지 다양하거든요. 최근 이 분야가 다시 뜨거워진 건 AI 때문이에요. 학습 데이터는 S3에 쌓이는데 학습 프레임워크는 POSIX 파일을 기대하니까, 그 사이를 잇는 계층의 수요가 부쩍 커진 거죠.
한국 팀들에게도 로그 보관, 백업, ML 데이터 파이프라인처럼 "용량은 큰데 EFS 가격은 부담스러운" 워크로드에서 검토해볼 만한 선택지예요. 다만 프로덕션 데이터베이스처럼 지연시간과 정합성이 생명인 워크로드에 쓸 거라면 반드시 직접 벤치마크를 해보셔야 하고요. 정리하면, 객체 스토리지의 가격에 파일시스템의 편의를 얹으려는 경쟁이 본격화됐다는 이야기예요. 여러분이라면 S3 위의 파일시스템, 어떤 워크로드까지 믿고 맡기시겠어요?
🔗 출처: Hacker News