오랜만에 작성하는 TIL
TCP 학습에 들어간 이후로 TIL을 작성할 시간이 도무지 나질 않았다.
오늘로, CH 5 팀 프로젝트가 마무리 되었으며, 관련 내용을 작성하려한다.
과제의 목표는 완성된 클라이언트에 TCP 서버를 붙이는 것이다.
덩그러니 놓여있는 클라이언트에, 이제 서버를 만들어서 붙여야 하는 내용이다.
이번 프로젝트의 팀장을 맡게 되었으며, 파트는 회원가입과 로그인 구현 !!
사실, 로그인과 회원가입은 이전 프로젝트에서도 늘 있던 기능이며,
차이점이 있다면 POST 같은 REST API 로 구현하는 것이 아닌,
그저 TCP 통신간의 패킷 주고받음을 통해 구현되어야 한다는 것.
본질은 굉장히 다르지만 코드는 크게 다르지 않다.
더 볼 필요도 없이,
그저 payload 를 통해 클라이언트 에게 받은 패킷을 문자열로 파싱한 뒤에
알아서 회원가입 스럽게 처리하면 된다 !
클라이언트가 어떻게 보내는줄 알고?
이미 완성된 클라이언트 이기 때문에, 어떻게 패킷을 받고 보내는지는
패킷 명세를 통해 정해 놓았다.
로그인을 통해 날아오는 payload 는 id, password , email 세 개의 데이터 라는 것이다.
물론 파싱 과정은 Proto.buffer 를 이용하여 진행
나는 payload 로 받은 id, password , email 세 개를 가지고
회원가입을 처리하는 기능을 구현하면 된다.
회원가입된 user 의 데이터는 Mysql - AWS RDS 에 저장할 계획이었기 때문에,
적절히 Joi 를 사용해 유효성 검사를 진행 한 뒤
DB 에 동일한 id 로 저장된 데이터가 있는지 체크한 후
bcrypt로 해싱하여
DB에 넣어주고
다시 Proto.buffer 를 통해 buffer 형태로 변환하여 연결되어있던 socket 으로 보내면 끝 !
클라이언트에 어떤형태로 보내는지?
마찬가지로 패킷 명세에 클라이언트가 어떤 형태로 패킷을 받는지도 정해져있다.
로그인은 ... 생략한다. 회원가입과 크게 다르지 않다.
본문은 아래 부터다.
이번 과제를 진행하며 마주한 가장 큰 벽은 Redis의 적용 이었다.
레디스 사용의 목적
위는 발표PPT 의 일부분이다. (제가 작성한 부분임 !!)
아무래도, 360ms 라는 지연시간은 사용자 이슈일 확률이 높지만 ,
결과적으로는 Redis 적용을 철회하고 기존 계획인 인메모리만을 사용한 형태로 과제가 제출되었다.
그럼 결국 실패했고, 얻은것이 없는가?
기본적으로 Redis 를 적용하기 위해 몸부림친 결과,
사용방법에 대해 어느정도 파악 할 수 있었고,
Redis 가 어떤 자료구조를 가지는지,
어떤 부분에서 강점이 있는지는 파악 할 수 있는 시간이었다.
game 세션에 해당하는 부분을 Hash 형태로 넣어 보았다.
실제로, 구현은 완료되어 테스트 까지 잘 진행되는 상태이다.
다만, Redis 파악과 테스트를 위해 혼자서 작업을 진행하다 보니,
Redis 계획 자체가 너무 개인적인 행위가 되어버렸고,
다른 팀원이 작업한 파트를 뒤집어가며 작업했기 때문에 그대로 제출 할 수는 없었다.
다시 되돌아와서 팀적으로 각자 파트에 Redis 적용을 하기에는 시간이 부족했다.
아쉽긴 하지만 절대 낭비된 시간은 아니다.
앞으로 Redis를 어떻게 써야할 지 학습한 시간이 되었다.
라고 하기 무섭게 발표 당일, 다음 최종 프로젝트가 발제되었다.
앞으로는 트랙 종료까지 모든 시간을 최종 프로젝트에 쏟아햐 한다.
'내일배움캠프' 카테고리의 다른 글
타워 디펜스 온라인 - 회고 (0) | 2024.11.12 |
---|---|
24.11.01 TIL 멀티플레이 과제 트러블슈팅 (0) | 2024.11.01 |
24.10.24 TIL 삼각함수 (0) | 2024.10.30 |
24.10.24 TIL 위치 동기화 (0) | 2024.10.24 |
24.10.23 TIL 기본 세팅 (0) | 2024.10.23 |