[architecture Series Hexagonal] 03.applicationhexagon
April 12, 2025
Port
UseCase
- 헥사고날에서 유스케이스는 구현보다는 추상적 개념으로 설계하는 것이다.
- 유스케이스를 인터페이스로 정의하는 이유는 아래와 같다.
- 유스케이스 목표를 달성하는 다양한 방법 제공
- 구현보다는 추상적 개념에 대한 의존성 허용
- 드라이빙 액터와 헥사고날 시스템에 의해 노출되는 드라이빙 오퍼레이션 사이의 통신 흐름을 허용하기 위해 입력 포트를 사용한다.
- UseCase는 애플리케이션이 지원해야 하는 동작을 알려주고, 입력 포트는 이런 동작의 수행 방법을 알려준다.
- 입력 포트는 드라이빙 액터로부터 데이터가 프레임워크 헥사곤 어댑터 중 하나를 통해 헥사고날 시스템에 도달할 때 데이터가 흐르는 통로, 통합하는 깔떼기 역할을 한다.
- 주된 관심사는 도메인 서비스를 통한 호출과 외부 포트를 통한 외부 호출을 조정하고 데이터를 처리하는 것이다.
OutputPort(Driven)
- 출력 포트는 애플리케이션이 데이터를 외부 소스로부터 얻어 유지하려는 의도를 나타낸다.
- 외부 소스는 DB, Flat file, 다른 시스템이 될 수도 있다.
- secondary port로도 알려져 있다.
- driven 액터와 operation에 연결할 수 있다.
- OuputPort를 두면서 ‘어떤 기술이 사용될 것인지에 대한 모든 결정을 가능한 연기’ 할 수 있다.
- 기술적인 세부 사항보다 문제 영역에 더 중점을 둘 수 있다.
- 주된 목표는 데이터를 가져오는 방법을 지정하지 않고 어떤 종류의 데이터가 필요한지 지정하는 것이다.
결론
- 애플리케이션 헥사곤 구성 이점은 시스템 요구 사항을 만족시키기 위해서 사용해야 하는 기술을 지정할 필요가 없다는 점이다.
- 헥사곤 시스템을 다른 기술과 더 쉽게 통합할 수 있게 만드는, 기술적인 세부 사항에 초점을 두지 않는 방법이다.
- UseCase: 행위를 코드로 변환하는 기본 원칙
- inputPort: UseCase를 구현. 내부 사이의 통신 흐름을 중재
- outputPort: 특정 기술의 결합 업이도 외부 소스의 데이터에 대한 필요성을 표현할 수 있다.