목차
- 느낀 점
- 진행 내용
- 진행 과정
느낀 점
진행 내용
- MVP(Minimum Viable Product) 설정
- Develop Branch 생성
- Chat 모듈 구현
진행 과정
MVP(Minimum Viable Product) 설정
문제: 너무 많은 기능을 구현하려고 하다 보니 진행이 되지 않음
- 사용할 줄 모르고, 먼 훗날에 사용할 것 같은 기능을 구현하려고 하다 보니 진행이 되지 않았다.
- kubernetes, message queue, etc…
- 해당 기술들의 필요성이나 장점에 대한 인식도 모자랐다.
해결 방법
- MVP를 설정하여 필요한 기능만 구현하도록 목표를 재설정했다.
- MVP: 사용자가 최소한으로 사용할 수 있는 제품
- 재설정한 목표
- User 관련: 로그인, 회원가입
- Chat 관련: 채팅방 생성, 채팅방 입장, 채팅방 메시지 전송
- Log 관련: 채팅방 로그 저장, 채팅방 로그 조회
Develop Branch 생성
문제: Main Branch 이전에 병합을 통한 확인이 필요
- Main Branch는 실제로 배포를 해야하기 때문에 가능한 안정적인 코드가 들어가야 한다.
- Main Branch 이전에 작성한 모듈들 간에 호환성 확인 및 통합을 위한 중간 Branch가 필요를 체감.
해결 방법
- Develop Branch를 생성하여 Main Branch 이전에 코드를 병합하여 확인하도록 하였다.
- Main Branch와 달리 Develop Branch는 Admin은 직접 코드 수정이 가능하도록 해 개발 진행 속도를 올릴 수 있도록 함.
Chat 모듈 구현
진행 과정
최초에는 참고자료 없이 직접 구현 시도. 이 과정에서 다음과 같은 것들을 구현 및 수정하였다.
- Room과 Client 객체를 구현
- Room: 채팅방을 나타내는 객체
- 사용자를 추가, 제거
- 메시지 전송
- Client: 채팅방에 참여하는 사용자를 나타내는 객체
- 웹소켓을 소유
- loginSessionID를 통해 구분(userID로 구분이 나은가?)
- 메시지 전송
- Room: 채팅방을 나타내는 객체
- connect, disconnect 이벤트를 구현
- connect: 클라이언트가 채팅방에 입장
- disconnect: 클라이언트가 채팅방에서 퇴장
의문점
- 방 관련
- 방들은 어느 자료구조로 저장해야하는가?
- 저장하는 장소는 file인가 메모리인가?
- 메모리에 저장한다면 서버가 감당할 수 있는 크기는 어느 정도인가?
- 이것을 별개의 서버로 감당하게 하는 것이 좋은가?
- 클라이언트 관련
- 웹소켓은 얼마나 오랫동안 유지해야하는가?
- 연결이 끊어질 경우 Client 객체를 삭제해야하는가?
- Client 객체를 만들고 삭제하는 것의 부하는 어느 정도인가?
- Client 객체는 방과 마찬가지로 어떻게 관리해야하는가?
진행 예정 사항
다른 다중 채팅 프로그램이 구현된 오픈소스를 공부해보는 시간을 가질 예정
2024-03-29