API ์ค๋กํ๋ง์ด ์์ฒญ ์๋ ๊ด๋ฆฌ, ์์ ์ฑ ๋ณด์ฅ, ์ ์ธ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ต์ ํ์ ๋ฏธ์น๋ ํต์ฌ ์ญํ ์ ํ๊ตฌํฉ๋๋ค. ๊ธ๋ก๋ฒ API ๊ด๋ฆฌ๋ฅผ ์ํ ์ฃผ์ ๋ฉ์ปค๋์ฆ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์์๋ณด์ธ์.
API ์ค๋กํ๋ง ๋ง์คํฐํ๊ธฐ: ๊ธ๋ก๋ฒ ๋์งํธ ํ๊ฒฝ์ ์ํ ํ์ ์์ฒญ ์๋ ์ ์ด ๋ฉ์ปค๋์ฆ
์ค๋๋ ์ ์ํธ ์ฐ๊ฒฐ๋ ๋์งํธ ์ํ๊ณ์์, ์ ํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋ฐ ์ธํฐํ์ด์ค(API)๋ ๋ค์ํ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์๋น์ค ๊ฐ์ ์ํํ ํต์ ๋ฐ ๋ฐ์ดํฐ ๊ตํ์ ์ํ ์ด์ ์ญํ ์ ํฉ๋๋ค. API ์ฑํ์ด ์ฐ์ ๊ณผ ์ง๋ฆฌ์ ๊ฒฝ๊ณ๋ฅผ ๋์ด ๊ณ์ ๊ธ์ฆํจ์ ๋ฐ๋ผ, ์์ฒญ ํ๋ฆ์ ๊ด๋ฆฌํ๊ณ ์ ์ดํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ฉ์ปค๋์ฆ์ ํ์์ฑ์ด ๊ฐ์ฅ ์ค์ํด์ง๊ณ ์์ต๋๋ค. ๋ฐ๋ก ์ด ์ง์ ์์ ์์ฒญ ์๋ ์ ํ์ผ๋ก๋ ์๋ ค์ง API ์ค๋กํ๋ง์ด ํ๋ API ๊ด๋ฆฌ์ ํต์ฌ ๊ตฌ์ฑ ์์๋ก ๋ฑ์ฅํฉ๋๋ค.
์ด ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ API ์ค๋กํ๋ง์ ๋ณต์ก์ฑ์ ํ๊ตฌํ๋ฉฐ, ๊ทธ ๊ธฐ๋ณธ ์์น, ์ฌ์ฉ๋๋ ๋ค์ํ ๋ฉ์ปค๋์ฆ, ๊ทธ๋ฆฌ๊ณ ํนํ ๊ธ๋ก๋ฒ ๋งฅ๋ฝ์์ API์ ์์ ์ฑ, ๋ณด์ ๋ฐ ์ต์ ์ ์ฑ๋ฅ์ ๋ณด์ฅํ๋ ๋ฐ ์์ด API ์ค๋กํ๋ง์ด ์ํํ๋ ํ์์ ์ธ ์ญํ ์ ์์๋ด ๋๋ค. ๋์ ํธ๋ํฝ ๋ณผ๋ฅจ์ ๊ด๋ฆฌํ๋ ๋ฐ ๋ฐ๋ฅด๋ ๊ณผ์ ๋ฅผ ํด๊ฒฐํ๊ณ ํจ๊ณผ์ ์ธ ์ค๋กํ๋ง ์ ๋ต์ ๊ตฌํํ๊ธฐ ์ํ ์คํ ๊ฐ๋ฅํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ ๊ฒ์ ๋๋ค.
API ์ค๋กํ๋ง์ด ์ ์ค์ํ๊ฐ์?
๋ณธ์ง์ ์ผ๋ก API ์ค๋กํ๋ง์ ๋จ์ผ ํด๋ผ์ด์ธํธ ๋๋ ํด๋ผ์ด์ธํธ ๊ทธ๋ฃน์ด ๊ณผ๋ํ ์์ ์์ฒญ์ผ๋ก API๋ฅผ ์๋ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ์ ๋๋ค. ํจ๊ณผ์ ์ธ ์ค๋กํ๋ง์ด ์์ผ๋ฉด API๋ ๋ช ๊ฐ์ง ์ค์ํ ๋ฌธ์ ์ ์ทจ์ฝํด์ง๋๋ค.
- ์ฑ๋ฅ ์ ํ: ๊ฐ์์ค๋ฌ์ด ์์ฒญ ๊ธ์ฆ์ ์๋ฒ ๋ฆฌ์์ค๋ฅผ ๊ณ ๊ฐ์์ผ ์๋ต ์๊ฐ ์ง์ฐ, ๋๊ธฐ ์๊ฐ ์ฆ๊ฐ, ๊ถ๊ทน์ ์ผ๋ก๋ ํฉ๋ฒ์ ์ธ ์ฌ์ฉ์์๊ฒ ์ข์ง ์์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ด๋ํ ์ ์์ต๋๋ค. ์ธ๊ธฐ ์๋ ์ ์์๊ฑฐ๋ ํ๋ซํผ์์ ํ๋์ ์ธ์ผ์ด ๋ฐ์ํ๋ค๊ณ ์์ํด ๋ณด์ธ์. ์ค๋กํ๋ง๋์ง ์์ ์์ฒญ์ ์ ์ฒด ์์คํ ์ ๋ง๋น์ํฌ ์ ์์ต๋๋ค.
- ์๋น์ค ๋ถ์์ : ๊ทน๋จ์ ์ธ ๊ฒฝ์ฐ, ๊ณผ๋ํ ํธ๋ํฝ์ API๋ฅผ ์ถฉ๋์ํค๊ฑฐ๋ ์์ ํ ์ฌ์ฉํ ์ ์๊ฒ ๋ง๋ค์ด ์ค์ํ ๋น์ฆ๋์ค ํํธ๋ ๋ฐ ์ต์ข ์ฌ์ฉ์๋ฅผ ํฌํจํ ๋ชจ๋ ์๋น์์๊ฒ ์๋น์ค๋ฅผ ์ค๋จ์ํฌ ์ ์์ต๋๋ค. ์ด๋ ๋น์ฆ๋์ค ์ฐ์์ฑ์ ๋ํ ์ง์ ์ ์ธ ์ํ์ ๋๋ค.
- ๋ณด์ ์ทจ์ฝ์ : ํต์ ๋์ง ์์ ์์ฒญ ์๋๋ ๋ถ์ฐ ์๋น์ค ๊ฑฐ๋ถ(DDoS) ๊ณต๊ฒฉ๊ณผ ๊ฐ์ ์ ์์ ์ธ ๋ชฉ์ ์ผ๋ก ์ ์ฉ๋์ด ์๋น์ค๋ฅผ ๋ง๋น์ํค๊ณ ๋ฌด๋จ ์ก์ธ์ค๋ฅผ ์ป๊ฑฐ๋ ์ด์์ ๋ฐฉํดํ ์ ์์ต๋๋ค.
- ์ด์ ๋น์ฉ ์ฆ๊ฐ: ๋ ๋ง์ ํธ๋ํฝ์ ์ข ์ข ์ฆ๊ฐ๋ ์ธํ๋ผ ๋น์ฉ์ผ๋ก ์ด์ด์ง๋๋ค. ๋ถ์ ์ ํ๊ฑฐ๋ ๋นํจ์จ์ ์ธ ์ฌ์ฉ์ ์ค๋กํ๋งํจ์ผ๋ก์จ ์กฐ์ง์ ํด๋ผ์ฐ๋ ์ง์ถ ๋ฐ ๋ฆฌ์์ค ํ ๋น์ ๋ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๊ณต์ ์ฌ์ฉ ๋ฐ ๋ฆฌ์์ค ํ ๋น: ์ค๋กํ๋ง์ ๋ชจ๋ API ์๋น์์๊ฒ ๋ฆฌ์์ค๊ฐ ๊ณต์ ํ๊ฒ ๋ถ๋ฐฐ๋๋๋ก ํ์ฌ "์๋๋ฌ์ด ์ด์"์ด ๋์ญํญ๊ณผ ์ฒ๋ฆฌ ๋ฅ๋ ฅ์ ๋ ์ ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
์ฌ๋ฌ ๋๋ฅ์ ๊ฑธ์ณ ์ฌ์ฉ์์๊ฒ ์๋น์ค๋ฅผ ์ ๊ณตํ๋ API๋ฅผ ๊ฐ์ง ๊ธ๋ก๋ฒ ์กฐ์ง์ ๊ฒฝ์ฐ ์ด๋ฌํ ๋ฌธ์ ๋ ์ฆํญ๋ฉ๋๋ค. ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ, ๋ค์ํ ๋์ญํญ ์ฉ๋, ๊ทธ๋ฆฌ๊ณ ๋ค๊ฐ์ ์ธ ์ฌ์ฉ ํจํด์ ์ง๋ฆฌ์ ๋ถํฌ์ ์ ์ฌ์ ์ธ ์ง์ญ๋ณ ์์ ๊ธ์ฆ์ ๊ณ ๋ คํ๋ ์ ๊ตํ ์๋ ์ ํ ์ ๊ทผ ๋ฐฉ์์ ํ์๋ก ํฉ๋๋ค.
์ฃผ์ API ์ค๋กํ๋ง ๋ฉ์ปค๋์ฆ
API ์ค๋กํ๋ง์ ๊ตฌํํ๊ธฐ ์ํด ์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์ ๋ต์ด ์ฌ์ฉ๋ฉ๋๋ค. ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ์ ํ์ ์ข ์ข API์ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์์๋๋ ์ฌ์ฉ ํจํด์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค.
1. ๊ณ ์ ์๋์ฐ ์นด์ดํฐ (Fixed Window Counter)
๊ณ ์ ์๋์ฐ ์นด์ดํฐ(Fixed Window Counter)๋ ๊ฐ์ฅ ๊ฐ๋จํ๊ณ ์ง๊ด์ ์ธ ์ค๋กํ๋ง ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ ๋๋ค. ์ด๋ ์๊ฐ์ ๊ณ ์ ๋ ์๊ฐ ์๋์ฐ(์: 1๋ถ, 1์๊ฐ)๋ก ๋๋๋๋ค. ๊ฐ ์๋์ฐ์ ๋ํด ์นด์ดํฐ๊ฐ ์ ์ง๋ฉ๋๋ค. ์์ฒญ์ด ๋์ฐฉํ๋ฉด ์์คํ ์ ํ์ฌ ์๋์ฐ์ ์นด์ดํธ๋ฅผ ํ์ธํฉ๋๋ค. ์นด์ดํธ๊ฐ ์ ์๋ ์ ํ ๋ฏธ๋ง์ด๋ฉด ์์ฒญ์ด ํ์ฉ๋๊ณ ์นด์ดํฐ๊ฐ ์ฆ๊ฐํฉ๋๋ค. ์ ํ์ ๋๋ฌํ๋ฉด ๋ค์ ์๋์ฐ๊ฐ ์์๋ ๋๊น์ง ํ์ ์์ฒญ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
์์: ๋ถ๋น 100๊ฐ์ ์์ฒญ ์ ํ์ด ์๋ค๋ฉด, 10:00:00๋ถํฐ 10:00:59 ์ฌ์ด์ ์ด๋ฃจ์ด์ง ๋ชจ๋ ์์ฒญ์ด ์นด์ดํธ๋ฉ๋๋ค. 100๊ฐ์ ์์ฒญ์ ๋๋ฌํ๋ฉด, ์๋์ฐ๊ฐ ์ฌ์ค์ ๋๊ณ ์นด์ดํฐ๊ฐ 0๋ถํฐ ์์ํ๋ 10:01:00๊น์ง๋ ๋ ์ด์ ์์ฒญ์ด ์๋ฝ๋์ง ์์ต๋๋ค.
์ฅ์ :
- ๊ตฌํ ๋ฐ ์ดํด๊ฐ ๊ฐ๋จํฉ๋๋ค.
- ๊ณ์ฐ ์ค๋ฒํค๋๊ฐ ๋ฎ์ต๋๋ค.
๋จ์ :
- ๋ฒ์คํธ์ฑ ๋ฌธ์ : ์ด ๋ฐฉ๋ฒ์ "๋ฒ์คํธ์ฑ"์ ์ ๋ฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํด๋ผ์ด์ธํธ๊ฐ ์๋์ฐ์ ๋ง์ง๋ง 1์ด์ 100๊ฐ์ ์์ฒญ์ ๋ณด๋ด๊ณ ๋ค์ ์๋์ฐ์ ์ฒซ 1์ด์ ๋ ๋ค๋ฅธ 100๊ฐ์ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด, ํจ๊ณผ์ ์ผ๋ก ๋งค์ฐ ์งง์ ์๊ฐ ์์ 200๊ฐ์ ์์ฒญ์ ๋ณด๋ด ์๋๋ ํ๊ท ์๋๋ฅผ ์ด๊ณผํ ์ ์์ต๋๋ค. ์ด๋ ํผํฌ๋ฅผ ์๊ฒฉํ๊ฒ ์ ์ดํด์ผ ํ๋ API์ ์์ด ์ค์ํ ๋จ์ ์ ๋๋ค.
2. ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ก๊ทธ (Sliding Window Log)
๊ณ ์ ์๋์ฐ ์นด์ดํฐ์ ๋ฒ์คํธ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ก๊ทธ(Sliding Window Log) ์๊ณ ๋ฆฌ์ฆ์ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ๊ฐ ์์ฒญ์ ๋ํ ํ์์คํฌํ๋ฅผ ์ ์งํฉ๋๋ค. ์ ์์ฒญ์ด ๋์ฐฉํ๋ฉด ์์คํ ์ ํ์ฌ ์๊ฐ ์๋์ฐ ๋ด์์ ์ด๋ฃจ์ด์ง ๋ชจ๋ ์์ฒญ์ ํ์์คํฌํ๋ฅผ ํ์ธํฉ๋๋ค. ํด๋น ์๋์ฐ ๋ด์ ์์ฒญ ์๊ฐ ์ ํ์ ์ด๊ณผํ๋ฉด ์ ์์ฒญ์ ๊ฑฐ๋ถ๋ฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํ์ฉ๋๋ฉฐ, ํด๋น ํ์์คํฌํ๊ฐ ๋ก๊ทธ์ ์ถ๊ฐ๋ฉ๋๋ค.
์์: ๋ถ๋น 100๊ฐ์ ์์ฒญ ์ ํ์ด ์๊ณ , 10:05:30์ ์์ฒญ์ด ๋์ฐฉํ๋ฉด ์์คํ ์ 10:04:30๋ถํฐ 10:05:30 ์ฌ์ด์ ์ด๋ฃจ์ด์ง ๋ชจ๋ ์์ฒญ์ ํ์ธํฉ๋๋ค. ํด๋น ๊ธฐ๊ฐ ๋์ 100๊ฐ ์ด์์ ์์ฒญ์ด ์๋ค๋ฉด ์ ์์ฒญ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
์ฅ์ :
- ์์ฒญ์ ์ ํํ ํ์ด๋ฐ์ ๊ณ ๋ คํ๋ฏ๋ก ๊ณ ์ ์๋์ฐ ์นด์ดํฐ๋ณด๋ค ๋ ์ ํํ ์๋ ์ ํ์ ์ ๊ณตํฉ๋๋ค.
- ๋ฒ์คํธ์ฑ ๋ฌธ์ ๋ฅผ ์ค์ ๋๋ค.
๋จ์ :
- ๊ฐ ์์ฒญ์ ๋ํ ํ์์คํฌํ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํฉ๋๋ค.
- ํนํ ๋ง์ ์์ ์์ฒญ์ด ์์ ๊ฒฝ์ฐ ๊ณ์ฐ ๋น์ฉ์ด ๋ ๋ง์ด ๋ค ์ ์์ต๋๋ค.
3. ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์นด์ดํฐ (Sliding Window Counter)
์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์นด์ดํฐ(Sliding Window Counter)๋ ๊ณ ์ ์๋์ฐ ์นด์ดํฐ์ ํจ์จ์ฑ๊ณผ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ก๊ทธ์ ์ ํ์ฑ์ ๊ฒฐํฉํ๋ ค๋ ํ์ด๋ธ๋ฆฌ๋ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ์๊ฐ์ ๊ณ ์ ๋ ์๋์ฐ๋ก ๋๋์ง๋ง, ์ด์ ์๋์ฐ์ ์ฌ์ฉ๋๋ ๊ณ ๋ คํฉ๋๋ค. ์ ์์ฒญ์ด ๋์ฐฉํ๋ฉด ํ์ฌ ์๋์ฐ์ ์นด์ดํธ์ ์ถ๊ฐ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ฌ ์๋์ฐ์ ์นด์ดํธ๋ ํด๋น ์๋์ฐ์ ์งํ ์ ๋์ ๋ฐ๋ผ ๊ฐ์ค์น๊ฐ ๋ถ์ฌ๋๊ณ , ์ด์ ์๋์ฐ์ ๋จ์ ๋ถ๋ถ์ ๋ฐ๋ผ ๊ฐ์ค์น๊ฐ ๋ถ์ฌ๋ ์ด์ ์๋์ฐ์ ์นด์ดํธ์ ๋ํด์ง๋๋ค. ์ด ํํํ๋ ํ๊ท ์ ๋ฒ์คํธ์ฑ์ ๋ณด๋ค ํจ๊ณผ์ ์ผ๋ก ์ํํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
์์: 100๊ฐ์ ์์ฒญ ์ ํ์ด ์๋ 1๋ถ ์๋์ฐ๋ฅผ ๊ณ ๋ คํด ๋ณด์ธ์. 10:00:30(์๋์ฐ์ ์ ๋ฐ ์ง์ )์ด๋ผ๋ฉด, ์์คํ ์ ํ์ฌ ์๋์ฐ์ ์์ฒญ์ ๊ณ ๋ คํ๊ณ ์ด์ ์๋์ฐ ์์ฒญ์ ์ผ๋ถ๋ฅผ ์ถ๊ฐํ์ฌ ์ ํจ ์๋๋ฅผ ๊ฒฐ์ ํ ์ ์์ต๋๋ค.
์ฅ์ :
- ํจ์จ์ฑ๊ณผ ์ ํ์ฑ์ ๊ท ํ์ ์ด๋ฃน๋๋ค.
- ๋ฒ์คํธ ํธ๋ํฝ์ ํจ๊ณผ์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๋จ์ :
- ๊ณ ์ ์๋์ฐ ์นด์ดํฐ๋ณด๋ค ๊ตฌํ์ด ๋ ๋ณต์กํฉ๋๋ค.
4. ํ ํฐ ๋ฒํท ์๊ณ ๋ฆฌ์ฆ (Token Bucket Algorithm)
ํ ํฐ ๋ฒํท(Token Bucket) ์๊ณ ๋ฆฌ์ฆ์ ํ ํฐ์ ๋ด๋ ๋ฌผ๋ฆฌ์ ๋ฒํท์์ ์๊ฐ์ ๋ฐ์์ต๋๋ค. ํ ํฐ์ ์ผ์ ํ ์๋๋ก ๋ฒํท์ ์ถ๊ฐ๋ฉ๋๋ค. ์์ฒญ์ด ๋์ฐฉํ๋ฉด ์์คํ ์ ๋ฒํท์ ํ ํฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ์ง ํ์ธํฉ๋๋ค. ํ ํฐ์ด ์ฌ์ฉ ๊ฐ๋ฅํ๋ฉด ์๋ชจ๋๊ณ ์์ฒญ์ด ์ฒ๋ฆฌ๋ฉ๋๋ค. ๋ฒํท์ด ๋น์ด ์์ผ๋ฉด ์์ฒญ์ ๊ฑฐ๋ถ๋๊ฑฐ๋ ๋๊ธฐ์ด์ ์ถ๊ฐ๋ฉ๋๋ค.
๋ฒํท์ ์ต๋ ์ฉ๋์ ๊ฐ์ง๋ฉฐ, ์ด๋ ํ ํฐ์ด ํน์ ํ๋๊น์ง ์ถ์ ๋ ์ ์์์ ์๋ฏธํฉ๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ชจ๋ ํ ํฐ์ ๋ฒํท์์ ์๋ชจํ ์ ์์ผ๋ฏ๋ก ํธ๋ํฝ ๋ฒ์คํธ๋ฅผ ํ์ฉํฉ๋๋ค. ์๋ก์ด ํ ํฐ์ ์ง์ ๋ ์๋๋ก ๋ฒํท์ ์ถ๊ฐ๋์ด ํ๊ท ์์ฒญ ์๋๊ฐ ์ด ํ ํฐ ๋ณด์ถฉ ์๋๋ฅผ ์ด๊ณผํ์ง ์๋๋ก ๋ณด์ฅํฉ๋๋ค.
์์: ๋ฒํท์ ์ต๋ 100๊ฐ์ ํ ํฐ์ ๋ณด์ ํ๊ณ ์ด๋น 10๊ฐ์ ํ ํฐ์ ๋ณด์ถฉํ๋๋ก ๊ตฌ์ฑ๋ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๊ฐ 1์ด์ 15๊ฐ์ ์์ฒญ์ ๋ณด๋ธ๋ค๋ฉด, ๋ฒํท์์ 10๊ฐ์ ํ ํฐ(์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ฉด)๊ณผ ์๋ก ์ถ๊ฐ๋๋ 5๊ฐ์ ํ ํฐ์ ์๋ชจํ ์ ์์ต๋๋ค. ํ์ ์์ฒญ์ ๋ ๋ง์ ํ ํฐ์ด ๋ณด์ถฉ๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์ฅ์ :
- ํธ๋ํฝ ๋ฒ์คํธ ์ฒ๋ฆฌ์ ํ์ํฉ๋๋ค.
- ํ๊ท ์๋๋ฅผ ์ ์งํ๋ฉด์ ์ ์ด๋ ์์ค์ "๋ฒ์คํธ์ฑ"์ ํ์ฉํฉ๋๋ค.
- ๊ตฌํ ๋ฐ ์ดํด๊ฐ ๋น๊ต์ ๊ฐ๋จํฉ๋๋ค.
๋จ์ :
- ์ํ๋ ํธ๋ํฝ ํจํด์ ๋ง๊ฒ ํ ํฐ ์ฌ์ถฉ์ ์๋์ ๋ฒํท ์ฉ๋์ ์ ์คํ๊ฒ ์กฐ์ ํด์ผ ํฉ๋๋ค.
5. ๋ฆฌํค ๋ฒํท ์๊ณ ๋ฆฌ์ฆ (Leaky Bucket Algorithm)
๋ฆฌํค ๋ฒํท(Leaky Bucket) ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ ์ ์ผ๋ก ๋ฌผ์ด ์๋ ๋ฒํท๊ณผ ์ ์ฌํฉ๋๋ค. ๋ค์ด์ค๋ ์์ฒญ์ ๋๊ธฐ์ด(๋ฒํท)์ ๋ฐฐ์น๋ฉ๋๋ค. ์์ฒญ์ ์ผ์ ํ ์๋๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค(๋๋ "์์ด ๋๊ฐ๋๋ค"). ์ ์์ฒญ์ด ๋์ฐฉํ์ ๋ ๋ฒํท์ด ๊ฐ๋ ์ฐจ ์์ผ๋ฉด ํด๋น ์์ฒญ์ ๊ฑฐ๋ถ๋ฉ๋๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ๋ก ํธ๋ํฝ์ ํํํํ์ฌ ์ผ์ ํ ์ถ๋ ฅ ์๋๋ฅผ ๋ณด์ฅํ๋ ๋ฐ ์ค์ ์ ๋ก๋๋ค. ํ ํฐ ๋ฒํท์ฒ๋ผ ๋ณธ์ง์ ์ผ๋ก ๋ฒ์คํธ๋ฅผ ํ์ฉํ์ง ์์ต๋๋ค.
์์: ๋ฐ๋ฅ์ ๊ตฌ๋ฉ์ด ์๋ ๋ฒํท์ ์์ํด ๋ณด์ธ์. ๋ฌผ(์์ฒญ)์ด ๋ฒํท์ ๋ถ์ด์ง๋๋ค. ๋ฌผ์ ์ผ์ ํ ์๋๋ก ๊ตฌ๋ฉ ๋ฐ์ผ๋ก ์์ด ๋๊ฐ๋๋ค. ๋ฌผ์ด ์์ด ๋๊ฐ๋ ์๋๋ณด๋ค ๋ ๋น ๋ฅด๊ฒ ๋ฌผ์ ๋ถ์ผ๋ ค ํ๋ฉด ๋ฒํท์ด ๋์น๊ณ ์ด๊ณผ๋ ๋ฌผ์ ์์ค๋ฉ๋๋ค(์์ฒญ ๊ฑฐ๋ถ).
์ฅ์ :
- ์ผ์ ํ ์ถ๋ ฅ ์๋๋ฅผ ๋ณด์ฅํ์ฌ ํธ๋ํฝ์ ํํํํฉ๋๋ค.
- ๊ฐ์์ค๋ฌ์ด ๋๊ฐ๋ ํธ๋ํฝ์ ๊ธ์ฆ์ ๋ฐฉ์งํฉ๋๋ค.
๋จ์ :
- ํธ๋ํฝ ๋ฒ์คํธ๋ฅผ ํ์ฉํ์ง ์๋๋ฐ, ์ด๋ ์ผ๋ถ ์๋๋ฆฌ์ค์์ ๋ฐ๋์งํ์ง ์์ ์ ์์ต๋๋ค.
- ์์ฒญ์ด ์ฌํ๊ฒ ๋๊ธฐ์ด์ ์์ด๋ฉด ๋ ๋์ ๋๊ธฐ ์๊ฐ์ ์ด๋ํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ API ์ค๋กํ๋ง ์ ๋ต ๊ตฌํ
์ ์ธ๊ณ์ ์ธ ๊ท๋ชจ์์ ํจ๊ณผ์ ์ธ API ์ค๋กํ๋ง์ ๊ตฌํํ๋ ๊ฒ์ ๋ ํนํ ๊ณผ์ ๋ฅผ ์ ์ํ๋ฉฐ, ๋ค์ํ ์์๋ฅผ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
1. ํด๋ผ์ด์ธํธ ์๋ณ
์ค๋กํ๋ง์ด ๋ฐ์ํ๊ธฐ ์ ์, ๋๊ฐ ์์ฒญ์ ํ๊ณ ์๋์ง ์๋ณํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- IP ์ฃผ์: ๊ฐ์ฅ ๊ฐ๋จํ ๋ฐฉ๋ฒ์ด์ง๋ง, ๊ณต์ IP, NAT ๋ฐ ํ๋ก์์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- API ํค: ํด๋ผ์ด์ธํธ์ ํ ๋น๋ ๊ณ ์ ํค๋ก, ๋ ๋์ ์๋ณ์ ์ ๊ณตํฉ๋๋ค.
- OAuth ํ ํฐ: ์ธ์ฆ๋ ์ฌ์ฉ์๋ฅผ ์ํด ์ก์ธ์ค์ ๋ํ ์ธ๋ถํ๋ ์ ์ด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- User Agent: ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง์ง๋ง, ๋ค๋ฅธ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ์ฌ์ฉ๋ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ API์ ๊ฒฝ์ฐ, ๋ค์ํ ๋คํธ์ํฌ ์ธํ๋ผ์ ์ ์ฌ์ ์ธ IP ๋ง์คํน์ผ๋ก ์ธํด IP ์ฃผ์์๋ง ์์กดํ๋ ๊ฒ์ ์คํด์ ์์ง๊ฐ ์์ ์ ์์ต๋๋ค. ๋ฑ๋ก๋ ๊ณ์ ์ ์ฐ๊ฒฐ๋ API ํค์ ๊ฐ์ ์ฌ๋ฌ ๋ฐฉ๋ฒ์ ์กฐํฉ์ด ์ข ์ข ๋ ๊ฒฌ๊ณ ํฉ๋๋ค.
2. ์ค๋กํ๋ง์ ์ธ๋ถ์ฑ
์ค๋กํ๋ง์ ๋ค์ํ ์์ค์์ ์ ์ฉ๋ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์๋ณ: ๊ฐ๋ณ ์ธ์ฆ๋ ์ฌ์ฉ์์ ๋ํ ์์ฒญ์ ์ ํํฉ๋๋ค.
- API ํค/์ ํ๋ฆฌ์ผ์ด์ ๋ณ: ํน์ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์๋น์ค์ ๋ํ ์์ฒญ์ ์ ํํฉ๋๋ค.
- IP ์ฃผ์๋ณ: ํน์ IP์์ ์์๋๋ ์์ฒญ์ ์ ํํฉ๋๋ค.
- ๊ธ๋ก๋ฒ ์ ํ: ์ ์ฒด API ์๋น์ค์ ๋ํ ์ด์ฒด์ ์ธ ์ ํ์ ๋๋ค.
๊ธ๋ก๋ฒ ์๋น์ค์ ๊ฒฝ์ฐ, ๊ณ์ธต์ ์ ๊ทผ ๋ฐฉ์์ด ์ข ์ข ๊ฐ์ฅ ์ข์ต๋๋ค. ์์คํ ์ ์ฒด ์ค๋จ์ ๋ฐฉ์งํ๊ธฐ ์ํ ๋๋ํ ๊ธ๋ก๋ฒ ์ ํ๊ณผ ํจ๊ป, ์ ๋ฝ, ์์์, ๋ถ๋ฏธ์ ๊ฐ์ ์ง์ญ์ ๋ค์ํ ์ฌ์ฉ์ ๊ธฐ๋ฐ์ ๊ฑธ์ณ ๊ณต์ ํ ๋ฆฌ์์ค ํ ๋น์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ฐ๋ณ ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ์ฌ์ฉ์์ ๋ํ ๋ณด๋ค ๊ตฌ์ฒด์ ์ธ ์ ํ์ ๊ฒฐํฉํ๋ ๊ฒ์ ๋๋ค.
3. ๊ธ๋ก๋ฒ ๋ถ์ฐ์ ์ํ ์ฌ๋ฐ๋ฅธ ์ค๋กํ๋ง ์๊ณ ๋ฆฌ์ฆ ์ ํ
์ฌ์ฉ์์ ์ง๋ฆฌ์ ๋ถํฌ์ ์ก์ธ์ค ํน์ฑ์ ๊ณ ๋ คํ์ญ์์ค.
- ํ ํฐ ๋ฒํท์ ๋ค๋ฅธ ์ง์ญ์์ ๋ฐ์ํ๋ ์์ธก ๋ถ๊ฐ๋ฅํ ํธ๋ํฝ ๋ฒ์คํธ๋ฅผ ์ฒ๋ฆฌํด์ผ ํ๋ ๊ธ๋ก๋ฒ API์ ์ข ์ข ์ ํธ๋ฉ๋๋ค. ์ด๋ ํ๊ท ์๋๋ฅผ ์ ์งํ๋ฉด์ ์ ์ฐ์ฑ์ ํ์ฉํฉ๋๋ค.
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์นด์ดํฐ๋ ๊ณผ๋ํ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋ ์์ด ์ ๋ฐํ ์๋ ์ ์ด๊ฐ ํ์ํ ์๋๋ฆฌ์ค์ ์ข์ ๊ท ํ์ ์ ๊ณตํ๋ฉฐ, ๊ธ๋ก๋ฒ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ธก ๊ฐ๋ฅํ ๋๋ ์ฌ์ฉ์ด ์๋ API์ ์ ํฉํฉ๋๋ค.
- ๊ณ ์ ์๋์ฐ ์นด์ดํฐ๋ ํธ๋ํฝ ๊ธ์ฆ์ ์ทจ์ฝํ ๊ธ๋ก๋ฒ ์๋๋ฆฌ์ค์๋ ๋๋ฌด ๋จ์ํ ์ ์์ต๋๋ค.
4. ๋ถ์ฐ ์์คํ ๋ฐ ์๋ ์ ํ
๋๊ท๋ชจ์ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ API์ ๊ฒฝ์ฐ, ์ฌ๋ฌ ์๋ฒ์ ๋ฐ์ดํฐ ์ผํฐ์ ๊ฑธ์ณ ์ค๋กํ๋ง์ ๊ด๋ฆฌํ๋ ๊ฒ์ ๋ณต์กํ ๊ณผ์ ๊ฐ ๋ฉ๋๋ค. ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์ข ์ข ์ค์ ์ง์ค์ ์๋ ์ ํ ์๋น์ค ๋๋ ๋ถ์ฐ ํฉ์ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค.
- ์ค์ ์ง์ค์ ์๋ ์ ํ๊ธฐ: ๋ชจ๋ API ์์ฒญ์ด ๋ฐฑ์๋์ ๋๋ฌํ๊ธฐ ์ ์ ํต๊ณผํ๋ ์ ์ฉ ์๋น์ค(์: Redis ๋๋ ์ ๋ฌธ API ๊ฒ์ดํธ์จ์ด ์ฌ์ฉ). ์ด๋ ์๋ ์ ํ ๊ท์น์ ๋ํ ๋จ์ผ ์ง์ค ์์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ธ๋ก๋ฒ ์ ์์๊ฑฐ๋ ํ๋ซํผ์ ๊ฐ ์ฃผ์ ์ง์ญ์์ ์ค์ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ํธ๋ํฝ์ ์ง๊ณํ๊ธฐ ์ ์ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ๋ถ์ฐ ์๋ ์ ํ: ์ผ๊ด๋ ํด์ฑ ๋๋ ๋ถ์ฐ ์บ์์ ๊ฐ์ ๊ธฐ์ ์ ์ฌ์ฉํ์ฌ ์๋ ์ ํ ์ํ๋ฅผ ๊ณต์ ํ๋ฉด์ ์ฌ๋ฌ ๋ ธ๋์ ๊ฑธ์ณ ๋ก์ง์ ๊ตฌํํฉ๋๋ค. ์ด๋ ๋ ํ๋ ฅ์ ์ผ ์ ์์ง๋ง ์ผ๊ด๋๊ฒ ๊ตฌํํ๊ธฐ๋ ๋ ์ด๋ ต์ต๋๋ค.
๊ตญ์ ์ ๊ณ ๋ ค ์ฌํญ:
- ์ง์ญ๋ณ ์ ํ: ์ง์ญ ๋คํธ์ํฌ ์กฐ๊ฑด ๋ฐ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ํจํด์ ๊ณ ๋ คํ์ฌ ๋ค๋ฅธ ์ง๋ฆฌ์ ์ง์ญ์ ๋ํด ๋ค๋ฅธ ์๋ ์ ํ์ ์ค์ ํ๋ ๊ฒ์ด ์ ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ํ๊ท ๋์ญํญ์ด ๋ฎ์ ์ง์ญ์์๋ ์ฌ์ฉ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๋ ๊ด๋ํ ์ ํ์ด ํ์ํ ์ ์์ต๋๋ค.
- ์๊ฐ๋: ์๊ฐ ์๋์ฐ๋ฅผ ์ ์ํ ๋, ๋ค๋ฅธ ์๊ฐ๋์ ๊ฑธ์ณ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋์ง ํ์ธํ์ญ์์ค. UTC๋ฅผ ํ์ค์ผ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๊ฐ๋ ฅํ ๊ถ์ฅ๋ฉ๋๋ค.
- ๊ท์ ์ค์: ์ค๋กํ๋ง ์ ๋ต์ ์ํฅ์ ๋ฏธ์น ์ ์๋ ์ง์ญ ๋ฐ์ดํฐ ์์ฃผ ๋๋ ํธ๋ํฝ ๊ด๋ฆฌ ๊ท์ ์ ์ธ์งํ์ญ์์ค.
5. ์ค๋กํ๋ง๋ ์์ฒญ ์ฒ๋ฆฌ
์์ฒญ์ด ์ค๋กํ๋ง๋ ๋, ํด๋ผ์ด์ธํธ์๊ฒ ์ ์ ํ๊ฒ ์๋ฆฌ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก HTTP ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ํ๋ฉ๋๋ค.
- 429 Too Many Requests: ์ด๋ ์๋ ์ ํ์ ๋ํ ํ์ค HTTP ์ํ ์ฝ๋์ ๋๋ค.
๋ค์ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ๋ ์ข์ ๊ดํ์ ๋๋ค.
- Retry-After ํค๋: ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ์ ์ฌ์๋ํ๊ธฐ ์ ์ ๊ธฐ๋ค๋ ค์ผ ํ๋ ์๊ฐ์ ๋ํ๋ ๋๋ค. ์ด๋ ๋คํธ์ํฌ ์ง์ฐ์ ๊ฒช์ ์ ์๋ ์ ์ธ๊ณ์ ์ผ๋ก ๋ถ์ฐ๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋งค์ฐ ์ค์ํฉ๋๋ค.
- X-RateLimit-Limit ํค๋: ์๊ฐ ์๋์ฐ ๋ด์์ ํ์ฉ๋๋ ์ด ์์ฒญ ์์ ๋๋ค.
- X-RateLimit-Remaining ํค๋: ํ์ฌ ์๋์ฐ์์ ๋จ์ ์์ฒญ ์์ ๋๋ค.
- X-RateLimit-Reset ํค๋: ์๋ ์ ํ์ด ์ฌ์ค์ ๋๋ ์๊ฐ(์ผ๋ฐ์ ์ผ๋ก ์ ๋์ค ํ์์คํฌํ)์ ๋๋ค.
์ด ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉด ํด๋ผ์ด์ธํธ๊ฐ ์ง๋ฅ์ ์ธ ์ฌ์๋ ๋ฉ์ปค๋์ฆ์ ๊ตฌํํ์ฌ API ๋ถ๋ด์ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฏธ๊ตญ์ ํธ์คํ ๋ API์ ์ก์ธ์คํ๋ ค๋ ํธ์ฃผ์ ํด๋ผ์ด์ธํธ๋ ์ง์ฐ ์๊ฐ์ผ๋ก ์ธํด ๋ฐ๋ณต์ ์ผ๋ก ์ ํ์ ๋ถ๋ชํ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด ์ ํํ ์ธ์ ์ฌ์๋ํด์ผ ํ๋์ง ์์์ผ ํฉ๋๋ค.
๊ณ ๊ธ ์ค๋กํ๋ง ๊ธฐ์
๊ธฐ๋ณธ ์๋ ์ ํ์ ๋์ด, API ํธ๋ํฝ ์ ์ด๋ฅผ ๋์ฑ ์ ๊ตํ๊ฒ ๋ง๋ค ์ ์๋ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ์ ์ด ์์ต๋๋ค.
1. ๋์์ฑ ์ ์ด (Concurrency Control)
์๋ ์ ํ์ด ์ผ์ ๊ธฐ๊ฐ ๋์์ ์์ฒญ ์๋ฅผ ์ ์ดํ๋ ๋ฐ๋ฉด, ๋์์ฑ ์ ์ด๋ API์ ์ํด ๋์์ ์ฒ๋ฆฌ๋๋ ์์ฒญ ์๋ฅผ ์ ํํฉ๋๋ค. ์ด๋ ๋ง์ ์์ ์์ฒญ์ด ๋งค์ฐ ๋น ๋ฅด๊ฒ ๋์ฐฉํ์ฌ ์ค๋ซ๋์ ์ด๋ ค ์์ด ๊ฐ๋ณ์ ์ผ๋ก ์๋ ์ ํ์ ์ด๊ณผํ์ง ์๋๋ผ๋ ์๋ฒ ๋ฆฌ์์ค๋ฅผ ๊ณ ๊ฐ์ํค๋ ์๋๋ฆฌ์ค๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
์์: API๊ฐ 100๊ฐ์ ์์ฒญ์ ํธ์ํ๊ฒ ๋์์ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด, ๋์์ฑ ์ ํ์ 100์ผ๋ก ์ค์ ํจ์ผ๋ก์จ ํ์ฉ๋ ์๋ ์ ํ ๋ด์์ ๋์ฐฉํ๋๋ผ๋ 200๊ฐ์ ์์ฒญ์ด ๊ฐ์๊ธฐ ์ ์ ๋์ด ์์คํ ์ ์๋ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
2. ์์ง ๋ณดํธ (Surge Protection)
์์ง ๋ณดํธ๋ ์ ๊ตฌ์ฑ๋ ์๋ ์ ํ์กฐ์ฐจ ์๋ํ ์ ์๋ ๊ฐ์์ค๋ฝ๊ณ ์์์น ๋ชปํ ํธ๋ํฝ ๊ธ์ฆ์ ์ฒ๋ฆฌํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ ์ด ํฌํจ๋ ์ ์์ต๋๋ค.
- ๋๊ธฐ์ด ์ฒ๋ฆฌ: API๊ฐ ๊ณผ๋ถํ ์ํ์ผ ๋ ์์ฒญ์ ์ผ์์ ์ผ๋ก ๋๊ธฐ์ด์ ๋ณด๊ดํ๊ณ , ์ฉ๋์ด ํ๋ณด๋๋ฉด ์ฒ๋ฆฌํฉ๋๋ค.
- ์ง์ ์ ์์์ ์๋ ์ ํ: ์์ฒญ์ด ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋๋ฌํ๊ธฐ๋ ์ ์ ์ธํ๋ผ์ ๊ฐ์ฅ์๋ฆฌ(์: ๋ก๋ ๋ฐธ๋ฐ์, API ๊ฒ์ดํธ์จ์ด)์์ ๋ ์๊ฒฉํ ์ ํ์ ์ ์ฉํฉ๋๋ค.
- ํ๋ก ์ฐจ๋จ๊ธฐ: ์๋น์ค๊ฐ ์ค๋ฅ ์ฆ๊ฐ(๊ณผ๋ถํ๋ฅผ ๋ํ๋)๋ฅผ ๊ฐ์งํ๋ฉด ํ๋ก ์ฐจ๋จ๊ธฐ๋ฅผ "ํธ๋ฆฝ"ํ๊ณ ์ผ์ ๊ธฐ๊ฐ ๋์ ํ์ ์์ฒญ์ ์ฆ์ ์คํจ์์ผ ์ถ๊ฐ์ ์ธ ๋ถํ๋ฅผ ๋ฐฉ์งํ๋ ํจํด์ ๋๋ค. ์ด๋ ์ฐ์์ ์ธ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์๋ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ํ์์ ์ ๋๋ค.
๊ธ๋ก๋ฒ ํ๊ฒฝ์์ ์ง์ญ ๋ฐ์ดํฐ ์ผํฐ์ ์์ง ๋ณดํธ๋ฅผ ๊ตฌํํ๋ฉด ๋ก๋ ๋ฌธ์ ๋ฅผ ๊ฒฉ๋ฆฌํ๊ณ ์ง์ญ์ ํธ๋ํฝ ๊ธ์ฆ์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
3. ์ ์ํ ์ค๋กํ๋ง (Adaptive Throttling)
์ ์ํ ์ค๋กํ๋ง์ ํ์ฌ ์์คํ ๋ถํ, ๋คํธ์ํฌ ์กฐ๊ฑด ๋ฐ ๋ฆฌ์์ค ๊ฐ์ฉ์ฑ์ ๋ฐ๋ผ ์๋ ์ ํ์ ๋์ ์ผ๋ก ์กฐ์ ํฉ๋๋ค. ์ด๋ ์ ์ ์ ํ๋ณด๋ค ๋ ์ ๊ตํฉ๋๋ค.
์์: API ์๋ฒ๊ฐ ๋์ CPU ์ฌ์ฉ๋ฅ ์ ๊ฒช๊ณ ์๋ค๋ฉด, ์ ์ํ ์ค๋กํ๋ง์ ๋ถํ๊ฐ ๊ฐ๋ผ์์ ๋๊น์ง ๋ชจ๋ ํด๋ผ์ด์ธํธ ๋๋ ํน์ ํด๋ผ์ด์ธํธ ๊ณ์ธต์ ๋ํ ํ์ฉ ์์ฒญ ์๋๋ฅผ ์ผ์์ ์ผ๋ก ์ค์ผ ์ ์์ต๋๋ค.
์ด๋ ์ ํ์ ์ง๋ฅ์ ์ผ๋ก ์กฐ์ ํ๊ธฐ ์ํ ๊ฐ๋ ฅํ ๋ชจ๋ํฐ๋ง ๋ฐ ํผ๋๋ฐฑ ๋ฃจํ๋ฅผ ํ์๋ก ํ๋ฉฐ, ์ด๋ ๊ธ๋ก๋ฒ ํธ๋ํฝ ๋ณ๋์ ๊ด๋ฆฌํ๋ ๋ฐ ํนํ ์ ์ฉํ ์ ์์ต๋๋ค.
๊ธ๋ก๋ฒ API ์ค๋กํ๋ง์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
ํจ๊ณผ์ ์ธ API ์ค๋กํ๋ง์ ๊ตฌํํ๋ ค๋ฉด ์ ๋ต์ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํฉ๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก์ ๋๋ค.
- ๋ช ํํ ์ ์ฑ ์ ์: API์ ๋ชฉ์ , ์์ ์ฌ์ฉ ํจํด ๋ฐ ํ์ฉ ๊ฐ๋ฅํ ๋ถํ๋ฅผ ์ดํดํ์ญ์์ค. ์ด๋ฌํ ํต์ฐฐ๋ ฅ์ ๋ฐํ์ผ๋ก ๋ช ์์ ์ธ ์๋ ์ ํ ์ ์ฑ ์ ์ ์ํ์ญ์์ค.
- ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ: ํ์์ ๊ฐ์ฅ ์ ํฉํ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ์ญ์์ค. ๊ธ๋ก๋ฒ ๊ณ ํธ๋ํฝ API์ ๊ฒฝ์ฐ ํ ํฐ ๋ฒํท ๋๋ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ์นด์ดํฐ๊ฐ ์ข ์ข ๊ฐ๋ ฅํ ํ๋ณด์ ๋๋ค.
- ์ธ๋ถํ๋ ์ ์ด ๊ตฌํ: ๊ณต์ ์ฑ์ ๋ณด์ฅํ๊ณ ๋จ์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ๋ฌ ์์ค(์ฌ์ฉ์, ์ ํ๋ฆฌ์ผ์ด์ , IP)์์ ์ค๋กํ๋ง์ ์ ์ฉํ์ญ์์ค.
- ๋ช ํํ ํผ๋๋ฐฑ ์ ๊ณต: ํด๋ผ์ด์ธํธ๋ฅผ ์๋ดํ๊ธฐ ์ํด ํญ์ `429 Too Many Requests`์ `Retry-After`์ ๊ฐ์ ์ ์ตํ ํค๋๋ฅผ ๋ฐํํ์ญ์์ค.
- ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถ์: API์ ์ฑ๋ฅ ๋ฐ ํธ๋ํฝ ํจํด์ ์ง์์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ์ญ์์ค. ์ค๋กํ๋ง ๋ก๊ทธ๋ฅผ ๋ถ์ํ์ฌ ์ ์ฉํ๋ ํด๋ผ์ด์ธํธ ๋๋ ์ ์ฑ ์กฐ์ ์์ญ์ ์๋ณํ์ญ์์ค. ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ์ ์กฐ์ ํ์ญ์์ค.
- ์๋น์ ๊ต์ก: ๊ฐ๋ฐ์ ํฌํธ์ API์ ์๋ ์ ํ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ญ์์ค. ํด๋ผ์ด์ธํธ๊ฐ ์ค๋กํ๋ง๋๋ ๊ฒ์ ํผํ๊ณ ์ค๋งํธ ์ฌ์๋ ๋ก์ง์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๋๋ก ๋์ต๋๋ค.
- ์ฒ ์ ํ ํ ์คํธ: ์ค๋กํ๋ง ์ ์ฑ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ๋ค์ํ ๋ถํ ์กฐ๊ฑด์์ ์๊ฒฉํ๊ฒ ํ ์คํธํ์ฌ ์์๋๋ก ์๋ํ๊ณ ํฉ๋ฒ์ ์ธ ์ฌ์ฉ์์๊ฒ ์๋์น ์๊ฒ ์ํฅ์ ๋ฏธ์น์ง ์๋์ง ํ์ธํ์ญ์์ค.
- ์์ง ์บ์ฑ ๊ณ ๋ ค: ์ ์ ๋๋ ์ค์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ณตํ๋ API์ ๊ฒฝ์ฐ, ์์ง ์บ์ฑ์ ํ์ฉํ๋ฉด ์๋ณธ ์๋ฒ์ ๋ถํ๋ฅผ ํฌ๊ฒ ์ค์ฌ ๊ณต๊ฒฉ์ ์ธ ์ค๋กํ๋ง์ ํ์์ฑ์ ์ํํ ์ ์์ต๋๋ค.
- ๊ฒ์ดํธ์จ์ด์์ ์ค๋กํ๋ง ๊ตฌํ: ๋ณต์กํ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์ ๊ฒฝ์ฐ, API ๊ฒ์ดํธ์จ์ด์์ ์ค๋กํ๋ง์ ๊ตฌํํ๋ ๊ฒ์ด ์ ์ด ๋ฐ ๋ก์ง์ ์ค์ ์ง์คํํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ด๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ ๊ทผ ๋ฐฉ์์ธ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค.
๊ฒฐ๋ก
API ์ค๋กํ๋ง์ ๋จ์ํ ๊ธฐ์ ์ ๊ธฐ๋ฅ์ด ์๋๋๋ค. ํนํ ๊ธ๋ก๋ฒ ๋์งํธ ํ๊ฒฝ์์ API๋ฅผ ๋์ค ๋๋ ํํธ๋์๊ฒ ๋ ธ์ถํ๋ ๋ชจ๋ ์กฐ์ง์ ์์ด ์ ๋ต์ ํ์ ์์์ ๋๋ค. ์ ์ ํ ์์ฒญ ์๋ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ดํดํ๊ณ ๊ตฌํํจ์ผ๋ก์จ, ์ฑ๋ฅ ์ ํ๋ก๋ถํฐ ์๋น์ค๋ฅผ ๋ณดํธํ๊ณ , ๋ณด์์ ๋ณด์ฅํ๋ฉฐ, ๊ณต์ ํ ์ฌ์ฉ์ ์ด์งํ๊ณ , ์ด์ ๋น์ฉ์ ์ต์ ํํ ์ ์์ต๋๋ค.
ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธ๋ก๋ฒ ํน์ฑ์ API ์ค๋กํ๋ง์ ๋ํ ์ ๊ตํ๊ณ ์ ์ ๊ฐ๋ฅํ๋ฉฐ ์ ์ํต๋๋ ์ ๊ทผ ๋ฐฉ์์ ์๊ตฌํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ ์คํ๊ฒ ์ ํํ๊ณ , ์ธ๋ถํ๋ ์ ์ด๋ฅผ ๊ตฌํํ๋ฉฐ, ์๋น์์๊ฒ ๋ช ํํ ํผ๋๋ฐฑ์ ์ ๊ณตํจ์ผ๋ก์จ, ๋์ ์์์ ๋ค์ํ ๊ตญ์ ์ ์ฌ์ฉ ํ๊ฒฝ์์ ๊ฒฌ๋ ์ ์๋ ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ๋ฉฐ ์ ๋ขฐํ ์ ์๋ API๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. API ์ค๋กํ๋ง์ ๋ง์คํฐํ๋ ๊ฒ์ ๋์งํธ ์๋น์ค์ ์ ์ฌ๋ ฅ์ ์ต๋ํ ๋ฐํํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ํํ๊ณ ์ค๋จ ์๋ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๋ฐ ํต์ฌ์ ๋๋ค.