상황 설명
현재 서버가 순간적으로 많은 트래픽이 들어오면 감당하지 못하고 죽어버린다. 그래서 로드밸런싱을 이용해서 인스턴스 서버를 늘리는 방안을 생각해보았으나 현재 웹 서버에서 할당 받을 수 있는 resource는 제한이 되어 있어 늘려봤자 무의미하다. 그렇다면 어떤 방법으로 해결할 수 있을까 고민해보았다.
고려한 부분
- redis를 queue활용
- nginx를 이용해 Rate Limiting과 Burst 설정을 이용해 트래픽을 제한하는 방법
위의 두 가지 방법을 생각해보았다.
구체적인 설명
1. Redis queue활용
- 조건 : 즉각적인 응답을 요구하지 않음, 응답시간에 많은 시간이 소요됨, 순간적인 많은 트래픽 요청이 발생함,
2. nginx 활용해 Rate Limiting과 Burst설정
- 조건 : 많은 트래픽 발생, 응답을 사전에 차단, 부분적으로 요청을 받아들여 병목현상이 생김, 소비자 경험에 매우 안좋음(요청을 사전에 차단해 에러발생)