Hanami 애플리케이션의 모듈화: 슬라이스(Slices) 활용 가이드

V2.2: Slices | Hanami Guides

작성자
Ruby Weekly
발행일
2025년 10월 03일

핵심 요약

  • 1 Hanami 슬라이스는 애플리케이션 코드를 비즈니스 도메인 또는 기술적 관심사에 따라 독립적인 모듈로 구성하여 코드의 응집도와 유지보수성을 향상시킵니다.
  • 2 각 슬라이스는 자체 컨테이너를 가지며, 액션, 프로바이더, 설정 등을 개별적으로 관리하고, 다른 슬라이스와 컴포넌트를 가져오거나 내보낼 수 있습니다.
  • 3 슬라이스별 설정, 독립적인 로딩 및 라우팅 기능을 통해 대규모 애플리케이션의 성능 최적화와 유연한 아키텍처 설계를 지원합니다.

도입

Hanami 프레임워크는 `app` 디렉토리 외에 '슬라이스(slices)'라는 개념을 도입하여 애플리케이션 코드 구성을 더욱 세분화할 수 있도록 지원합니다. 슬라이스는 애플리케이션 내에서 독립적인 모듈로 기능하며, 비즈니스 도메인(예: 결제, 관리자 기능) 또는 특정 기능(예: API, 검색)별로 코드를 분리하는 데 효과적입니다. 이러한 모듈화는 대규모 애플리케이션의 복잡성을 관리하고, 코드의 응집도를 높이며, 유지보수성을 향상시키는 핵심적인 접근 방식입니다. `slices` 디렉토리 내에 위치하는 슬라이스는 Hanami 애플리케이션의 구조적 명확성을 제공하는 중요한 요소입니다.

Hanami 슬라이스는 애플리케이션의 모듈화를 위한 핵심 기능을 제공합니다.

슬라이스 생성 및 기본 구성

슬라이스는 Hanami 제너레이터 또는 slices 디렉토리 내 디렉토리 생성으로 생성됩니다. 각 슬라이스는 독립적인 컨테이너를 가지며, 관리되는 컴포넌트 목록을 확인할 수 있습니다. 앱의 표준 컴포넌트(예: settings, logger)는 모든 슬라이스에 자동 임포트되며, config.shared_app_component_keys를 통해 추가 컴포넌트 공유도 가능합니다. 슬라이스별 프로바이더를 정의할 수 있습니다.

슬라이스별 설정, 라우팅 및 상호작용

슬라이스별 설정을 정의하여 앱 설정과 분리 관리함으로써 설정 관리의 복잡성을 줄입니다. 슬라이스는 자체 액션을 포함하며 애플리케이션 라우터에서 라우팅 가능합니다. 슬라이스별 라우팅 파일을 분리하고 Rack Middleware를 설정할 수 있습니다. 슬라이스 간 컴포넌트는 가져오기(import) 및 내보내기(export)를 통해 느슨하게 결합됩니다. 다른 슬라이스 컴포넌트를 가져올 때, 특정 컴포넌트만 선택하거나 별칭을 지정할 수 있으며, Deps 믹스인을 활용합니다. 반대로 특정 컴포넌트만 외부에 공개하도록 내보낼 수 있습니다.

슬라이스 로딩 최적화

HANAMI_SLICES 환경 변수 또는 애플리케이션 설정을 통해 특정 슬라이스만 로드하도록 지정할 수 있습니다. 이는 필요한 슬라이스만 로드하여 애플리케이션 부팅 시간을 단축하고 메모리 사용량을 줄여 성능을 최적화합니다.

결론

Hanami의 슬라이스 아키텍처는 대규모 Ruby 애플리케이션을 개발하는 데 있어 강력한 모듈화 및 조직화 도구를 제공합니다. 각 슬라이스는 독립적인 컨테이너, 설정, 라우팅 및 컴포넌트 관리 기능을 통해 특정 비즈니스 도메인이나 기술적 관심사를 명확하게 분리하고 캡슐화할 수 있도록 돕습니다. 슬라이스 간의 명시적인 컴포넌트 가져오기/내보내기 메커니즘은 불필요한 결합을 방지하고, 코드의 재사용성을 높이며, 유지보수성을 극대화합니다. 또한, 선택적 슬라이스 로딩은 애플리케이션의 리소스 효율성을 높이고 성능을 최적화하는 데 중요한 역할을 합니다. 이러한 슬라이스 기능들을 통해 개발자는 더욱 견고하고 확장 가능한 Hanami 애플리케이션을 구축할 수 있습니다.

댓글 0

댓글 작성

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

아직 댓글이 없습니다

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