의존성 역전

웹 어댑터는 주도하는 혹은 인커밍 어댑터다.

외부로부터 요청을 받아 애플리케이션 코어를 호출하고 무슨 일을 해야 할지 알려준다.

이때, 제어의 흐름은 웹 어댑터에 있는 컨트롤러 → 애플리케이션 계층에 있는 서비스로 흐른다.

IMG_4B46367940EC-1.jpeg

애플리케이션 계층은 웹 어댑터가 통신할 수 있는 특정 포트를 제공한다.

→ 서비스는 이 포트를 구현하고, 웹 어댑터는 이 포트를 호출한다!

위 그림을 자세히 보면 의존성 역전 원칙이 적용된 것을 발견할 수 있다!

( = 따라서 포트 인터페이스를 삭제하고 서비스를 직접 호출할 수도 있다.)

<aside> 💡 *그럼 왜 어댑터와 유스케이스 사이에 또 다른 간접 계층을 넣어야 할까?

”포트 : 애플리케이션 코어가 외부 세계와 통신할 수 있는 곳에 대한 명세 ”이기 때문! 포트를 적절한 곳에 위치시키면 외부와 어떤 통신이 일어나고 있는지 정확하게 알 수 있고, 이는 레거시 코드를 다루는 유지보수 엔지니어에게는 무척 소중한 정보다.*

</aside>

그럼에도 상호작용이 많이 일어나는 애플리케이션과 관련된 한 가지 의문이 남는다.

웹 소켓을 통해 실시간 데이터를 사용자의 브라우저로 보낸다고 가정.