Hexagonal Architecture: Core Principles and Design
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

하ексagonal 아키텍처 요약

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

아키텍처 패턴

대상자

  • 프로젝트 아키텍처 설계에 관심 있는 개발자 및 시스템 설계자
  • 핵심 비즈니스 로직과 외부 의존성 분리 원칙을 이해하고 적용하고자 하는 중급 이상 개발자
  • 테스트 용이성과 유연성 확보를 목표로 하는 팀

핵심 요약

  • 핵심 원칙: "핵심 비즈니스 로직(코어)"과 "외부 의존성(데이터베이스, UI 등)"`을 완전히 분리하여 단일 책임 원칙을 강화
  • Ports: 코어가 제공하는 인터페이스로, interface 키워드로 정의된 계약(Contract)
  • Adapters: 외부 시스템과 코어를 연결하는 번역자 역할, 두 유형(Primary Adapters, Secondary Adapters)으로 구분

섹션별 세부 요약

1. 서론: 하ексagonal 아키텍처의 목적

  • 분리의 필요성: 데이터베이스, UI, 외부 서비스 등과의 의존성 해소를 목표
  • 분리의 이점: 테스트 용이성, 유연성, 유지보수성 향상
  • 기존 개념과의 연관성: Separation of Concerns 원칙의 확장형

2. Ports: 코어의 인터페이스 정의

  • 포트의 역할: 코어가 제공하는 규약/프로토콜 (예: type Sentence, move Cursor)
  • 인터페이스 설계: interface 키워드로 정의된 계약 (예: SaveUserRepository)
  • 예시: 사용자 입력을 처리하는 REST API ControllerPrimary Adapter로 작동

3. Adapters: 외부와 코어 연결

  • Primary Adapters: 사용자 입력을 코어로 전달 (예: Keyboard, Mouse, REST API Controller)
  • Secondary Adapters: 코어가 외부 시스템과 연결 (예: PostgresUserRepositoryAdapter, CloudStorageUploader)
  • 구현 방식: 코어가 정의한 인터페이스를 구현하는 외부 컴포넌트

4. 노트 앱을 통한 유사성 설명

  • 코어(노트 앱): type Sentence, Save Data 등의 포트 정의
  • Primary Adapter: 외부 키보드/마우스가 USB HID 프로토콜을 준수하여 입력 처리
  • Secondary Adapter: 외부 저장 장치(HDD, Cloud)를 통해 데이터 저장

결론

  • 실무 적용 팁:
  • Primary/Secondary Adapter 구분을 통해 테스트 용이성 확보
  • 코어에 interface 기반의 포트 정의를 강제하여 의존성 분리
  • 확장성과 유연성을 위해 아키텍처 패턴을 기반으로 설계
  • 예: SaveUserRepository 인터페이스를 통해 Postgres, Firebase 등 다양한 저장소와 호환 가능