Port

UseCase

  • 헥사고날에서 유스케이스는 구현보다는 추상적 개념으로 설계하는 것이다.
  • 유스케이스를 인터페이스로 정의하는 이유는 아래와 같다.
    • 유스케이스 목표를 달성하는 다양한 방법 제공
    • 구현보다는 추상적 개념에 대한 의존성 허용

InputPort(Driving)

  • 드라이빙 액터와 헥사고날 시스템에 의해 노출되는 드라이빙 오퍼레이션 사이의 통신 흐름을 허용하기 위해 입력 포트를 사용한다.
  • UseCase는 애플리케이션이 지원해야 하는 동작을 알려주고, 입력 포트는 이런 동작의 수행 방법을 알려준다.
  • 입력 포트는 드라이빙 액터로부터 데이터가 프레임워크 헥사곤 어댑터 중 하나를 통해 헥사고날 시스템에 도달할 때 데이터가 흐르는 통로, 통합하는 깔떼기 역할을 한다.
  • 주된 관심사는 도메인 서비스를 통한 호출과 외부 포트를 통한 외부 호출을 조정하고 데이터를 처리하는 것이다.

OutputPort(Driven)

  • 출력 포트는 애플리케이션이 데이터를 외부 소스로부터 얻어 유지하려는 의도를 나타낸다.
  • 외부 소스는 DB, Flat file, 다른 시스템이 될 수도 있다.
  • secondary port로도 알려져 있다.
  • driven 액터와 operation에 연결할 수 있다.
  • OuputPort를 두면서 ‘어떤 기술이 사용될 것인지에 대한 모든 결정을 가능한 연기’ 할 수 있다.
  • 기술적인 세부 사항보다 문제 영역에 더 중점을 둘 수 있다.
  • 주된 목표는 데이터를 가져오는 방법을 지정하지 않고 어떤 종류의 데이터가 필요한지 지정하는 것이다.

결론

  • 애플리케이션 헥사곤 구성 이점은 시스템 요구 사항을 만족시키기 위해서 사용해야 하는 기술을 지정할 필요가 없다는 점이다.
  • 헥사곤 시스템을 다른 기술과 더 쉽게 통합할 수 있게 만드는, 기술적인 세부 사항에 초점을 두지 않는 방법이다.
    • UseCase: 행위를 코드로 변환하는 기본 원칙
    • inputPort: UseCase를 구현. 내부 사이의 통신 흐름을 중재
    • outputPort: 특정 기술의 결합 업이도 외부 소스의 데이터에 대한 필요성을 표현할 수 있다.