[Spring Boot] WebSocket 을 사용하여 채팅 서비스 구현하기(4) - 채팅 서비스 성능 개선 및 부하 테스트
·
Back-End/Spring
들어가며야구 직관 서비스 CATCH-Mi 프로젝트에서 실시간 채팅 서비스를 구현한 경험을 기록하고 복습하기 위해 본 글을 작성합니다. 이번 포스팅에서는 현재 CATCH-Mi 채팅 서비스의 문제점과 잠재적인 장애 요소를 고민하고, 이에 대한 성능 개선 과정과 Jmeter를 통한 성능 테스트 결과를 비교해 보겠습니다. SpringBoot와 웹소켓을 통해 채팅 서비스 구현과정이 궁금하신 분은 이전 글을 참고해 주세요! [Spring boot] WebSocket 을 사용하여 채팅 서비스 구현하기(3) - STOMP를 사용하여 실시간 채팅 구현 (비들어가며야구 직관 서비스 캐치미 프로젝트에서 실시간 채팅 서비스를 구현한 내용을 기록 및 복습의 목적으로 본 글을 포스팅합니다. 이번 포스팅에서는 STOMP 프로토콜..
[Spring boot] Redis Cache를 적용한 조회 성능 개선
·
Back-End/Spring
들어가며현재 진행 중인 프로젝트의 채팅 기능에서 채팅 내역 조회가 빈번하게 발생하고 있습니다. 사용자가 매번 채팅을 조회할 때마다 데이터베이스에 직접 접근한다면, 사용자가 많아질 경우 데이터베이스에 큰 부하가 가해져 전체적인 서비스 성능이 저하될 수 있습니다. 특히, 채팅 서비스는 실시간으로 데이터가 생성되고 조회되는 특성을 가지고 있기 때문에, 데이터베이스의 부하를 줄이고 빠른 응답 속도를 제공하는 것이 중요합니다. 이러한 문제를 해결하기 위해 캐싱(Caching) 기능을 도입하기로 결정했습니다. 캐싱은 자주 조회되는 데이터를 임시 저장소에 저장해 두고, 동일한 요청이 들어왔을 때 데이터베이스에 접근하지 않고 캐시에서 빠르게 데이터를 제공하는 기술입니다. 이를 통해 데이터베이스의 부하를 줄이고, 사용자..
[Spring boot] No Offset 적용한 페이징 성능 개선 - MongoDB
·
Back-End/Spring
들어가며CATCH-Mi 서비스의 성능 개선을 진행하면서, No Offset Pagination을 통해 페이징 기능을 효과적으로 개선할 수 있다는 것을 알게 되었습니다. 이번 글에는 기존 Offset 방식과 No Offset 방식의 장단점을 비교하고, 실제 서비스에 No Offset 방식을 어떻게 적용했는지 코드와 함께 그 과정을 정리해보고자 합니다. 페이지네이션이란 ?페이지네이션(Pagination)은 대량의 데이터를 효율적으로 조회하기 위해 데이터를 일정한 크기(Page)로 나누어 조회하는 방식입니다. 이를 통해 사용자는 한 번에 모든 데이터를 처리하지 않고, 원하는 부분만 빠르게 조회할 수 있습니다. 페이지네이션은 웹 애플리케이션, 모바일 앱, API 등 다양한 환경에서 널리 사용되고 있습니다.  O..
[Spring boot] MySQL → MongoDB 마이그레이션 과정
·
Back-End/Spring
들어가며이번 포스팅에서는 MySQL로 구현된 채팅 데이터베이스를 MongoDB로 마이그레이션 하고, bwildvogel 라이브러리를 사용하여 스프링 내장 MongoDB를 띄워 테스트 코드를 구현하는 과정을 다뤄보겠습니다. 이미 JPA로 구현된 엔티티를 MongoDB로 마이그레이션 하는 이유는 데이터베이스의 스키마가 자주 변경되어 유연성이 필요하거나 관계형 데이터베이스가 필요 없는 경우 등 여러 가지가 있을 수 있습니다. 기존에 MySQL로 저장된 채팅 데이터베이스를 MongoDB로 마이그레이션 한 이유는 크게 두 가지입니다. 1. 유연성과 스키마 변경의 용이성채팅 서비스는 기능 추가나 요구사항 변경에 따라 데이터 구조가 자주 바뀔 수 있습니다. MongoDB는 스키마리스(NoSQL) 데이터베이스로, 이러..
[Spring boot] WebSocket 을 사용하여 채팅 서비스 구현하기(2) - 채팅 데이터베이스 설계하기
·
Back-End/Spring
들어가며야구 직관 서비스 캐치미 프로젝트에서 실시간 채팅 서비스를 구현한 내용을 기록 및 복습의 목적으로 본 글을 포스팅합니다. 이번 포스팅에서는 캐치미 채팅 서비스의 도메인 규칙에 따라 채팅 데이터베이스를 설계한 경험을 다뤄보려고 합니다. 소켓과 웹소켓, STOMP 프로토콜에 대한 개념, HTTP 통신과의 차이점의 차이점을 알고 싶은 분은 이전 글을 참고해 주세요! [Spring boot] WebSocket 을 사용하여 채팅 시스템 구현하기(1) - 웹소켓(WebSocket), STOMP 이해하기들어가며야구 직관 서비스 캐치미 프로젝트에서 실시간 채팅 서비스를 구현한 내용을 기록 및 복습의 목적으로 본 글을 포스팅합니다. 이번 포스팅에서는 소켓과 웹소켓, STOMP 프로토콜에 대한tenaciousl..