본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://fastcampus.info/4n8ztzq
안녕하세요 :)
오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 " 챌린지에 도전하는 다섯번째 날입니다.
네번째 날에는 대용량 트래픽 대응에 필요한 선택에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.
오늘 학습할 내용의 제목은,
Part 1.프로젝트 개요와 목표 >
05. 앞으로 사용할 기술 스택에 대한 소개와 이번에는 다루지 않는 것들
입니다.
- 이번 프로젝트에서는 Java 17 을 사용하고, 서버와 클라이언트 모두 단위 테스트를 위해서 Spock 를 사용함. Test Double 과 Data Driven Testing 등 좋은 기능이 많이 있음. 다만, Groovy 기반이라서, 테스트 코드를 작성하기 위해서 Groovy 를 사용함.
- 그리고 채팅 서버는 Spring Initializr 에서 바로 생성 가능한 Spring Boot 3.4 를 사용함. Rest API, WebSocket, Security, Session, JPA 등 다양한 모듈을 사용함. 클라이언트와 통신에는 인증을 위해서 Rest API 를, 그 외의 모든 통신은 WebSocket 을 사용함. 프로토콜은 STOMP 를 사용하지 않고 JSON 형식을 사용해서 채팅에 필요한 모든 프로토콜을 직접 구현함. 프로젝트 초반에 Rest API 테스트를 위해서 Swagger 를 조금 사용하고, 웹 소켓 테스트를 위해서 Postman 을 사용함.
- 데이터 저장을 위해서 MySQL 을 사용하고 JPA 를 같이 사용함. 세션 관리와 데이터 캐싱, 메세지 시퀀스 아이디 생성을 위해서 Redis Cluster 를 사용함. 서버 간 데이터 String 을 위해서 Kafka Cluster 를 사용함.
- 그리고 이번에 다루지 않는 내용에 대해서 이야기 하겠음. 우선 푸시 서버를 목킹함. 메세지 서버는 오프라인 사용자에 대해서 푸시 메세지 알림을 정상적으로 처리하지만, 푸시 서버는 실제 알림을 발송하지는 않고 로깅으로 대신함. 참고로 실제 푸시 서버를 발송하려면, APNs 와 FCM 등을 연동해서 푸시 알림을 받을 수 있는 모바일 디바이스가 필요함. 이런 제약 조건으로 인해서 푸시 서버는 목킹으로 구현함.
- 오늘은 앞으로 프로젝트를 진행하면서 사용할 기술 스택에 대해서 간단히 소개 받는 시간이었습니다. 이렇게 앞으로 이번 프로젝트에서 사용할 기술 스택에 대해서 정리를 했고, 다음 시간에는 앞으로 사용할 개발 환경 설정을 같이 해보도록 할 예정입니다.