콘서트 티켓 프로젝트 (4) 썸네일형 리스트형 활성/비활성 사용자 구분 후 비활성 사용자 웹소켓 연결 끊김 처리 1. 개요- 콘서트 티켓 프로젝트에서는 사용자에게 웹소켓 연결을 제공합니다. 그런데 사용자의 웹소켓 연결이 끊어지게 되는 경우가 있는데, 이 경우는 2가지 케이스로 나누어집니다. (1) 사용자가 일시적인 네트워크 이상으로 연결이 끊어지는 경우 (2) 사용자가 서비스에서 이탈한 경우 - 그리고 서버는 이 두 가지 케이스를 구분해서 서로 다른 조치를 취해야 합니다. (1)의 경우에는 사용자 세션 정보나 대기열 정보, 5분 좌석 선점 예약 등을 그대로 유지해야 하고, (2)의 경우에는 사용자 세션 정보나 대기열 정보, 5분 좌석 선점 예약 등을 삭제해야 합니다. - 그리고 이 구분을 위해서는 사용자가 웹소켓으로 연결되는 경우, 헬스체크 데이터를 지속적으로 수집하여 서버에서 관리해야 합니다... Websocket과 Redis Pub/Sub을 활용한 대기열->활성화열 전환 알림 시스템 1. 개요- 콘서트 티켓 프로젝트에서는 부하 조절을 위해 콘서트 대기열 기능을 제공합니다. 대기열에 있는 사용자는 주기적으로(예: 10초마다) 활성화열로 이동하며, 이때 토큰 활성화 알림을 받습니다. 사용자는 토큰 활성화 알림을 통해 티켓 예약 가능 여부를 확인하고, 예약을 진행할 수 있습니다.2. 기술 스택- 이 시스템은 WebSocket과 Redis Pub/Sub을 활용하여 구현되었습니다.3. 동작 방식사용자 대기열 등록사용자가 콘서트 티켓을 예매하려 하면 대기열에 등록됩니다.주기적 활성화열 이동일정 주기(예: 10초)마다 일부 사용자가 대기열에서 활성화열로 이동합니다.활성화열의 최대 인원은 5천명입니다.WebSocket을 통한 알림 전송Redis Pub/Sub을 이용하여 활성화된 사용자 목록을 .. [#1] 서버 성능 개선하기 - 웹소켓 연결 테스트 개요-기획한 콘서트 대기열 기능을 완성하고, k6를 통해 Load Test를 진행했습니다. -위와 같이, Spring, Websocket 서버는 각각 이중화를 하고, Redis, Kafka는 별도의 인스턴스로 분리하였습니다. 그리고 Nginx로 로드밸런싱을 하고, 분산 환경에서 어플리케이션 모니터링을 위한 Pinpoint를 배포하였습니다. - Load 테스트는 K6로 수행하고, 성능 테스트의 결과는 Prometheus에 적재하여 Grafana로 확인하였습니다. 1) Load Test 목표 - 콘서트 대기열 기능에서 사용자가 처음 페이지에 접근하면 WebSocket 연결이 이루어집니다. 본 Load Test의 목표는 동시 1만, 5만, 10만 명이 WebSocket을 통해 동시 접속하는 상황에서도.. Nginx 로드밸런싱 설정하기 1) 서문- 이 글에서는 Nginx 로드밸런서를 도커로 GCP에 배포한 과정에 대해서 다뤄보겠습니다. 콘서트 티켓 프로젝트에서는 고가용성, 부하 조절을 위해 Nginx를 도입했습니다. 2) Nginx 도입 과정 (1) Nginx용 GCP 인스턴스 생성 - Nginx 배포를 위한 GCP 인스턴스를 독립적으로 생성합니다. (2) Nginx 도커 이미지 다운로드 - docker pull nginx를 통해 Nginx 도커 이미지를 다운로드할 수 있습니다. (3) nginx.conf 설정 -nginx.conf는 Nginx의 기본 설정 파일로, 모든 설정에 대한 진입점입니다. 워커 프로세스 개수, 튜닝, 동적 모듈 적재와 같은 글로벌 설정 항목을 포함하여, 다른 Nginx 세부 설정 파일에 대한 참조를 지.. 이전 1 다음