개인프로젝트

성능 향상을 위한 공부2 - 스로틀링(throttling), 대기열

ydin 2024. 2. 13. 21:21

스로틀링(throtling)

 

스로틀링이란?

스로틀링은 전자 기기의 CPU, GPU 등이 지나치게 과열될 때 기기의 손상을 막고자 전압을 조절하는 것을 의미한다. 즉, 최악의 상황을 막기 위해 요청 개수나 속도를 조절하는 것을 의미한다. 

 

서버가 처리할 수 있는 요청보다 월등히 많은 요청을 받게되면 서버가 터질 수도 있기 때문에 서버로 가는 요청 수를 조절해 이를 방지하는 방법이다. 

 

너무 많은 요청으로 인해 API가 가득 차는 것을 방지하기 위함 -> API Gateway 레이어에서 API 요청 조절

서버 순간 처리 요청 수를 제한하고 바로 429 Too Many Requests 응답을 주면 클라이언트도 빠르게 파악 및 대응이 가능하고, 서버도 요청 수를 조절 할 수 있다. -> 요청 스레드가 밀려서 전체 사용자 응답 느려지는 것 방지 가능

 

 

API Gateway

MSA 패턴 중 하나로, API를 사용하는 클라이언트와 서버 사이에 위치해 다양한 목적으로 사용됨

  • 인증 및 권한 부여
  • 서비스 검색 통합
  • 속도 제한
  • 로깅을 반영 추적

 

대기열

서버가 처리 가능한 것을 넘은 요청이 올 때, 해결방법은 두 가지이다.

서버 자체의 크기 늘리기 or 서버의 처리량을 줄이는 것(대기열)

 

대량 접속이 동시다발적으로 요청될 경우 서버 및 시스템에 부하가 유발되어 사이트 단절 발생 가능.

대기열 시스템은 순차적 접속을 통해 부하가 유발되지 않도록 해 대규모 트래픽에도 흔들림 없이 사이트 운영을 도와주는 시스템이다.

 

 

활용 사례 

지마켓, 옥션은 Redis 이용해 RedCarpet이라는 대기열 아키텍처를 도입 -> 어렵다,,,

 

 

Reference

스로틀링

https://12bme.tistory.com/504

https://rene-or-irene.tistory.com/22

 

대기열

https://dev.gmarket.com/46