루비로 분산 시스템 구현하기: 카스트로(Castro) 사례

[29M02] Distributed storage system with ruby Speaker(s) (ja)

작성자
RubyKaigi
발행일
2025년 10월 05일

핵심 요약

  • 1 루비 기반 분산 스토리지 시스템 '카스트로(Castro)'는 기존 엔터프라이즈 스토리지의 한계를 극복하고 대용량 파일 및 스케일아웃을 지원하기 위해 개발되었습니다.
  • 2 카스트로는 지연 복제(Delayed Replication)와 멀티캐스트를 활용하여 초기 응답 속도를 높이고 노드 간의 상태 및 데이터 위치를 효율적으로 관리하며, HTTP와 NFS 양쪽 I/O를 지원합니다.
  • 3 루비를 활용한 분산 시스템 개발은 프로토타입 개발 및 C 확장 라이브러리 연동에 있어 뛰어난 생산성과 유연성을 제공하지만, NameError와 같은 예외 처리에는 주의가 필요합니다.

도입

본 발표는 리코 IT 솔루션의 테라시타 토시유키가 루비로 개발한 분산 스토리지 시스템 '카스트로(Castro)'를 소개합니다. 기존 스토리지의 대용량 파일 처리 및 스케일아웃 한계를 극복하고자 했으며, 퀀트(Quant) 서비스의 요구사항을 충족시키기 위해 모바일FS(MogileFS) 및 쿠모FS(Kumofs) 등 기존 분산 시스템의 문제점을 분석하고 카스트로의 설계 철학, 주요 기능 및 루비 개발 경험을 공유합니다.

카스트로(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 사용에 대한 주의가 언급되었습니다. 카스트로 코어 컴포넌트 및 아파치 모듈은 깃허브에 공개되어 있습니다.

결론

테라시타 토시유키는 루비로 개발된 분산 스토리지 시스템 카스트로를 통해 기존 스토리지의 기술적, 운영적 한계를 성공적으로 극복했음을 보여주었습니다. 지연 복제, 멀티캐스트, HTTP/NFS 동시 지원 등의 혁신적인 설계는 대용량 분산 환경에 효과적으로 대응합니다. 루비의 높은 생산성과 C 확장 연동의 유연성은 복잡한 분산 시스템 개발에 매우 적합하며, 이는 루비가 웹 애플리케이션을 넘어 다양한 분야에서 활용될 수 있음을 시사합니다. 향후 멀티캐스트의 스케일링 문제에 대한 추가적인 개선이 기대됩니다.

댓글 0

댓글 작성

0/1000
정중하고 건설적인 댓글을 작성해 주세요.

아직 댓글이 없습니다

첫 번째 댓글을 작성해보세요!