우선, 난 golang 을 이용해 소켓서버부터 개발하기로 했다. 그 후, 얼굴 인식 로그인 기능을 구현하였다.
먼저, 백엔드 개발을 처음 경험하였고 그렇기에 자신있는 언어도 없었다. 따라서 빠르게 공부해서 개발에 사용할 수 있는 언어를 고르기로 하였다. 그 후보로 golang 과 python 이 있었으나 golang 이 기본 http 라이브러리가 잘 구성되어 있고 문법이 간결하며, 팀 프로젝트를 하는데에 유리하다는 점에서(컨벤션 통일) golang 을 선택하였다.
소켓서버는 클라이언트의 모든 아바타 상태 동기화를 위해 기획되었다. golang 진영의 gorilla/websocket을 사용했고, Building a TCP Chat in Go를 참고해 기본 틀을 구현하였다.
또, 클라이언트 측에서 요청을 보내고 응답을 받는 api 서버이기도 하므로 API 명세를 팀 노션에 정의하였다.
그림1. 소켓 서버의 역할 및 작동 원리
그림2. 소켓서버 요청/응답이 Json 바디를 통해 이루어지는데, 그 명세를 정의하였다.
그림3. '그림2'의 명세를 그림으로 표현한 것.
go언어, 웹소켓, json 문서, api 등 모두 실제로 처음 사용해보았다 (개념은 배웠었지만..). 그래서 공부를 하다보면 블락되는 경우가 많았던 것 같다. 그래서 실제 구현물에 비해 시간이 많이 늦어지기도 했다. 효율적으로 공부하기위해 팀 위키를 만들어 관리하고 일주일에 한 번 지식동기화를 꾀하는 세미나를 여는 등 갖가지 노력을 하였다.
물론 개인적으로 정리한 부분도 있지만, 이는 차후 포스팅 하기로 한다.