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

Api: ✨ 채팅방 생성 API #173

Merged
merged 42 commits into from
Oct 12, 2024
Merged

Conversation

psychology50
Copy link
Member

작업 이유

image

  • 사용자는 채팅방을 생성할 수 있다.

작업 사항

해당 UseCase는 2-Stage로 구성됩니다.
이렇게 되어야 하는 이유는 채팅방 이미지 S3 저장 경로 때문인데, 기존 플로우라면 다음과 같이 진행해야 마땅합니다.

1. 사용자가 사진을 선택한다.
2. 선택한 사진을 S3에 저장한다.
3. image_url을 포함한 채팅방 정보를 API로 전송한다.
4. 채팅방 정보를 저장한다.

그러나, 저희의 채팅방 이미지 경로에는 chat_room_id가 포함되어 있습니다.
즉, 클라이언트는 "채팅방을 생성한 후에 이미지를 저장 가능"하다는 모순에 빠지게 되었습니다.

이제 와서 경로를 수정하는 것은 작업을 너무 지연시킬 우려가 있기 때문에, 플로우를 다음과 같이 수정했습니다.

1. 사용자가 사진을 선택한다.
2. 사진 정보 이외의 모든 정보를 API로 전송한다.
3. API는 채팅방 정보를 캐싱하고, 생성될 `chat_room_id`를 반환한다. (5분 간 유효)
4. 클라이언트가 사진을 S3에 저장한다.
5. API로 사진 데이터를 마저 전송하여, 저장을 확정 짓는다.  

리뷰어가 중점적으로 확인해야 하는 부분

  • 다 만들었다가 마지막에 갑자기 플로우가 이상함을 알게 되어, 갑자기 수정하느라 line 수가 굉장히 많습니다.
    • 근데 거의 다 domain 새로 만들고, 캐싱할 entity 추가 생성하는 코드 때문이라 이해가 어려운 수준은 아닙니다.
  • 캐싱된 정보로 채팅방 정보를 확정지을 때, 캐싱 데이터를 제거하는 플로우는 의도적으로 수행하지 않았습니다.
    • 어차피 클라이언트 측에서 해당 정보를 다시 열람할 수 있는 방법이 없으며, 5분 뒤에 자동 삭제 됩니다.
    • 설령 새로운 채팅방을 생성하더라도, userId를 key로 캐싱하기 때문에 데이터를 덮어쓰게 되므로 문제가 없습니다.
  • 채팅방 제목, 설명의 문자열 길이 제한은 임시로 정한 것이고, 추후 디자인 팀과 다시 상의해봐야 할 문제입니다.

발견한 이슈

  • 생각보다 개발이 너무 지연되어서, 충분한 테스트 케이스를 작성하지 못 했다는 점이 살짝 우려스러운 점.

@psychology50 psychology50 added the enhancement New feature or request label Oct 12, 2024
@psychology50 psychology50 self-assigned this Oct 12, 2024
@psychology50 psychology50 merged commit 7650f4a into dev Oct 12, 2024
1 check passed
@psychology50 psychology50 deleted the feat/PW-575-create-chat-room branch October 12, 2024 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant