- 180개 국가에서 대규모의 사람이 이용하는 WhatsApp채팅 앱 서비스를 오마주한 채팅 서비스
- 현대 사회에 필수불가결한 메신저 어플의 대용량 데이터 발생과 이로 인한 부하를 견뎌내기 위해 필요한 대책을 직접 리서치 및 적용
- 채팅 메세지 전송/수신 max 1000ms
- 채팅 메세지 영구 저장
- 실시간 서버 모니터링
- 스케일 아웃 가능한 서버
- 단계별로 아래의 테스트 조건들을 상향시키면서 에러율과 최대지연시간의 결과와 원인을 분석하며 성능 개선
- 동시간대 접속 유저 : 100~5000명
- 초당 보내는 채팅 수 : 100~5000개
- 분당 보내는 총 채팅 수 : 6000~300,000개
- 응답 시간 제한 : 1000ms, 2000ms
- 분당 최대 300000건의 데이터들을 수용하기 위한 DB 성능 개선
- 경제적이고 효율적인 DB선정을 위한 데이터베이스 시스템 분석
- MySQL
- MongoDB
- Cassandra
- 검색 성능 개선
채팅 | 전자지갑 |
---|---|
![]() |
![]() |
Jmeter 테스트 | 모니터링 |
---|---|
![]() |
![]() |
요구사항 | 선택지 | 핵심 기술을 선택한 이유 및 근거 |
---|---|---|
실시간 채팅 | Web socket, Http Polling | - 서버가 클라이언트에게 비동기 메시지를 보낼 때 가장 널리 사용하는 기술입니다. 양방향 메시지 전송까지 가능합니다. |
부하테스트 | JMeter, nGrinder | - JMeter 선택: 소켓 통신 테스트를 위해 사용되며 다양한 플러그인과 확장 기능을 제공하여 문제 해결이나 도움을 받기 용이한 도구입니다. |
메세지 큐 | Kafka, RabbitMQ | - Kafka 선택: 비동기적으로 대용량의 데이터를 처리할 수 있는 메세지 큐로서 Producer와 Consumer를 가지고 있어 데이터의 정합성을 보장할 수 있습니다. 대규모 데이터 처리에 강점을 가진 기술입니다. |
모니터링 | Grafana, Prometheus | - Grafana 선택: 지표를 시각화하는데 특화된 도구로서 모니터링 환경 구축에 적합합니다. 시각적으로 정보 파악이 용이하며 다양한 대시보드와 알림 설정 등의 기능을 제공합니다. |
배포 환경 구성 | Docker Compose, Docker Swarm, Kubernetes | - Docker Compose 선택: 단일 호스트에서 비교적 간단한 애플리케이션 실행에 사용됩니다. Docker Swarm과 Kubernetes는 클러스터 환경에서 컨테이너 오케스트레이션과 관리를 위해 선택될 수 있는 옵션입니다. 프로젝트의 규모와 요구사항에 따라 결정되어야 합니다. |
ERD 펼쳐보기
[- [🐬version 0.1]
아키텍쳐 | 성능 테스트 |
---|---|
![]() |
![]() |
- [🐒version 0.2]
아키텍쳐 | 성능 테스트 |
---|---|
![]() |
![]() |
- [🐅version 0.3]
아키텍쳐 | 성능 테스트 |
---|---|
![]() |
![]() |
---## 팀원 👨👩👦👦
역할 | 이름 | 담당 | github |
---|---|---|---|
팀장 | 최선효 | https://github.com/cornpip | |
팀원 | 추광현 | https://github.com/KH-CHOO | |
팀원 | 강영준 | - 회원가입, 로그인 구현, Interceptor를 활용한 Jwt 토큰 인증 - Web socket, Stomp를 활용하여 실시간 채팅 구현 - 스케줄러를 이용하여 예약송금 구현 - 채팅 데이터베이스 MongoDB로 변경하여 성능개선 - 메세지 큐로 Kafka를 활용하여 채팅의 DB저장과 Publish 분리하여 성능개선 |
https://github.com/Kkangjn |
팀원 | 한정은 | - Contact api 구현 - prometheus, grafana를 활용하여 모니터링 구현 - docker compose를 활용하여 배포 환경 구성 - dockerfile을 활용하여 github action으로 docker image 생성 및 ci/cd 구축 - jmeter 통한 websocket의 부하테스트 |
hanjungeun0909 (github.com) |