웹 어댑터는 주도하는
혹은 인커밍
어댑터다.
외부로부터 요청을 받아 애플리케이션 코어를 호출하고 무슨 일을 해야 할지 알려준다.
이때, 제어의 흐름은 웹 어댑터에 있는 컨트롤러 → 애플리케이션 계층에 있는 서비스로 흐른다.
애플리케이션 계층은 웹 어댑터가 통신할 수 있는 특정 포트를 제공한다.
→ 서비스는 이 포트를 구현하고, 웹 어댑터는 이 포트를 호출한다!
위 그림을 자세히 보면 의존성 역전 원칙이 적용된 것을 발견할 수 있다!
( = 따라서 포트 인터페이스를 삭제하고 서비스를 직접 호출할 수도 있다.)
<aside> 💡 *그럼 왜 어댑터와 유스케이스 사이에 또 다른 간접 계층을 넣어야 할까?
”포트 : 애플리케이션 코어가 외부 세계와 통신할 수 있는 곳에 대한 명세 ”이기 때문! 포트를 적절한 곳에 위치시키면 외부와 어떤 통신이 일어나고 있는지 정확하게 알 수 있고, 이는 레거시 코드를 다루는 유지보수 엔지니어에게는 무척 소중한 정보다.*
</aside>
그럼에도 상호작용이 많이 일어나는 애플리케이션과 관련된 한 가지 의문이 남는다.
웹 소켓을 통해 실시간 데이터를 사용자의 브라우저로 보낸다고 가정.