트래픽 분산은 왜필요한가?

- 프로젝트 초기 기존 플랫폼들을 벤치마킹하고 사용해보면서 하나의 이벤트(예매)에 많은 사람이 몰리면 서버는 요청을 보낸 사람들을 모두 좌석 선택화면으로 들여보내지 않고 사용자들중 먼저 요청을 보낸 사용자들만 좌석 선택화면으로 보내고 상대적으로 늦게 요청을 보낸 사용자들은 대기열에 서 대기하는 것을 알 수 있었습니다.
- 대기열을 사용하는 이유가 무엇일까 에 대해 우리팀이 내린 결론은 서버에 한번에 많은 요청이 오는것을 방지하기 위함이구나 였습니다.
- 한번에 많은 사용자가 요청을 보내면 서버에는 과부하가 걸리게되고 감당하지 못할 정도의 요청이 오게된다면 서버는 다운이 되고 서비스는 먹통이 될것입니다.
- 서버는 신뢰성과 안정성을 보장하기위해서 스펙 높이기,오토 스케일링등 다양한 장치및 기술들을 도입하고 사용합니다. 저희 팀도 서버에 몰리는 부하를 막기위해서 다양한 장치들을 생각하고 도입하고싶었지만 한정된 자원내에서 모든것을 다 할 수 없었고 결론을 내린것이 사용자들에게 물리적인 딜레이를 줘서 트래픽을 분산 시키자 였습니다.
- 저희가 서버에 가해지는 부하를 덜기위해서 선택한 방법은 총 2가지로 대기큐와 매크로 방지열 문자와 예매 매수 설정 도입이였습니다.
예매 방지 문자열
- 실시간 예매 서비스라는 주제를 잡고 다른 플랫폼들을 벤치마킹하고 어떤 플로우를 가지는지 조사를 해보면서 대부분의 사이트가 대기큐, 매크로 방지 문자열을 사용하는 것을 알 수 있었습니다.
- 왜 저런 방식을 사용하고 왜 좌석 선택화면 입장전에 수행을 해야되는지 궁금증이 생겼습니다.
- 궁금증을 해결하기 위해서 서로 사용해보면서 느꼈던 점을 말해보고 이를 통해 얻을 수 있는 이점이 뭘까? 라는 주제로 팀원들과 의견을 나누어봤습니다.
- 매크로 방지 문자열은 유저의 악의적인 이용을 방지하기 위해 추가했다는 의견
- 좌석 선택 화면에서 아무것도 안하고 자리만 차지하는 유령 사용자가 될 수있는 문제점을 방지하기 위해서 도입했다는 의견
- 트래픽 분산을 위해 도입했다는 의견
- 저희 팀이 내린결론은 이 세가지 결론이 타당하다였고 저희 서비스에서 필수적으로 예매 방지 문자열이 필요하겠다는 생각을 했고 도입하게 되었습니다.
예매 방지 문자열을 도입하면서 격은 어려움
- 좌석 선택 페이지로 입장하게되면 바로 좌석 현황이 뜨지 않고 예매 방지 문자열을 입력하고 예매 매수 설정을 하게됩니다.

- 기존에는 recaptcha형식으로 체크박스만 클릭하면 넘어가지도록 구현했습니다. 하지만 이경우 사용자의 물리적인 입력이 들어가지 않고 바로 입장하는 경우와 별로 차이가 없어 트래픽 분산에 유의미한 영향을 주지는 못했습니다.
- 트래픽 분산에 유의미한 영향을 주기위해서는 위 reCAPTCHA 같은 형식은 물리적인 딜레이를 발생시킬 수 없었습니다. 그냥 체크만 하면되기 떄문에 1초면 넘어갈 수 있어 트래픽을 분산하기에는 적합하지 않았습니다.