Ruby를 활용한 클라우드 데이터 인프라 구축

Evgeny Li, Building cloud data infrastructure with Ruby. San Francisco Ruby Conference 2025

작성자
Evil Martians
발행일
2026년 01월 13일

핵심 요약

  • 1 Ruby는 웹 개발을 넘어 스크립팅 및 자동화에 최적화된 언어이며, 클라우드 데이터 인프라 구축에 강력하게 활용될 수 있습니다.
  • 2 Ruby의 풍부한 표준 라이브러리, 템플릿 렌더링, HTTP 통신, 파일 조작, 셸 명령 실행 기능은 복잡한 데이터 인프라 자동화에 효율성을 제공합니다.
  • 3 드라이 런, 사이드카, GitOps 패턴 및 점진적 타이핑과 같은 스크립트 작성 패턴과 모범 사례는 Ruby 기반 인프라 구축의 안정성과 확장성을 높입니다.

도입

연사는 Ruby에 대한 깊은 애정과 경험을 바탕으로, Ruby가 웹 및 API 개발 외에도 다양한 영역에서 활용될 수 있음을 강조합니다. 특히, 모바일 앱, 데스크톱 앱, 게임 엔진 등 다른 언어가 지배적인 영역이 있지만, Ruby는 스크립팅 및 자동화 분야에서 독보적인 강점을 가진다고 주장합니다. Matz의 Ruby 설계 철학을 인용하며, Ruby가 쉽고 빠르게 스크립트를 작성하는 데 최적화된 언어임을 설명하고, BEMI AI에서 Ruby를 활용하여 클라우드 데이터 인프라를 구축하는 실제 사례를 소개합니다.

Ruby의 스크립팅 및 자동화 역량

연사는 Ruby가 스크립팅 및 자동화에 가장 적합한 언어라는 “핫 테이크”를 제시합니다. 이는 Ruby가 Matz의 초기 설계 목표였으며, LLM(대규모 언어 모델)들조차 Ruby의 이러한 강점을 인정한다고 설명합니다.

BEMI AI의 클라우드 데이터 인프라

BEMI AI는 고객 지원을 위한 AI 에이전트를 구축하며 Ruby를 활용합니다.

  • 멀티테넌트 인프라: 고객별로 격리된 인프라를 Ruby로 프로비저닝합니다.

  • 데이터 소스 연결: PostgreSQL의 논리적 복제 로그, Notion API, 웹훅 등을 통해 다양한 데이터 소스에 연결합니다.

  • 데이터 저장: Parquet 파일(컬럼 기반, 압축 효율적)과 JSON 메타데이터를 사용하여 S3 기반의 확장 가능한 ‘바닥 없는’ 스토리지를 구현합니다.

  • 쿼리 엔진: 분석용 SQLite와 유사한 DuckDB를 활용합니다.

데이터 엔지니어링 스택의 복잡성

데이터 엔지니어링 스택은 Kafka, JVM, 데이터 스트리밍, 워크플로우 오케스트레이션, 테이블 압축, 스냅샷, 다양한 테이블 포맷(벡터 포함), 데이터 품질 및 카탈로그, ETL/ELT/리버스 ETL 등 소프트웨어 엔지니어링 스택보다 훨씬 복잡하고 비용이 많이 든다고 강조합니다. 이러한 복잡성 속에서 자동화의 중요성이 부각됩니다.

Ruby를 통한 자동화

기존의 Ansible, Terraform, Kubernetes 같은 자동화 도구와 함께, Ruby는 “자동화를 자동화”하는 데 핵심적인 역할을 합니다.

  • 풍부한 표준 라이브러리: JSON, YAML, CSV 등 다양한 데이터 타입 처리 및 Kubernetes YAML 파일 동적 생성에 용이합니다.

  • ERB 템플릿 렌더링: HTML뿐만 아니라 SQL 파일 등 모든 유형의 파일을 렌더링할 수 있습니다.

  • 내장 HTTP 라이브러리: 외부 Gem 없이 HTTP 요청을 처리합니다.

  • 강력한 파일 조작: File.join, Tempfile 등을 통한 대용량 파일 처리 및 임시 파일 관리가 가능합니다.

  • 셸 명령 실행: system, 백틱, Open3를 통해 외부 프로세스를 완벽하게 제어할 수 있습니다.

  • 빠른 반복 속도: 컴파일 단계 없이 빠르게 실행, 읽기, 디버깅이 가능하여 개발 속도를 높입니다.

Ruby 스크립트 작성 패턴 및 모범 사례

  • 드라이 런 패턴: 실제 변경 없이 스크립트 실행 결과를 미리 확인하여 디버깅 및 문제 해결에 도움을 줍니다.

  • 사이드카 패턴: 메인 프로세스에 보조 기능을 제공하는 경량 컨테이너(예: SSH 터널)로 Ruby를 활용하여, Rails 모놀리스가 적합하지 않은 경우에도 유연하게 대응합니다.

  • GitOps 패턴: 인프라 코드를 선언적으로 Git 저장소에 관리하고, Ruby 프로세스가 변경 사항을 커밋하여 CI/CD를 통해 인프라 상태를 동기화합니다.

  • 점진적 타이핑: Sorbet과 같은 도구를 사용하여 코드의 확장성과 유지보수성을 향상시킵니다(다만, Ruby 커뮤니티 내 타이핑 시스템의 혼란에 대한 언급도 있습니다).

  • 모범 사례: 의존성 최소화, 전역 가변 상태 감소, 멱등성 스크립트 작성, 민감 데이터 마스킹, 사용자 입력 유효성 검사, 불필요한 추상화 없는 DRY 원칙 준수.

  • 고급 기술: 타임아웃 처리, 기능 플래그, 속도 제한, 지수 백오프를 이용한 재시도, 서킷 브레이커, 카오스 엔지니어링 등 분산 시스템에서 유용한 기술들도 언급됩니다.

결론

결론적으로 Ruby는 단순히 웹 개발 프레임워크인 Rails에 국한되지 않고, 그 이상의 잠재력을 지닌 언어임을 강조합니다. Matz가 의도했던 스크립팅 언어로서의 본질을 살려, 클라우드 인프라 프로비저닝, 데이터 파이프라인 자동화, 일반적인 시스템 관리 등 다양한 분야에서 강력한 도구로 활용될 수 있습니다. Ruby의 빠른 개발 속도와 풍부한 기능은 복잡한 데이터 인프라를 효율적으로 구축하고 관리하는 데 핵심적인 역할을 하며, 이는 개발자들이 Ruby를 통해 더 넓은 영역으로 나아갈 수 있음을 시사합니다.

댓글 0

로그인이 필요합니다

댓글을 작성하거나 대화에 참여하려면 로그인이 필요합니다.

로그인 하러 가기

아직 댓글이 없습니다

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