๐ API Gateway Throttling ๊ตฌํ
MSA ์ค๊ณ ํจํด ์ค ํ๋๋ก API Gateway ๊ฐ ์๋๋ฐ์, ์ด API Gateway ์ ์ฃผ์ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ ๋ฐ๋ก API Throttling ์ ๋๋ค. ์ค๋ ์๊ฐํด๋๋ฆด ๋ธ๋ก๊ทธ๋ ์ด๋ฐ API Throttling ์ด ๋ฌด์์ด๊ณ ์ค์ ๊ตฌํ์ ์ด๋ป๊ฒ ๋์ด์๋์ง๋ฅผ ์์ธํ๊ฒ ์ค๋ช ํ๊ณ ์์ต๋๋ค. ๐ API Throttling? API ์์ฒญ์ ์๋์ ํ์๋ฅผ ์ ํํ๋ Rate Limit ๊ธฐ๋ฅ ์ ๋๋ค. API Throttling ์ ๊ตฌํํ๋ฉด ํน์ ์ฌ์ฉ์๊ฐ ๋ง๋ ํ๋ก๊ทธ๋จ์ด ๋ฒ๊ทธ๊ฐ ์์ด ์์ฒญ๋์ด ํญ์ฆํ๊ฑฐ๋ ์ ์์ ์ธ ์ฌ์ฉ์๊ฐ DoS(Denial of service)์ ๊ฐ์ ๊ณต๊ฒฉ์ ์๋ํ๋๋ผ๋ ์๋น์ค ๊ฐ์ฉ์ฑ(Availability)์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์๋๋ก ํ ์ ์์ต๋๋ค. ๐ API Throttling ์ข ๋ฅ API Throttling ์ ๊ตฌํ์ ์ผ๋ฐ์ ์ผ๋ก Bucket ๊ณผ Window ๋ฅผ ์ปจ์ ์ผ๋ก ํ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉ๋ฉ๋๋ค. โ๏ธ Leaky Bucket - https://en.wikipedia.org/wiki/Leaky_bucket โ๏ธ Token Bucket - https://en.wikipedia.org/wiki/Token_bucket โ๏ธ Fixed Window, Sliding Window- https://konghq.com/blog/how-to-design-a-scalable-rate-limiting-algorithm/ ๐ Leaky Bucket - ๊ณ ์ ๋ ๋ฒํท์ต๋๊น์ด(T)์ ๋ฒํท์ ๋คํธ์ํฌ ์์ฒญ ์ ์ ์๋์ ํ๊ณ๊ฐ(ฯ)์ ์ ํ๊ณ ์ง์ ๋ ์๋์ ๋ง์ถฐ์ ์ผ์ ํ๊ฒ ์ฒ๋ฆฌํ๋๋ก ๊ตฌํํ๋ ๋ฐฉ์์ ๋๋ค. ํ๊ณ๊ฐ์ ์ด๊ณผํ๋ฉด ๊ทธ ๋ค์ ์ ์ ๋ ์์ฒญ์ ๋ฒ๋ฆฝ๋๋ค. - ๊ณ ์ ๋ ์ฒ๋ฆฌ๋(๊ฐ์/์๋)์ ๊ธฐ๋ฐ์ผ๋ก ๋์์ ํ๊ธฐ์, ์์ ๋ ์ฒ๋ฆฌ์จ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ๋ณด์ฅํ ์ ์๋ ์ฅ์ ์ด ์์ต๋๋ค. - Peek ์๊ฐ์ ์ ์ ํ Rate ์ธ์๋ฅผ ๋ฐฐ์ ํ์ง ๋ชปํ๋ฉด, ์ ๊ท ์์ฒญ๊ฑด๋ค์ด Queue ์์ ๋์ณ๋ฒ๋ฆฌ๊ฒ๋๊ณ ๋ค์ Rate Time ๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ ๋จ์ ์ด ์์ต๋๋ค. ๐ Token Bucket - Bucket ์ ์ ์ฅ ํ ์ ์๋ ์ต๋ ํ ํฐ์ ์ซ์๋ฅผ ์ ํ๊ณ ์ผ์ ์ฃผ๊ธฐ๋ก ํด๋น ํ ํฐ์ ์ฑ์์ฃผ๋๋ก ํ๋ ์ํ์์ ์์ฒญ๋ง๋ค ํน์ ๊ฐฏ์์ ํ ํฐ์ ์ฌ์ฉํ๋๋ก ๊ตฌํํ๋ ๋ฐฉ์์ ๋๋ค. ํ ํฐ์ด ์์ผ๋ฉด ์์ฒญ ๋ฉ์์ง๋ฅผ ๋ฐํํฉ๋๋ค. - ์งง์ ์๊ฐ์ ์ง์ค๋๋ ํธ๋ํฝ๋ ํ ํฐ๋ง ์์ผ๋ฉด ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ค์ Rate Time ์ ๊ธฐ๋ค๋ ค์ผํ๋ Leaky Bucket ์ ๋จ์ ์ด ์ฌ๋ผ์ง๋๋ค. - ์ด๋น์ฒ๋ฆฌ๋๊ณผ ์ต๋ ๋ฒํทํฌ๊ธฐ์ ๊ฐ์ ์ ์ ํ ํ๋ํด์ผํ๋ ๋จ์ ์ด ์์ต๋๋ค. ๊ณต์ ๋๋ฆฐ ๋ธ๋ก๊ทธ์ ์ด์ ๋ํ ์์ธํ ์ค๋ช ๊ณผ ๊ตฌํ ๋ด์ฉ์ด ์์ผ๋ ๊ด์ฌ์์ผ์ ๋ถ๋ค๊ป์๋ ํ๋ฒ ๋ณด์๋ฉด ์ข๊ฒ ์ต๋๋ค. ๐ ํจ๊ป๋ณด๋ฉด ์ข์ ๊ธ - ๐งฉ ๋ง์ดํฌ๋ก์๋น์ค ์ค๊ณ ํจํด: https://careerly.co.kr/comments/84921?utm_campaign=self-share https://doublem.org/api-gateway-basic/