- 2018년 2학기의 졸업작품 프로젝트를 위한 저장소입니다.
- README에 개발하면서 힘들었던 점, 깊게 고민이 필요했던 점 등에 대해 일지 형식으로 기록하고 있습니다.
-
발표 자료 : DNA_project
-
실시간이면서 다량의 요청이 들어오는 서비스를 개발해 보고 싶었고, 만들고 직접 써보기에 재미있는 주제를 정해 최대한 완성도를 높여서 완성하고, 실제로 배포까지 해보는 것을 목표로 주제를 잡았습니다.
-
현 위치를 기준으로 지정한 반경 내에서 작성된 채팅만 보여주는 서비스로, 이 외에도 포스팅, 친구, DM 등 다양한 기능들이 기획되어 있습니다.
기능 구현을 모두 완료한 상태의 구조입니다.
프로젝트를 모두 끝낸 이후 상태의 구조입니다.
- 2018.09.09 : AWS lambda 추가
- 2018.09.11 : RabbitMQ 추가
- 2018.09.17 : Socket Server Scale out
회원가입 후 로그인을 통해 서비스를 이용할 수 있습니다!
프로젝트의 메인 기능으로, 특정 반경 내의 유저들과 메시지를 주고 받을 수 있습니다.
친구로 추가한 사용자들과는 1:1로 DM을 주고 받을 수 있습니다.
프로젝트에서 저는 인증 구현, 서버 개발, 웹 클라이언트 개발, 안드로이드 클라이언트 UI 개발을 담당했고, 주요 기술로 Node.js와 Socket.IO, 데이터 베이스로 MongoDB, 세션 저장소로 Redis, 웹 프레임워크로 React를 사용했습니다.
개발하면서 고민이 필요했던 부분, 추가적으로 공부가 필요했던 부분들에 대해 일지 형식으로 기록했습니다.
직접 부딪히며 공부해 적용한 기술들이라 틀린 부분이 있을 수 있습니다! (많이 틀렸을 것 같습니다...)
번호 | 날짜 | 내용 (링크) |
---|---|---|
01 | 2018.08.01 | JWT로 인증 서버 구현하기 |
02 | 2018.08.06 | Jenkins, Docker로 지속적 배포(CD) 도전하기 |
03 | 2018.08.08 | MongoDB와 Mongoose를 이용한 위치 기반 서비스 개발 (작성중) |
04 | 2018.08.09 | MongoDB에 AWS ElasticSearch, Kibana 연동하기 |
05 | 2018.08.13 | https 환경 구축하기 |
06 | 2018.08.15 | 라즈베리파이로 서버 구축하기 |
07 | 2018.08.20 | 리액트로 웹 프론트엔드 구현하기 |
08 | 2018.08.22 | 실시간 서비스를 위해 socket.io 이용하기 |
09 | 2018.08.24 | Redis의 Geo API 사용하기 (작성중) |
10 | 2018.08.28 | 배포와 함께 CORS 문제 극복하기 |
11 | 2018.08.31 | 주요 기능의 백엔드 개발을 끝마친 후기 |
12 | 2018.09.05 | 채팅 서버의 성능 개선을 위한 부하 테스트 |
13 | 2018.09.09 | 성능 개선 1) AWS Lambda를 이용한 서버리스 이미지 리사이징 |
14 | 2018.09.11 | 성능 개선 2) RabbitMQ를 통해 소켓 서버 기능 분할하기 |
15 | 2018.09.14 | 성능 개선 3) 타일 도입! Redis 내의 모든 세션을 끌고 오지 말자 |
16 | 2018.09.17 | 성능 개선 4) HAProxy를 통한 SocketServer의 ScaleOut |