카스트로(Castro)는 퀀트(Quant) 서비스의 대용량 파일 처리 및 스케일아웃 문제를 해결하고자 루비로 개발된 분산 스토리지 시스템입니다. 기존 스토리지의 한계를 극복하고 저렴한 서버 기반의 확장이 용이한 구조를 목표로 했습니다.
기존 분산 시스템 한계
-
모바일FS (MogileFS): 대용량 파일 복제 시 네트워크 부하, HTTP I/O 전제로 NFS 미지원.
-
쿠모FS (Kumofs): 기가바이트 데이터 처리 부적합, 멤캐시드(Memcached) 기반 NFS 미지원. 카스트로는 100GB 이상 대용량 파일, HTTP 및 NFS I/O 동시 지원, 파일 세트 처리를 핵심 요구사항으로 설정했으며, 설계를 간소화하기 위해 임의 파일 경로 키, 키 고유성 보장, 인플레이스 데이터 업데이트는 제외했습니다.
카스트로 주요 특징
-
지연 복제 (Delayed Replication): 첫 피어(Peer) 저장 후 백그라운드 비동기 복제로 초기 응답 속도 향상.
-
파일 I/O 유연성: HTTP와 NFS 모두 지원.
-
디렉토리 바스켓: 정수형 키 기반 디렉토리 단위 데이터 관리.
-
멀티캐스트 활용: 피어 상태 감지 및 바스켓 검색에 멀티캐스트를 사용, 중앙 집중식 관리 없이 분산 데이터 위치 탐색.
카스트로는 클라이언트, 게이트웨이(C 루비 확장 캐시), 피어 컴포넌트로 구성됩니다.
루비 개발 경험
루비를 통한 분산 시스템 개발은 프로토타입 구축 용이성, C 루비 확장을 통한 성능 최적화, 높은 생산성을 입증했습니다. NameError 처리 시 rescue Exception 사용에 대한 주의가 언급되었습니다. 카스트로 코어 컴포넌트 및 아파치 모듈은 깃허브에 공개되어 있습니다.