Shopify에서의 Ruby 오픈소스 안식년 경험 공유

A Ruby open-source sabbatical

작성자
발행일
2025년 07월 01일

핵심 요약

  • 1 Shopify의 Ruby 개발자가 Ruby LSP 인덱서 최적화를 위한 오픈소스 안식년을 보내며 기술적 성장을 도모하고 있습니다.
  • 2 안식년 동안 Ruby LSP의 성능, 캐싱, 메모리 사용량 개선에 집중하며, 인터프리터 및 Rust 프로그래밍 관련 심층 학습을 병행합니다.
  • 3 이 경험은 오픈소스 기여와 개인의 기술 역량 강화를 목표로 하며, Ruby 커뮤니티에 긍정적인 영향을 미칠 것으로 기대됩니다.

도입

본 글은 Shopify의 Ruby 개발자인 Sid가 경험하고 있는 Ruby 오픈소스 안식년에 대한 내용을 공유합니다. 이 안식년 프로그램은 Shopify의 Ruby 및 Rails 인프라 팀에서 시작되었으며, 회사 내 엔지니어들이 3개월 동안 자신이 선택한 분야를 심도 있게 학습하고 그 경험을 팀과 공유하도록 지원하는 제도입니다. Sid는 이 기간 동안 학습과 프로젝트 중심의 목표를 가지고 있으며, 특히 Ruby LSP(Language Server Protocol)의 핵심 구성 요소인 인덱서 추출 및 최적화 프로젝트에 집중하고 있습니다.

Sid의 안식년 주요 프로젝트는 Ruby LSP 인덱서의 성능 개선에 있습니다. 현재 Ruby LSP는 코드베이스 내의 클래스, 메서드, 모듈 등 다양한 엔티티 정보를 파싱, 순회, 저장하는 인덱싱 과정을 언어 서버 시작 시마다 수행합니다. 그러나 이 방식은 대규모 코드베이스(예: Shopify의 코어 Rails 모놀리스)의 경우 약 90초의 긴 인덱싱 시간을 소요하며, 캐싱 부재로 인해 매번 처음부터 인덱스를 구축해야 하는 비효율성이 존재합니다. 또한, 인덱스가 약 2.2GB에 달하는 상당한 메모리를 차지하고 있으며, Ruby LSP 내부 구성 요소로만 존재하여 다른 서비스에서 접근할 수 없다는 한계가 있습니다. Sid는 이러한 문제점들을 해결하기 위해 성능, 캐싱, 메모리 사용량 개선에 기여하고 있습니다. 초기 벤치마크에서는 Ruby와 Rust 구현을 비교했으며, Rust가 더 빠른 성능을 보임을 확인했습니다.

안식년 동안 Sid는 기술적 깊이를 더하기 위해 두 권의 전문 서적을 탐독하고 있습니다. 첫 번째는 인터프리터, 컴파일러, 프로그래밍 언어에 대한 이해를 돕는 ‘Crafting Interpreters’입니다. 이 책을 통해 Sid는 Ruby로 ‘Lox’ 인터프리터를 구현하며 코드 분석 단계들의 상호 관계를 직관적으로 파악하고 있습니다. 이는 Ruby LSP가 소스 코드를 나타내는 AST(Abstract Syntax Tree)를 생성하기 위해 Prism에 의존하는 방식과 밀접하게 연관됩니다. 두 번째는 ‘The Rust Programming Language’로, Rust의 독특한 프로그래밍 패러다임을 학습하고 있습니다. 특히, 소유권(ownership) 및 빌림(borrowing)과 같은 Rust의 핵심 개념들이 왜 컴파일러에 의해 강제되는지 그 근본적인 이유를 명확히 이해하게 되었으며, 이는 메모리 관리 효율성과 데이터 경쟁 방지에 기여함을 깨달았습니다. 이러한 학습은 Ruby LSP 인덱서의 성능 향상을 위한 Rust 적용 가능성을 탐색하는 데 중요한 기반이 됩니다.

Sid는 안식년 시작 전 명확한 목표들을 수립했습니다. 여기에는 학습에 대한 열정 재점화, 오픈소스 프로젝트에 대한 기여, 안식년 경험에 대한 글쓰기, 기술적 학습 내용에 대한 심층적인 글쓰기, 기술 역량의 폭과 깊이 확장, 그리고 즐거운 시간 보내기가 포함됩니다. 현재까지 이러한 목표들을 순조롭게 달성하고 있으며, 앞으로도 더 많은 기술적 글쓰기를 통해 학습 내용을 공유할 예정입니다.

결론

Sid의 Ruby 오픈소스 안식년은 단순한 휴식 기간을 넘어, Ruby LSP의 핵심 인프라를 개선하는 중요한 프로젝트를 수행함과 동시에, 프로그래밍 언어의 근본적인 원리와 Rust와 같은 새로운 기술 스택을 깊이 있게 탐구하는 귀중한 기회가 되고 있습니다. 이러한 경험은 개인의 기술적 성장을 가속화할 뿐만 아니라, Shopify의 Ruby 생태계와 더 나아가 전 세계 Ruby 오픈소스 커뮤니티에 실질적인 기여를 할 것으로 기대됩니다. 지속적인 학습과 공유를 통해 Sid는 전문 개발자로서의 역량을 한층 더 강화하고 있으며, 그의 다음 기술적 기고가 기대됩니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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