하나미(Hanami): 유지보수 가능한 루비 앱을 위한 유연한 프레임워크

Rocky Mountain Ruby 2025 - Slicing and Dicing Through Complexity with Hanami by Sean Collins

작성자
HackerNews
발행일
2025년 10월 26일

핵심 요약

  • 1 Hanami는 Rails와 달리 모듈성, 불변성, 함수형 프로그래밍 스타일을 강조하며, 각 액션을 독립된 클래스로 분리하고 Active Record 대신 Repository 패턴을 사용합니다.
  • 2 Hanami는 Dry-rb 및 ROM-rb 생태계 위에 구축되어 있으며, 최근 이들 프로젝트가 Hanekai로 통합되어 더욱 강력하고 일관된 개발 경험을 제공합니다.
  • 3 Hanami는 Rack 호환성을 통해 Rails 애플리케이션 내에서 점진적으로 도입하거나 독립적으로 배포할 수 있으며, 뛰어난 성능과 메모리 효율성을 자랑합니다.

도입

Sean Collins는 유지보수 가능한 Ruby 애플리케이션을 위한 유연한 프레임워크인 Hanami를 소개합니다. Hanami는 단순히 웹 프레임워크를 넘어 모든 종류의 Ruby 애플리케이션을 위한 기반을 제공할 수 있으며, 여러 수준에서 모듈성을 강조합니다. 이는 Rails와 같은 기존 프레임워크의 한계를 극복하고, 개발자가 '방언'이 아닌 순수한 Ruby를 작성하도록 돕는 철학을 가지고 있습니다. 불변성과 함수형 프로그래밍 스타일을 적극적으로 채택하여 버그를 줄이고 개발자의 인지 부하를 경감시키는 데 중점을 둡니다.

Hanami는 Hanami, Hanami CLI, Hanami Router, Hanami Controller, Hanami View, Hanami DB 등 핵심 컴포넌트 라이브러리로 구성되며, dry-rbrom-rb 생태계 위에 구축되어 dry-validation, dry-system 등 강력한 도구들을 활용합니다. 최근 Hanami, Dry-rb, ROM-rb가 ‘Hanekai’로 통합되어 개발 경험의 시너지를 기대합니다.

Hanami는 Rails의 MVC와 차별화된 아키텍처를 제공합니다.

  • 모듈성 및 구성 요소: 프레임워크는 교체 가능한 컴포넌트 라이브러리로 분리되며, 애플리케이션은 ‘슬라이스(Slice)’라는 독립 모듈로 구성됩니다. 각 슬라이스는 자체 컨테이너를 통해 의존성을 관리하며 독립 배포가 가능합니다.

  • 액션(Action) 중심 아키텍처: 각 액션은 독립 클래스로 구현되어 책임이 명확하며, 불변성을 통해 단일 인스턴스 재사용이 가능합니다. handle 메서드로 Rack 호환 요청을 처리하고, dry-validation으로 파라미터를 검증합니다.

  • 데이터베이스 계층: Active Record 대신 Repository 패턴을 사용하여 비즈니스 로직과 데이터 지속성 로직을 분리합니다. ROM SQL 기반 Relation은 테이블을 나타내고, Struct는 불변 데이터 객체를 제공합니다. 쿼리는 명시적 호출(to_a, one) 시 실행되며, dry-typesStruct 스키마를 정의하여 데이터 유효성을 강화합니다.

  • 뷰(View) 계층: 뷰는 클래스로 구현되며, expose를 통해 액션 데이터를 받습니다. View PartStruct를 래핑하여 프레젠테이션 로직을 캡슐화하고, View Context는 템플릿 내 라우트 헬퍼 등 공통 기능 접근 범위를 제한합니다.

  • 오퍼레이션(Operation): dry-operation은 복잡한 비즈니스 로직을 인터랙터/서비스 객체 계층으로 제공합니다. step 메서드를 통해 Success 또는 Failure 모나드로 흐름을 제어합니다.

결론

Hanami는 Ruby 개발자에게 Rails와는 다른, 더욱 구조화되고 유지보수하기 쉬운 대안을 제시합니다. 모듈성, 불변성, 그리고 명확한 책임 분리를 통해 대규모 애플리케이션 개발 시 발생할 수 있는 복잡성을 효과적으로 관리합니다. Rack 호환성을 통해 기존 Rails 프로젝트와의 통합 가능성을 열어두고, 뛰어난 성능과 메모리 효율성은 '핫 루트'와 같은 특정 기능에 Hanami를 적용하는 유연한 전략을 가능하게 합니다. Hanami, Dry-rb, ROM-rb의 통합은 Ruby 생태계에 새로운 활력을 불어넣으며, 더욱 견고하고 현대적인 애플리케이션 개발을 위한 강력한 도구로 자리매김할 것입니다.

댓글 0

로그인이 필요합니다

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

로그인 하러 가기

아직 댓글이 없습니다

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