woowacourse-teams/2023-team-by-team

[BE] SSE 이벤트를 위한 의존성 방향 및 구현 변경에 대한 고민

Closed this issue · 0 comments

구현기능

기존 : SSE패키지를 나머지 알림을 보낼 도메인들에서 의존하는 방향으로 구현
위처럼 구현한 이유

  • 알림에 대한 기능은 한번 구현을 해두고, 알림 전송이 필요하다면 해당 도메인에서 알림 이벤트를 가져와 구현하도록 구현할 수 있도록
  • 이러면 기존에 이벤트가 발행이 안되던 도메인에서도 알림을 보내고 싶다면 알림도메인은 건들지 않고, 기능 도메인에서만 이벤트를 발행해주록해서 기능패키지에서만 코드추가를 통해 개발할 수 있다고 생각

변경고려할 방향 : SSE가 알림을 발행시킬 각각의 기능패키지 의존하도록 구현

변경 고려하게된 이유

  • 알림을 보내고 말고에 대한 변동이 생겼을때 기존처럼 하게 된다면 알림에서의 변동이지만 기능에서의 코드가 변경이된 pr이 올라가게 됨
    • 알림에 대한 확인을 위해서 기능패키지를 타고 들어가야함
  • 기능애그리거트에서 알림에 대한 (알림 형식에 대한) 정보를 알고있어야함
    • 이는 어차피 알림을 의존하기로 했다면 허용 가능하지 않나라는 생각도 있긴함
    • 반대의 경우에서는 알림애그리거트에서 기능애그리거트에 대한 도메인 지식을 알아야함으로
    • 기능이 알림을 아는것과 알림이 기능을 아는것에 대해서 논리적으로 어떤게 적절해보이는지 생각 필요

만약에 변경해야 한다면 고려해야할 사항

  • common으로 domainEvent를 정의해둬야할 필요 있음

    • 도메인상의 이벤트는 해당 인터페이스를 구현하도록
    • id등의 기본적인 정보만 가져오는 메서드정도만 정의
  • SSE eventListener에서는 어노테이션에서 리슨할 구체적인 이벤트들을 지정해주고, 파라미터 인자로는 DomainEvnet를 받아서 SSE 이벤트로 변환해줄 수 있도록 구현

  • 요렇게 된다면 SSE 이벤트로 변환해주는 클래스들을 어떻게 빈으로 관리할지 고민 필요 (컨버터들의 컬렉션 형태에 대한 고민 필요)

    • 성능이슈가 생기지 않도록 고민하기

주의사항

  • 각각의 장단에 대해서 더 고민해보기
  • SSE관련 기능 리팩터링 및 기능추가 이전에 빨리 결정하기
  • 만약에 기존방식 유지하기로 결정한다면 이유와 함께 이슈 클로즈하기