Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

refactor: 비대한 웹소켓 게이트웨이 로직을 여러개의 컨트롤러로 분리 #299

Merged
merged 2 commits into from
Jul 1, 2024

Conversation

choyoungwoo9
Copy link
Collaborator

🎟️ 태스크

백엔드 웹소켓 리팩토링

✅ 작업 내용

  • 웹소켓 로직을 여러개의 컨트롤러로 분리
  • 웹소켓 API 중 서버에서 클라이언트에게 응답/알림하는 DTO 구현

🖊️ 구체적인 작업

ex)

웹소켓 로직을 여러개의 컨트롤러로 분리

  • 웹소켓 관련 로직이 하나의 웹소켓 게이트웨이에 있었는데 이를 여러개의 컨트롤러로 만들어 분리

웹소켓 API 중 서버에서 클라이언트에게 응답/알림하는 DTO 구현

🤔 고민 및 의논할 거리

  • 기존의 코드에서는 컨트롤러의 로직이 웹소켓 게이트웨이에 있었습니다. 따라서 웹소켓 게이트웨이가 컨트롤러 계층의 역할을 수행하는게 적절한가를 고민해보았습니다.
  • 웹소켓 게이트웨이는 그야말로 웹소켓 관련 로직이 모두 들어오는 관문이라고 생각했고, 이는 컨트롤러 계층의 역할이라기 보다는 라우터의 역할을 수행한다고 생각했습니다.
  • 또한 웹소켓 게이트웨이가 컨트롤러 계층의 역할을 모두 수행하면 코드가 너무 커지는 문제점이 있었습니다. 프로젝트 네임스페이스의 웹소켓 로직이 모두 웹소켓 게이트웨이로 가기 때문에 피할 수 없는 문제이고, 분명 앞으로 점점 더 커질것입니다.
  • 따라서 프로젝트의 링크, 메모, 멤버에 대한 컨트롤러를 각각 만들고 게이트웨이는 적절한 컨트롤러로 라우팅시키는 역할을 맡게 변경했습니다.
  • 현재 게이트웨이에 인증, 인가 로직이 남아있습니다. 게이트웨이는 웹소켓에 대한 단일 진입점 역할만 하고 이외에 다른 로직은 들어가지 않는게 적절하다고 생각됩니다. 따라서 추후에 인증, 인가로직 또한 따로 컨트롤러, 서비스를 제작해 리팩토링할 계획을 가지고 있습니다.

- 웹소켓 관련 로직이 하나의 웹소켓 게이트웨이에 있었는데 이를 여러개의 컨트롤러로 만들어 분리
@choyoungwoo9 choyoungwoo9 requested a review from kimsj-git June 22, 2024 13:40
@choyoungwoo9 choyoungwoo9 merged commit 1d79137 into dev Jul 1, 2024
1 check passed
@choyoungwoo9 choyoungwoo9 deleted the refactor/heavy-websocketgateway branch July 1, 2024 02:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant