본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://fastcampus.info/4n8ztzq
안녕하세요 :)
오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판" 챌린지에 도전하는 마흔 아홉번째 날입니다.
마흔 여덟번째 날에는 Docker Compose를 사용한 로컬 Consul 클러스터와 Nginx 다중 인스턴스 구성에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.
오늘 학습할 내용의 제목은,
Part 6. 완성한 채팅 프로젝트 리뷰 > Ch 1. 완성한 채팅 프로젝트 리뷰 >
01. 우리는 무엇을 공부했나
입니다.
📚 우리는 무엇을 공부했나
- 이번 글은 채팅 프로젝트의 마지막 파트, 여섯 번째 리뷰입니다.
- 그동안 진행했던 과정을 되돌아보며 무엇을 공부했고 어떤 성과를 얻었는지 정리해보겠습니다.
🏗️ 프로젝트의 시작과 확장
- 처음에는 단일 서버, 단일 DB에서 시작했습니다. 단순히 메시지를 주고받는 기능처럼 보였지만, 실제 구현을 진행하면서 고려해야 할 예외 상황과 처리해야 할 이슈가 많다는 것을 알게 되었죠. 이 과정에서 기능을 확장하고 시스템을 점차 고도화했습니다.
👥 사용자와 세션 관리
- 친구 관계 맺기, 수락·거절·끊기 기능 구현
- 서버 세션 상태를 외부로 분리해 스케일 아웃 및 장애 대응 가능하도록 개선
💾 데이터베이스 확장
- DB 리플리카 구성으로 고가용성 및 부하 분산 확보
- 멀티 데이터 소스 라우팅 처리
- Redis 세션 → 캐시 레이어로 확장하여 DB 부하 감소
- DB 샤딩 구성으로 부하를 분산 처리
🌐 서버 구조의 발전
- 인증 서버, 커넥션 서버, 메시지 서버, 푸시 서버로 역할 분리
- Nginx LB를 도입해 부하 분산 및 서비스 안정화
- Kafka 연동으로 서버 간 의존성 없이 확장 가능
- 서비스 디스커버리 도입으로 Nginx도 스케일 아웃 지원
➡️ 결과적으로 모든 서버가 독립적으로 스케일 아웃 가능한 구조를 완성했습니다.
🧩 학습 방법과 성과
- 기능 도입 전 항상 작은 예제를 만들어 학습 후 본 프로젝트에 적용
- 약 10여 개 이상의 예제를 통해 기술을 검증하며 진행
- 프로젝트는 5개 모듈(인증·커넥션·메시지·푸시·클라이언트)로 확장
- 총 12,000라인 코드 규모로 성장
- 인프라는 22개의 컨테이너, 8개의 서버 인스턴스(총 30개) 로 구성
- 이 프로젝트를 통해 느낀 점은 "작은 단위의 학습을 쌓아올려 큰 시스템을 완성한다" 는 접근법이 매우 효과적이었던 것 같습니다. 단순한 채팅이라는 도메인을 선택했지만, 이를 통해 세션 관리, DB 확장, 서버 분산, 메시징 시스템, 서비스 디스커버리 등 실제 서비스에 필요한 핵심 요소들을 경험한 것 같고, 앞으로는 이 경험을 토대로 다른 도메인에도 같은 원리를 적용하고, 새로운 기술과 비교하면서 더 나은 아키텍처를 설계할 수 있을 것이라 생각합니다.