์๋น์ค๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด, ์์์น ๋ชปํ ์๋ง์ ์์ฒญ์ด ํ๊บผ๋ฒ์ ๋ชฐ๋ฆด ์ ์๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ์๋ฒ๋ ๋น์ ์์ ์ธ ์์ฒญ์ ์ํด ๋ถํ๋ฅผ ๋ฐ๊ฑฐ๋,
์ฌํ๋ฉด ์๋น์ค ์์ฒด๊ฐ ๋ง๋น๋ ์๋ ์๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ํ์ ์ธ ๊ธฐ์ ์ค ํ๋๊ฐ ๋ฐ๋ก Rate Limit์ด๋ค.
Rate Limit(์์ฒญ ์ ํ)์ ์ผ์ ์๊ฐ ๋์ ํ ์ฌ์ฉ์๊ฐ ๋ณด๋ผ ์ ์๋ ์์ฒญ์ ์๋ฅผ ์ ํํ๋ ๊ธฐ์ ์ด๋ค.
์๋ฅผ ๋ค์ด,
์ด๋ฐ ์์ผ๋ก ํธ๋ํฝ์ ์ ์ดํจ์ผ๋ก์จ, ์๋ฒ ์์ ์ฑ๊ณผ ์๋น์ค ํ์ง์ ์งํฌ ์ ์๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ ์๋ ๋ ๊ฐ์ง ๋ชฉ์ ์ผ๋ก Rate Limit๋ฅผ ์ ์ฉํ๋ ค๊ณ ํ๋ค.
๋ง์ ์ฌ์ฉ์๋ค์ด ๋ชจ๋ฐ์ผ ํ๊ฒฝ ๋ฑ์์ ๋ฒํผ์ ์ฐ์ํด์ ์ฌ๋ฌ ๋ฒ ๋๋ฅด๋ ์ค์๋ฅผ ํ๊ธฐ๋ ํ๋ค.
ํน์ ์ผ๋ถ ์
์์ ์ธ ์ฌ์ฉ์๋ API๋ฅผ ๋ฐ๋ณต ํธ์ถํ์ฌ ์๋น์ค์ ์ ์์ ์ธ ์ฌ์ฉ์ ๋ฐฉํดํ ์๋ ์๋ค.
๐ Rate Limit๋ ์ด๋ฐ ์ํฉ์์ ์์ ๋ญ๋น๋ฅผ ๋ง๊ณ , ์ฌ์ฉ์ ์ค์๋ก ์ธํ ์ค๋ฅ๋ฅผ ์ค์ด๋ ๋ฐ ํจ๊ณผ์ ์ด๋ค.
์์ฆ์ AI ์๋น์ค๋ค์ด ์น์์ ์ฝํ
์ธ ๋ฅผ ๋๋์ผ๋ก ํฌ๋กค๋งํ๋ ์ฌ๋ก๊ฐ ๋์ด๋๊ณ ์๋ค.
ํน์ ํ์ด์ง์ ์๋ํ๋ ๋ด๋ค์ด ์์ฒ, ์๋ง ๋ฒ์ฉ ์์ฒญ์ ๋ณด๋ด๊ธฐ๋ ํ๋ค.
์ด๋ฐ ๋ด๋ค์ ์์ฒญ์ ์ค์ ์ฌ์ฉ์๊ฐ ํ์๋ก ํ๋ ๋ฆฌ์์ค๋ฅผ ๋ญ๋นํ๊ณ ,
๋๋ก ์๋น์ค ์ด์์ ์ง์ฅ์ ์ค ์๋ ์๋ค.
๐ Rate Limit๋ฅผ ํตํด ํน์ IP์์ ๊ณผ๋ํ ์์ฒญ์ด ๋ค์ด์ค๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์ฐจ๋จํ ์ ์๋ค.
Rate Limit๋ ์ ์ฉ ๋ฐฉ์์ ๋ฐ๋ผ ์ฌ๋ฌ ๊ณ์ธต์์ ๊ตฌํํ ์ ์๋ค.
| ๊ณ์ธต | ๋ฐฉ๋ฒ | ํน์ง |
|---|---|---|
| ์ ํ๋ฆฌ์ผ์ด์ | Express middleware, NestJS guard ๋ฑ | ์ธ๋ถ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๊ตํ๊ฒ ์ค์ ๊ฐ๋ฅ |
| ๋ฐ์ดํฐ๋ฒ ์ด์ค | Redis + TTL ํ์ฉ | ์ธ์ /์ฌ์ฉ์ ๊ธฐ๋ฐ ์์ฒญ ์ ํ ๊ฐ๋ฅ |
| ์๋ฒ๋จ | Nginx | ์๋ ๋น ๋ฆ, ๊ฐ๋จํ ์ค์ ์ผ๋ก ๋๋ ํธ๋ํฝ ์ ์ด |
| ์ธ๋ถ ์๋น์ค | Cloudflare, AWS API Gateway | ๊ด๋ฆฌํ ์๋ฃจ์ ์ฌ์ฉ ๊ฐ๋ฅ |
๊ฐ์ฅ ๋น ๋ฅด๊ณ , ์ธํ๋ผ ์ฐจ์์์ ๋์ํ๋ฉฐ,
์๋ฒ ๋ถํ๋ฅผ ์ ์ด์ ๋ง์ ์ ์๋ ๋ฐฉ๋ฒ์ธ Nginx ์ค์ ์ผ๋ก Rate Limit๋ฅผ ๊ตฌํํด๋ณด๊ธฐ๋ก ํ๋ค.
http {
# ์์ฒญ ์๋ ์ ํ ์ค์ (10์ด์ 5๋ฒ๊น์ง ํ์ฉ)
limit_req_zone $binary_remote_addr zone=api_limit:10m rate=5r/s;
server {
listen 443 ssl;
server_name footballsquare.co.kr;
location /api/ {
# ์์์ ์ค์ ํ zone ์ ์ฉ
limit_req zone=api_limit burst=10 nodelay;
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
limit_req_zone
โ ์ ํ ์ ์ฑ
์ ์ (IP ๊ธฐ์ค์ผ๋ก, ์ด๋น ๋ช ๋ฒ๊น์ง ์์ฒญ ๊ฐ๋ฅ)
burst
โ ๋จ๊ธฐ๊ฐ ํ์ฉํ๋ ์ด๊ณผ ์์ฒญ ์ (๋ฒํผ ๊ฐ๋
)
nodelay
โ ์ด๊ณผ ์์ฒญ์ ๋๊ธฐ์ํค์ง ์๊ณ ๋ฐ๋ก ์ฐจ๋จํ ์ง ์ฌ๋ถ
Rate Limit๋ ๋จ์ํ ์ค์ ์ด์ง๋ง, ์๋น์ค ํ์ง์ ์งํค๋ ํต์ฌ ์ฅ์น๋ค.
์ด๋ฒ์๋ Nginx๋ฅผ ํตํด ์์ฝ๊ฒ ์ ์ฉํ์ง๋ง,
์์ผ๋ก๋ Redis๋ฅผ ํ์ฉํ ์ฌ์ฉ์ ๊ธฐ๋ฐ Rate Limit๋ ๋์
ํด๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค.