개요지난번 부하 테스트 결과, 상당히 안좋은 결과가 나왔다.이번 글에서는 MongoDB를 도입하여 성능을 개선하는 과정을 살펴보려 한다. [10k-Chat] Spring Boot 실시간 채팅 서버 구현 (2) - WAS 이중화개요이번 글에서는 부하 테스트 결과를 분석하고, 이를 바탕으로 WAS 이중화를 통해 성능을 개선하는 방안을 살펴보겠다.부하 테스트이미 JMeter, Locust, K6 등 좋은 도구들이 많지만 내가 원하는 기woong99.tistory.comMongoDB란?MongoDB는 NoSQL 기반의 문서형 데이터베이스로, JSON 형태의 데이터를 저장하고 빠르게 조회할 수 있도록 설계된 DBMS이다.MongoDB의 주요 특징1. 스키마리스(Schema-less) 구조RDMS와 달리 고정된 ..
개요이번 글에서는 부하 테스트 결과를 분석하고, 이를 바탕으로 WAS 이중화를 통해 성능을 개선하는 방안을 살펴보겠다.부하 테스트이미 JMeter, Locust, K6 등 좋은 도구들이 많지만 내가 원하는 기능을 모두 충족하는 툴은 없었다. 그래서 Go 언어를 통해 직접 부하 테스트 툴을 작성했다. 시나리오채팅방 입장 (Subscribe)채팅 전송 (Send)채팅 수신 완료 후 종료테스트는 30초 동안 진행되며, 1000명, 3000명, 5000명이 동시에 접속하는 상황을 테스트한다.인프라 CPU(Core)RAM(GB)WAS22DB2 4테스트 결과 테스트 결과, 1,000명의 동시 접속자인 경우 평균 1.2초의 지연 시간이 발생하며, 심하 경우 최대 4초에 가까운 지연이 확인되었다.3,000명부터는 평균..
개요이번 시리즈에서는 기초부터 차근차근 시작하여, 10,000명의 동시 접속자가 발생하더라도 안정적으로 동작하는 실시간 채팅 서버를 구현해보려 합니다. 우선, 부하 테스트를 위한 기본적인 기능만 구현된 채팅 프로젝트에 대해 설명드리겠습니다.Spring Security, JPA 등 기본적인 세팅은 되어 있다고 가정하고 진행하겠습니다.주요 코드build.gradle.ktsdependencies { // WebSocket implementation("org.springframework.boot:spring-boot-starter-websocket") // ...생략}StompInterceptorStompInterceptor를 통해 CONNECT 시 JWT Token을 받아 인증 ..