스마일게이트 윈터데브캠프에서 채팅 애플리케이션을 개발하였다.
채팅 애플리케이션을 개발하기로 한 이유는 팀원들 간 회의를 통해 도출된 공통 목표에서 나오게 되었다.
공통 목표
- 경험해보지 못한 아키텍처와 기술들을 활용하여 문제 해결에 대한 폭을 넓힌다.
- 양방향 소켓 통신에 대한 경험 X
전체 서버의 아키텍처는 MSA를 기반으로 구성하였으며, 채팅 서버는 scale out 가능한 구조로 구성하고자 했다.
전체 구조는 아래 그림과 같다.
이번 프로젝트에서 서비스 레지스트리, 게이트웨이, 인증 서비스, 유저 서비스, 푸시 서비스는 내가 맡게 되었다.
추후 각 서비스 별 주요 내용을 정리할 예정이다.
실제 상호작용하는 부분이 추가된 상세화된 아키텍처는 아래와 같다.
전체 사용 스택은 Spring Boot, Spring Cloud, Stomp(Web Socket), Kafka, Redis, FCM 이다.
공통 목표에 따라 웹 소켓을 위해 Stomp와 Kafka(메시지 브로커에 웹 소켓 연결)를 활용하였으며,
Spring Cloud , FCM, Redis와 같은 경험해보지 못한 기술들을 사용하였다.
기술 스택
- Spring Boot : 서버 구현
- Spring Cloud : 게이트웨이 및 서비스 레지스트리
- Kafka : 메시지 브로커
- FCM : 푸시 알림 전송
- Redis : 캐시 (인메모리 데이터 저장)
데이터 저장
- MongoDB : 채팅 데이터 저장
- MySQL : 유저(+인증) 데이터
- Redis : refresh token, 이메일 인증 코드(Time To Live, TTL 적용)
실제 배포한 아키텍처는 아래와 같다.
서버 운영 목적에서 배포하기 보다 IOS,Android 개발자들의 연동테스트가 목적이었기 때문에 간소화 시켜 EC2에 우겨 넣는 형태를 활용했다.
외부에 배포된 것은 AWS RDS(MySQL)과 Atlas(MongoDB), AWS S3(이미지, 동영상 메시지를 위한 스토리지)가 있다.
배포와 관련하여 다음에 상세히 예정이다.
'프로젝트 > 스마일게이트 윈터데브캠프' 카테고리의 다른 글
[윈터데브캠프] 팀 프로젝트 - 유저, 푸시 서버 (0) | 2023.04.03 |
---|---|
[윈터데브캠프] 팀프로젝트 - 인증 (게이트웨이, 인증 서버) (0) | 2023.04.03 |
[윈터데브캠프] 팀프로젝트 - API,DB (+요청/응답, 포트) (0) | 2023.04.03 |
1인 프로젝트 - MSA 기반 인증서버 개발 (0) | 2023.02.19 |