Page cover image

😌2022.02.22

일일 회고 20회차

할일 및 한일

경험 및 배움

아키텍처 세미나 청강

오늘은 이전에 했던 아키텍처 세미나의 내용들을 복습하고 Hexagonal Architecture의 Adapter와 Port를 중점으로 살펴봤다.

Hexagonal Architecture에 대해 많은 얘기와 토론이 진행되었지만 가장 기억에 남는 것들은 다음과 같다.

  1. Websocket AdapterInput PortOutput Port 모두를 호출하는 그림을 보여주시고, 해당 그림의 시스템을 구현하게 된다면 어떻게 구현할 것인지?

  2. 하나의 Adapter(Controller)를 작게 분리하여 구현하는 것의 장단점이 무엇인지? (ex. AccountController를 작게 쪼개면 LoginController, LogoutController, ...)

위의 질문들에 나는 다음과 같이 대답했다.

  1. "클라이언트로부터 수신된 웹소켓 요청Websocket Adapter로 수신되고 Input Port로 요청이 되어, 해당 Input Port를 구현하고 있는 A Service가 처리할 것입니다. 만약 사용자에게 전송되어야 할 데이터가 있다면 B Service가 이벤트를 발행하여 Output Port를 구현하고 있는 Websocket Adapter의 메소드를 통해 사용자에게 전송하도록 구현할 것입니다."

  2. "Adapter를 작게 분리하고 SRP(Single Responsibility Principle)를 준수하여 구현하면, 응집도가 증가하게 되어 하나의 수정사항에 대해서 여러 곳을 수정할 필요가 없는 장점이 있습니다. 하지만 하나의 Adapter가 여러 개의 클래스로 분리되므로 클래스 개수와 작성해야 할 코드가 증가하게 되는 단점이 있습니다."

내 대답 외에 다양한 의견이 있었지만 대부분 비슷한 내용이였다.

2번에 대해 박사님은 여러 개의 클래스로 분리하여 클래스 개수와 작성해야 할 코드가 증가한다는 것을 큰 단점으로 보지 않았다. 왜냐하면 클래스를 생성하거나 코드를 작성함에 있어서 대부분이 IDE가 편리하게 제공하고 있기 때문이라고 말씀하셨다. 박사님 말을 들으니 하나의 Adapter로 구현하여 유지보수에 어려움을 겪는 것보다는 차라리 여러 개의 클래스로 분리하는 것이 나을거 같다는 생각이 들었다.

개선 및 목표

  • 오늘은 오전에 운전면허 시험을 보고 오느라 다른 작업을 진행하지는 못 했다.

  • 클래스는 최대한 작게 쪼개서 SRP를 준수하는 코드를 작성하도록 하자.

Last updated