Hanami 마이크로 슬라이스: 간결한 기능 구현을 위한 새로운 접근 방식

Micro-slices in Hanami

발행일
2025년 07월 29일

핵심 요약

  • 1 Hanami 프레임워크에서 `config/slices` 디렉토리에 단일 파일을 생성하여 기존보다 간결한 '마이크로 슬라이스'를 정의할 수 있습니다.
  • 2 마이크로 슬라이스는 헬스 체크와 같은 작고 집중적인 기능을 구현하는 데 이상적이며, 복잡한 디렉토리 구조 없이 핵심 로직만으로 구성됩니다.
  • 3 이 새로운 방식은 향후 Gem 형태로 슬라이스 빌더를 배포하는 가능성을 열어주어 Hanami 애플리케이션의 모듈성과 확장성을 향상시킬 잠재력을 가집니다.

도입

Hanami 프레임워크의 핵심 아키텍처 기능인 '슬라이스(Slice)'는 수직 슬라이스 아키텍처를 지향하며, 프로젝트 내에 교차 기능적인 '미니 앱'을 호스팅합니다. 이는 Hanami 초기부터 존재한 기능으로, 기존 슬라이스는 포괄적인 기능에 적합하지만, 작은 규모의 기능에는 파일 구조가 다소 부담스러웠습니다. 본 글은 이러한 문제점을 해결하기 위한 '마이크로 슬라이스'라는 새로운 접근 방식을 소개합니다.

Hanami의 공식 가이드에는 명시되어 있지 않지만, 내부 코드에 문서화된 마이크로 슬라이스 정의 방식은 config/slices 디렉토리에 단일 파일을 생성하는 것으로 시작됩니다. 이는 기존 슬라이스 생성기가 만드는 복잡한 디렉토리 구조를 생략하고 핵심 로직만으로 구성할 수 있게 합니다.

마이크로 슬라이스 생성 및 활용 예시

  1. 슬라이스 파일 생성: config/slices/healthcheck.rb 파일을 생성합니다.

  2. 슬라이스 정의: 해당 파일에 Healthcheck::Slice와 간단한 JSON 응답을 반환하는 Healthcheck::Routes를 정의합니다. ruby module Healthcheck class Slice < Hanami::Slice; end class Routes < Hanami::Routes get "/", to: ->(_env) { [200, {"Content-Type" => "application/json"}, ['{"status": "ok"}']] } end end

  3. 메인 앱 마운트: config/routes.rb에서 slice :healthcheck, at: "/health"로 마운트하여 /health 경로에서 슬라이스에 접근할 수 있게 합니다. 이후 애플리케이션을 실행하고 curl 명령으로 테스트하면 {"status": "ok"} 응답을 확인할 수 있습니다.

마이크로 슬라이스의 주요 이점

  • 간결성: 작고 집중적인 기능 구현에 최적화되어 불필요한 파일 구조를 제거합니다.

  • 활용성: 헬스 체크, 메트릭 노출 등 ‘기술적’ 또는 ‘비도메인’ 슬라이스에 특히 유용합니다.

  • 확장 가능성: Gem 형태로 ‘슬라이스 빌더’를 배포하여 선언적인 방식으로 복잡한 기능을 구축할 수 있는 잠재력을 제공합니다. 이는 Hanami의 모듈성과 재사용성을 높이는 데 기여합니다.

결론

Hanami의 마이크로 슬라이스는 내부적으로 문서화된 기능으로, 기존 슬라이스의 복잡한 구조 없이 간결하게 특정 기능을 구현할 수 있는 강력한 도구입니다. 이는 헬스 체크나 메트릭 노출과 같은 소규모 기술적 요구사항에 특히 적합합니다. 궁극적으로, 마이크로 슬라이스는 Gem 형태로 '슬라이스 빌더'를 배포하는 가능성을 열어주어, Hanami 애플리케이션의 모듈성과 재사용성을 크게 향상시킬 잠재력을 가지고 있습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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