Skip to content

soyoungpark-me/team-project-DNA

Repository files navigation

DNA (Dear, Nearby Anyone)

소개 이미지

  • 2018년 2학기의 졸업작품 프로젝트를 위한 저장소입니다.
  • README에 개발하면서 힘들었던 점, 깊게 고민이 필요했던 점 등에 대해 일지 형식으로 기록하고 있습니다.

목차


프로젝트 소개

"특별한 이벤트가 일어나는 공간에 있는 사람만 느낄 수 있는 감정과 생각을, 부담없이 공유할 수 있는 서비스를 만들어 보고 싶습니다."

포스터

  • 발표 자료 : DNA_project

  • 실시간이면서 다량의 요청이 들어오는 서비스를 개발해 보고 싶었고, 만들고 직접 써보기에 재미있는 주제를 정해 최대한 완성도를 높여서 완성하고, 실제로 배포까지 해보는 것을 목표로 주제를 잡았습니다.

  • 현 위치를 기준으로 지정한 반경 내에서 작성된 채팅만 보여주는 서비스로, 이 외에도 포스팅, 친구, DM 등 다양한 기능들이 기획되어 있습니다.


프로젝트 아키텍처 구조도

2018.09.01 : 성능 개선 전

아키텍처 구조1

기능 구현을 모두 완료한 상태의 구조입니다.

2018.09.17 : 성능 개선 후

아키텍처 구조2

프로젝트를 모두 끝낸 이후 상태의 구조입니다.

  • 2018.09.09 : AWS lambda 추가
  • 2018.09.11 : RabbitMQ 추가
  • 2018.09.17 : Socket Server Scale out

스크린샷

회원가입

회원가입

회원가입 후 로그인을 통해 서비스를 이용할 수 있습니다!

위치 기반 채팅

채팅

프로젝트의 메인 기능으로, 특정 반경 내의 유저들과 메시지를 주고 받을 수 있습니다.

DM (Direct Message)

DM

친구로 추가한 사용자들과는 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