Ruby 기반 Wiki 시스템 R(Arubeki)의 10년 운영 경험과 교훈

[29M03] The last decade of RWiki and lazy me (ja)

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

핵심 요약

  • 1 Ruby 기반의 독자적인 Wiki 시스템 'R(Arubeki)'은 DLB와 ERB를 활용하여 모든 데이터를 메모리 내 객체로 관리하며, 10년 가까이 대규모 비공개 환경에서 성공적으로 운영되었습니다.
  • 2 'R'은 단순한 기능과 메모리 중심 아키텍처를 통해 3만 페이지 이상의 대규모 데이터를 처리하며, 느린 시작 시간, 메모리 누수, IRB 성능 저하 등 다양한 운영 문제를 겪었으나 상황에 맞는 최적화로 극복했습니다.
  • 3 대규모 시스템 구축 시 초기부터 모든 확장을 대비하기보다는, 문제가 발생했을 때 유연하게 대응하고 불필요한 객체 생성을 최소화하는 것이 효과적이라는 운영 철학을 제시합니다.

도입

본 발표는 Ruby 기반의 독자적인 Wiki 시스템 'R(Arubeki)'의 개발자 세키 씨가 시스템의 10주년을 기념하여, 대규모 비공개 환경에서의 운영 경험과 그 과정에서 겪은 문제점 및 해결 방안을 공유합니다. 'R'은 DLB(Distributed Ruby Object Broker)와 ERB(Embedded Ruby)를 핵심 기술로 사용하여 모든 콘텐츠를 메모리 내 Ruby 객체로 관리하는 독특한 아키텍처를 가지고 있습니다. 발표는 'R'의 기능, 구현 방식, 그리고 실제 기업 환경(보사이 R)에서 겪었던 다양한 운영상의 난관과 극복 과정을 상세히 다룹니다.

R(Arubeki) 시스템의 특징

  • 아키텍처: ‘R’은 DLB 기반의 장수 서버와 단명 CGI로 구성되며, 모든 콘텐츠를 단일 Ruby 프로세스 내 객체로 관리합니다. 페이지 표시는 메모리에서 이루어지며, 편집 시에만 파일에 로그 형태로 기록됩니다.

  • HTML 생성: RD 텍스트는 ERB 객체로 컴파일되어 메모리에 유지되며, 파싱 및 컴파일은 편집 시에만 수행되어 표시 시 성능을 최적화합니다.

대규모 운영 환경(보사이 R) 및 커스터마이징

  • 운영 규모: 한 기업에서 3.5만 및 2.5만 페이지 규모의 두 사이트가 단일 머신에서 운영됩니다. 약 100명의 사용자가 개발 메모, BTS 등을 관리하며, 단일 Ruby 프로세스가 1.2GB 메모리로 안정적으로 작동합니다.

  • 주요 커스터마이징:

    • 스토리 카드 확장: XP의 스토리 카드 개념을 도입, RD 형식 티켓 정보에서 속성을 추출하고 DLB로 통계 정보를 생성합니다. 운영 중에도 티켓 속성 및 워크플로우를 유연하게 변경 가능한 ‘무법 플레이’가 특징입니다.
    • 테스트 스위트 생성: 스토리 카드 내 테스트 케이스를 수집, 테스트 계획 상태와 성적 등을 기반으로 동적인 테스트 스위트를 생성합니다.

운영 문제점 및 해결

  • 성능 문제: 시작 시 재귀적 페이지 탐색으로 인한 객체 폭증과 GC 지연, 프로세스 비대화 및 메모리 누수로 인한 느린 응답, 그리고 IRB 사용 시 거대 객체 inspect 호출로 인한 지연 문제가 발생했습니다.

  • 해결 방안: RD 트리 생성 지연 처리, HTML 및 메타데이터 마샬 덤프, 불필요한 참조 제거를 통한 메모리 최적화, 그리고 ‘R’ 서버의 inspect 메서드 최적화를 통해 성능을 개선했습니다.

운영 철학

시스템 규모 확장에 대한 초기 과도한 대비보다는, 문제가 발생했을 때 상황에 맞는 유연하고 적절한 해결책을 모색하는 것이 중요합니다. 불필요한 객체 생성을 피하고, 외부 지적을 통해 개선하는 태도가 효과적입니다.

결론

본 발표는 Ruby 기반의 Wiki 시스템 'R'이 10년간 대규모 비공개 환경에서 어떻게 성공적으로 운영되었는지를 보여주며, 그 과정에서 겪었던 기술적 난관과 이를 해결하기 위한 실용적인 접근 방식을 제시합니다. 'R'의 메모리 중심 아키텍처와 DLB 활용은 Ruby 프로세스의 견고함과 유연성을 입증합니다. 특히, 시스템 규모가 커짐에 따라 발생하는 문제를 예측하여 과도하게 대비하기보다는, 실제 문제 발생 시 상황에 맞는 최적화와 유연한 대응이 중요함을 강조하는 운영 철학은 모든 개발자에게 유의미한 시사점을 제공합니다. 'R'은 여전히 발전 가능성이 있으며, 향후 64비트 환경에서의 확장성도 기대됩니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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