모던 Hotwire 및 Rails 시대를 위한 개발 도구(DevOps Tooling)의 진화와 미래

Marco Roth, "Leveling Up Developer Tooling For The Modern Rails & Hotwire Era"

작성자
EuRuKo
발행일
2025년 01월 13일

핵심 요약

  • 1 본 강연은 Hotwire 및 Ruby on Rails 개발 환경의 생산성 향상을 위한 언어 서버 프로토콜(LSP) 기반의 개발 도구, 특히 Stimulus LSP의 개발 과정과 중요성을 다룹니다.
  • 2 JavaScript 생태계의 풍부한 개발 도구에 대한 갈증에서 시작된 Stimulus LSP는 자동 완성, 진단, 빠른 수정 등 HTML 내 Stimulus 속성 처리를 개선하여 개발 경험을 혁신합니다.
  • 3 향후 Stimulus Lint, Turbo LSP, ERB 문서 지원 및 Hotwire 브라우저 확장과 같은 도구들이 개발자 생산성 향상과 현대적인 Rails 개발 환경 구축에 기여할 것입니다.

도입

마르코(Marco) 연사는 Hotwire 및 Ruby on Rails 생태계의 풀스택 개발자이자 오픈 소스 기여자로서, 모던 Hotwire 및 Rails 시대를 위한 개발 도구, 특히 언어 서버 프로토콜(LSP)의 중요성과 Stimulus LSP의 개발 경험을 공유합니다. 그는 React 개발 경험에서 느낀 복잡성과 Ruby/Rails로 돌아오고자 하는 열망, 그리고 Rails 생태계에서 부족하다고 느꼈던 개발 도구의 부재가 이 프로젝트를 시작하게 된 계기라고 설명하며, Hotwire가 Rails 7의 기본으로 채택되면서 이러한 도구의 필요성이 더욱 증대되었다고 강조합니다.

마르코 연사는 JavaScript 생태계의 뛰어난 개발 도구 경험에 비해 Rails에서는 솔라(Solargraph)와 같은 도구들이 제대로 작동하지 않아 아쉬움을 느꼈다고 밝힙니다. 이러한 배경에서 그는 통합 개발 환경(IDE)의 무거움과 비생산성을 극복하고, 언어 인텔리전스를 제공하는 LSP에 주목하게 됩니다. LSP는 단일 서버 구현을 통해 다양한 편집기에서 언어 기능을 활용할 수 있게 하는 프로토콜이며, JSON RPC를 통해 통신합니다.

Stimulus LSP는 Stimulus 컨트롤러의 data 속성(예: data-controllers, data-targets, data-actions)에 대한 자동 완성, 진단, 빠른 수정 기능을 제공하여 개발자 경험을 향상시키는 것을 목표로 합니다. 특히, Stimulus의 명명 규칙에서 발생할 수 있는 오류(예: _ 대신 - 사용)를 방지하고, 동적으로 생성되는 속성 값까지 예측하여 제공합니다. 초기 구현은 HTML 언어 서비스를 확장하고, Acorn과 같은 JavaScript 파서를 사용하여 Stimulus 컨트롤러 파일을 분석하여 필요한 정보를 추출하는 방식으로 진행되었습니다. 그러나 이 과정에서 하드코딩된 경로 문제와 다양한 컨트롤러 등록 방식 지원의 어려움 등 여러 난관에 부딪혔고, 결국 파서를 전면 재작성하여 정확성과 신뢰성을 크게 개선했습니다.

Stimulus LSP 1.0 출시 이후, 개발 도구의 미래에 대한 논의가 이어졌습니다. RubyMine과 같은 IDE에서 Stimulus 지원이 추가되는 긍정적인 변화와 함께, LSP에 국한되지 않는 독립적인 진단 도구인 Stimulus Lint의 개발이 진행 중입니다. 이는 CLI 또는 CI 시스템에서 실행되어 코드의 오류나 비권장 사항을 감지하는 역할을 합니다. 또한, HTML 및 ERB 문서에 대한 진단 및 코드 액션 지원, Turbo LSP 개발, Rails 뷰 헬퍼(View Helper)에 대한 이해 증진, 그리고 궁극적으로는 HTML ERB 파서 개발을 통해 Haml, Slim, Liquid와 같은 다른 템플릿 언어까지 지원하는 확장성을 모색하고 있습니다. 뷰 파일 간의 관계를 이해하여 파일 간 진단 기능을 제공하는 것도 중요한 발전 방향으로 제시됩니다.

이와 더불어, Hotwire 생태계를 위한 브라우저 확장 도구인 Hotwire Debugger도 소개되었습니다. 이 도구는 웹 페이지 상에서 Stimulus 컨트롤러와 Turbo Frames를 시각적으로 강조하여 개발자가 페이지의 상호 작용 구조를 쉽게 파악할 수 있도록 돕습니다. 향후 Turbo Streams 디버거, Turbo Frame 콘텐츠 새로 고침 버튼 등 다양한 디버깅 기능이 추가될 예정입니다.

결론

마르코 연사는 개발자 경험(Developer Experience, DX)과 개발 도구의 경제성(DevOps Economics)이 현대적인 프레임워크의 관련성과 생산성을 유지하는 데 필수적이라고 역설합니다. 지난 몇 년간 Rails 생태계에 부족했던 도구들이 점차 구축되고 있으며, 이는 Hotwire와 Rails의 미래를 더욱 밝게 할 것이라고 전망합니다. 그는 계속해서 Ruby와 Rails를 사용하여 애플리케이션을 구축하고 싶기 때문에 이러한 도구 개발에 기여하고 있으며, 더 생산적이고 통합된 Hotwire 생태계를 위한 노력을 지속할 것이라고 강조하며 강연을 마무리합니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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