Backend 개발자/Springboot

트래픽이 몰리면 만들어지는 대기열방 Virtual Waiting Room 알아보기

by 앵과장 2024. 6. 4. 08:57
반응형

우리는 종종 가지고 싶은 물건을 장바구니에 담아두거나 찜목록에 눈팅만하다가

긴급할인, 초저가할인, 블랙프라이데이 등 초저가 프로모션에 한정된 수량에 구매하게된다
하아 이거 없이 살다보니 그냥 사지 말아야되나!!

전시 공연이나 아이돌 티켓공연도 마찬가지로 손여사님께 임영웅 콘서트 티켓 하나 구매해드리고 나도 아이유 콘서트 가고 싶은데

예전에는 와우나 디아블로 대규모 RPG에서 늘보던 게임대기열 나이가 먹다보니 이제는 마눌님이

쓰레기좀 버리고와!!
설겆이좀 해
분리수거 안할꺼야!!
빨래정리좀

바로 게임정지하고 달려갈수 있는 콘솔만 하다보니…
함께 하는건 어떤 재미였나요?!

그시절 와우 대기열 이거 해보겠다고 기다리면

4대 명검를 보게되었는데 이제 이런 시간 즐기는 여유가 없다!!

여튼!! 이럴때 보게되는것이 바로 대기열이다.
이거 어떻게 만들어지는지 뭐 딱히 궁금하지도 않았는데 만들어야된다!! 월급받아야지!!!

대기열


대기열을 VWR이라고 좀 있어보이게 예기한다 버츄얼 웨이팅 룸, 가상대기열
뭐라고 부르던 뭐 이제는 다이해하셨을거라 생각하고

그래서 어떻게 만들어야되나요?
나도 정확히는 모르겠지만 의식에 흐름대로 기능을 고민해보고 프로세스를 만들고 필요한 서버 구성을 생각해본뒤에 가장 적합한 기술스택을 가볍게 만들어보려고 한다.

의식에 흐름으로 작성하는 필요한 기능

- Client 요청을 받는 Api
- 요청을 받고 처리되는 조건문처리(대기열 or 입장)
- 대기열 Queue FIFO
- Queue 생성 프로듀서
- Queue 소비 컨슈머
- Queue에 들어가야되는 객체오브젝트(식별가능하고 유니크한 그무엇?! Jwt 토큰!!)
- 대기열에서 튕겨나갔을때 소멸되는 기능
- 음 브라우저에서 튕기면 어떻게 서버가 감지할까 생각해보니 주기적인 체크로직
- 동일 식별자가 요청오면 처리해야되는 방어코딩
- 대기열이 필요하지 않다면 스위치처럼 상태를 바꾸는기능
- 서버상태를 체크할수 있는 모니터링
- HTTP 또는 Soket

대기열 구현 레퍼런스 찾아보기


https://aws.amazon.com/ko/blogs/tech/getting-started-virtual-waiting-room-on-aws/

대규모 이벤트를 위한 AWS 기반 사용자 Virtual Waiting Room 구현하기 | Amazon Web Services

고객이 대규모 이벤트를 진행할 경우 특정 시점에 트래픽이 폭주하는 경향이 발생될 수 있으며 이런 유형의 트래픽에 맞추어 서비스를 자동으로 확장하는 데는 한계가 있을 수 있습니다. 이는

aws.amazon.com


https://tech.wonderwall.kr/articles/vwr/

대량 트래픽 처리를 위한 Virtual Waiting Room : Wonderwall Tech

대량 트래픽 처리를 위한 Virtual Waiting Room by geunsuryu-wonderwall

tech.wonderwall.kr


https://duddal.tistory.com/m/62

프로모션을 대비한 대기열 시스템 구성하기 (Redis, WebSocket, Spring)

✔개요 대기열 시스템의 탄생 배경 이번에 회사에서 새로운 상품을 오픈하기 위해 대대적인 마케팅?을 진행한다는 것을 전달받아 대기열 시스템을 설계, 개발을 진행했습니다. 왜? 우리는 대기

duddal.tistory.com


https://velog.io/@yeezze/다수의-유저들을-선착순으로-줄세워보자

다수의 유저들을 선착순으로 줄세워보자

가장 중요한 포인트를 먼저 잡아보자 선착순 당첨 프로그램에서 동시에 들어오는 다수의 유저들을 어떻게 관리할 수 있을까요? 가장 먼저 구현 포인트를 이렇게 잡았습니다. > 유저가 들어오면

velog.io

직접 구현 또는 AWS이용

우선 VWR에 대해서 이해 해보고자 알아보고 어떻게 구현해야되는지 정리했는데

정작 어디서 사용되는지 어떻게 사용되는지 요구사항을 듣지못해서

어느정도의 트래픽 들어오는지 어떻게 플로우가 되는지는 들어보고 AWS 사용여부와 오픈라이브러리를 이용한 구현으로 가능한지 판단이 필요하여

일단 여기까지!!
삽질 후기 또 정리 하도록 하겠습니다