Alert
์ด ๊ธ์ Claude Code์ ๋์์ ๋ฐ์ ์์ฑ๋์์ต๋๋ค
TL;DR
- Reverse Proxy: ๋ฐฑ์๋ ์๋ฒ ์์์ SSL ์ข ๋ฃ, ์บ์ฑ, ์์ถ, ๋ณด์์ ์ฒ๋ฆฌํ๋ ์ค๊ฐ ๊ณ์ธต
- Load Balancer: Reverse Proxy์ ์ง๋ฅ์ ํธ๋ํฝ ๋ถ๋ฐฐ ๋ฅ๋ ฅ์ด ์ถ๊ฐ๋ ๊ฒ. L4(TCP)์ L7(HTTP) ๋ฐฉ์ ์กด์ฌ
- API Gateway: HTTP๋ฅผ ์ดํดํ๋ ๊ฒ์ ๋์ด API ๋น์ฆ๋์ค ๋ก์ง(์ธ์ฆ, ์๋ ์ ํ, ๋ฒ์ ๊ด๋ฆฌ)๊น์ง ์ค์ ์ฒ๋ฆฌ
- ์ค์ ๋๊ตฌ๋ค(Nginx, Kong, Envoy)์ ์ธ ์ญํ ์ ๊ฒฝ๊ณ๋ฅผ ๋๋๋ค๋ฉฐ ๋์
Source
1. ๋จ์ผ ์๋ฒ์ ํ๊ณ
๊ฐ์ฅ ๋จ์ํ ์น ๊ตฌ์กฐ๋ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ง์ ์์ฒญ์ ๋ณด๋ด๊ณ ์๋ต์ ๋ฐ๋ ๊ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ โ ์๋ฒ โ ํด๋ผ์ด์ธํธ
๊ฐ๋ฐ ํ๊ฒฝ์ด๋ ํธ๋ํฝ์ด ์ ์ ๋๋ ๋ฌธ์ ์์ง๋ง, ์๋ฒ๊ฐ ๊ณต๊ฐ ์ธํฐ๋ท์ ์ง์ ๋ ธ์ถ๋๋ฉด ์ฌ๋ฌ ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
- SSL/TLS ์ฒ๋ฆฌ ๋ถ๋ด: ๋ชจ๋ HTTPS ์์ฒญ๋ง๋ค TLS ํธ๋์ ฐ์ดํฌ๋ฅผ ์๋ฒ๊ฐ ์ง์ ์ฒ๋ฆฌ. ์ํธํ ์ฐ์ฐ์ CPU๋ฅผ ๋ง์ด ์๋นํ๋ค
- ๋ค์ค ์ญํ ๊ณผ๋ถํ: ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ์คํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ, ์ ์ ํ์ผ ์๋น, ์๋ต ์์ถ์ ํ ์๋ฒ๊ฐ ์ ๋ถ ๋ด๋น
- ๋ณด์ ๋ ธ์ถ: ์๋ฒ IP๊ฐ DNS์ ๊ณต๊ฐ๋์ด ์์ด ๋๊ตฌ๋ ์ค์บ, ํ์, ๊ณต๊ฒฉ์ด ๊ฐ๋ฅ
๋น์
์ธ๊ณผ์์ฌ๊ฐ ์์ ์ ํ๋ฉด์ ๋์์ ํ์ ์ ์, ์ฅ๋น ์๋ , ์ ํ ์๋, ์ฒญ๊ตฌ ์ ๋ฌด๊น์ง ์ฒ๋ฆฌํ๋ ์ํฉ๊ณผ ๊ฐ๋ค. ๊ฒฐ๊ตญ ์์ ํ์ง์ด ๋จ์ด์ง๋ค.
2. Reverse Proxy
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์๋ฒ ์์ ๋๋ ๋ณดํธ ๊ณ์ธต์ด Reverse Proxy๋ค.
Forward Proxy vs Reverse Proxy
๋ ๊ฐ๋ ์ ์ด๋ฆ์ด ๋น์ทํ์ง๋ง ๋ฐฉํฅ์ด ๋ฐ๋๋ค.
| ๊ตฌ๋ถ | Forward Proxy | Reverse Proxy |
|---|---|---|
| ๋๋ฆฌ ๋์ | ํด๋ผ์ด์ธํธ | ์๋ฒ |
| ์์น | ํด๋ผ์ด์ธํธ ์ | ์๋ฒ ์ |
| ์๋ฒ ์ ์ฅ | ์๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋ชจ๋ฆ | ํด๋ผ์ด์ธํธ๊ฐ ์ค์ ์๋ฒ๋ฅผ ๋ชจ๋ฆ |
| ์์ | ํ์ฌ VPN, IP ๋ง์คํน ์๋น์ค | Nginx, Caddy, HAProxy |
Forward Proxy๋ ํด๋ผ์ด์ธํธ๋ฅผ ๋์ ํด์ ์ธํฐ๋ท์ ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ์ด๊ณ , Reverse Proxy๋ ์๋ฒ๋ฅผ ๋์ ํด์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ ๊ฒ์ด๋ค.
Reverse Proxy๊ฐ ํ๋ ์ผ
SSL ์ข ๋ฃ (SSL Termination)
TLS ํธ๋์ ฐ์ดํฌ๋ ์ํธํ, ํค ๊ตํ, ์ธ์ฆ์ ๊ฒ์ฆ์ ํฌํจํ๋ ๋น์ฉ์ด ํฐ ์์ ์ด๋ค. Reverse Proxy๊ฐ ์ฃ์ง์์ ์ด ์์ ์ ํ ๋ฒ ์ฒ๋ฆฌํ๋ฉด, ๋ฐฑ์๋ ์๋ฒ๋ ์ ๋ขฐํ ์ ์๋ ๋ด๋ถ ๋คํธ์ํฌ์์ ํ๋ฌธ HTTP๋ง ๋ฐ์ผ๋ฉด ๋๋ค.
ํด๋ผ์ด์ธํธ โHTTPSโโ [Reverse Proxy] โHTTPโโ ๋ฐฑ์๋ ์๋ฒ
(SSL ์ข
๋ฃ) (๋ด๋ถ ๋คํธ์ํฌ)
์บ์ฑ
๊ฐ์ ์ํ ์นดํ๋ก๊ทธ๋ฅผ 1,000๋ช ์ด ์์ฒญํ๋ค๊ณ ํ์. Reverse Proxy๊ฐ ์์ผ๋ฉด ๋ฐฑ์๋๊ฐ ๋์ผํ ์๋ต์ 1,000๋ฒ ์์ฑํ๋ค. Reverse Proxy๊ฐ ์์ผ๋ฉด ์ฒซ ๋ฒ์งธ ์์ฒญ๋ง ๋ฐฑ์๋์ ๋๋ฌํ๊ณ , ๋๋จธ์ง 999๊ฐ๋ ํ๋ก์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฆ์ ์๋ตํ๋ค.
์์ถ
์๋ต์ด ํ๋ก์๋ฅผ ๋ ๋๊ธฐ ์ ์ gzip์ด๋ Brotli๋ก ์์ถํ๋ค. ํ์ด๋ก๋๊ฐ ์์์ง๊ณ , ๋์ญํญ์ด ์ค๊ณ , ์๋ต ์๊ฐ์ด ๋นจ๋ผ์ง๋ค. ๋ฐฑ์๋๋ ์์ถ์ CPU๋ฅผ ์ฐ์ง ์๋๋ค.
๋ณด์
์ค์ ์๋ฒ IP๋ ํ๋ก์ ๋ค์ ์จ๊ฒจ์ง๋ค. ๊ณต๊ฒฉ์๋ ํ๋ก์ ๊ณ์ธต๋ง ๋ณผ ์ ์๋ค. ์๋ ์ ํ, ํค๋ ๊ฒ์ฆ, ์์ฌ์ค๋ฌ์ด ํจํด ์ฐจ๋จ, ์๋ชป๋ ํ์์ ์์ฒญ ๊ฑฐ๋ถ๋ฅผ ํ๋ก์ ๋จ์์ ์ฒ๋ฆฌํ๋ค.
Reverse Proxy์ ํ๊ณ
Reverse Proxy๋ ๋ฒ์ฉ์ ์ด๋ค. ์ฐ๊ฒฐ๊ณผ ๋ผ์ฐํ ์์ค์์ ๋์ํ๋ฉฐ, ๋น์ฆ๋์ค ๋ก์ง์ ์ดํดํ์ง ๋ชปํ๋ค.
/users์/orders์ ์ฐจ์ด๋ฅผ ๋ชจ๋ฅด๊ณ , ์์ฒญ์ด ์ธ์ฆ๋์๋์ง, ์ด๋ค API ๋ฒ์ ์ธ์ง๋ ๋ชจ๋ฅธ๋ค. ์ค์ ๋ ๊ท์น์ ๋ฐ๋ผ ํธ๋ํฝ์ ์ ๋ฌํ ๋ฟ์ด๋ค.
๋ํ ๋๊ตฌ
- Nginx
- HAProxy
- Caddy
- Envoy
3. Load Balancer
Reverse Proxy๊ฐ SSL, ์บ์ฑ, ์์ถ, ๋ณด์์ ์ฒ๋ฆฌํด๋ ๊ทผ๋ณธ์ ์ธ ๋ฌธ์ ๊ฐ ๋จ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์คํํ๋ ์๋ฒ๊ฐ ์ฌ์ ํ ํ ๋๋ผ๋ ๊ฒ์ด๋ค.
ํธ๋ํฝ์ด ๊ฐ์๊ธฐ 2๋ฐฐ, 3๋ฐฐ๋ก ์ฆ๊ฐํ๋ฉด Reverse Proxy๋ ๋ชจ๋ ์์ฒญ์ ๊ทธ ํ ๋์ ๋ฐฑ์๋์ ๊ณ์ ์ ๋ฌํ๊ณ , ๋ฐฑ์๋๋ ๊ณผ๋ถํ์ ๋น ์ง๋ค.
ํด๊ฒฐ์ฑ ์ ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์๋ฒ๊ฐ ์ฌ๋ฌ ๋๊ฐ ๋๋ฉด ์๋ก์ด ๋ฌธ์ ๊ฐ ์๊ธด๋ค.
- ์ด๋ค ์๋ฒ์ ์์ฒญ์ ๋ณด๋ผ์ง ์ด๋ป๊ฒ ๊ฒฐ์ ํ ๊ฒ์ธ๊ฐ?
- ํ ์๋ฒ์ ๋น์ฉ์ด ํฐ ์์ฒญ์ด ๋ชฐ๋ฆฌ๋ฉด?
- ์๋ฒ ํ ๋๊ฐ ์ฃฝ์ผ๋ฉด ์ด๋ป๊ฒ ๊ฐ์งํ๊ณ ์ ์ธํ ๊ฒ์ธ๊ฐ?
์ด๊ฒ์ด Load Balancer๊ฐ ํด๊ฒฐํ๋ ๋ฌธ์ ๋ค. Load Balancer๋ Reverse Proxy์ ์ง๋ฅ์ ํธ๋ํฝ ๋ถ๋ฐฐ ๋ฅ๋ ฅ์ด ์ถ๊ฐ๋ ๊ฒ์ด๋ค. ์์ ํ ๋ค๋ฅธ ๋ฌด์ธ๊ฐ๊ฐ ์๋๋ผ, ํ ๊ฐ์ง ํนํ๋ ๊ธฐ์ ์ด ์งํํ ํํ๋ค.
๋ถ๋ฐฐ ์๊ณ ๋ฆฌ์ฆ
Round Robin
๊ฐ์ฅ ๋จ์ํ ๋ฐฉ์. ์์ฒญ์ ์๋ฒ A โ B โ C โ A โ B โ C ์์๋ก ๋๋ฆฐ๋ค. ๋ชจ๋ ์๋ฒ์ ์ฑ๋ฅ์ด ๊ฐ๊ณ , ๋ชจ๋ ์์ฒญ์ ๋น์ฉ์ด ๋น์ทํ ๋ ์ ๋์ํ๋ค.
Least Connections
ํ์ฌ ํ์ฑ ์ฐ๊ฒฐ์ด ๊ฐ์ฅ ์ ์ ์๋ฒ์ ๋ค์ ์์ฒญ์ ๋ณด๋ธ๋ค. ์์ฒญ๋ง๋ค ์ฒ๋ฆฌ ์๊ฐ์ด ๋ค๋ฅผ ๋ (์บ์ ํํธ vs ๋ฌด๊ฑฐ์ด DB ์ฟผ๋ฆฌ) ํธ๋ํฝ์ด ์์ฐ์ค๋ฝ๊ฒ ์ฌ์ ์๋ ์๋ฒ๋ก ํ๋ฅธ๋ค.
Weighted
์๋ฒ ์ฑ๋ฅ์ด ๋ค๋ฅผ ๋ ์ฌ์ฉํ๋ค. RAM 64GB ์๋ฒ์๋ ๊ฐ์ค์น๋ฅผ ๋๊ฒ, 16GB ์๋ฒ์๋ ๋ฎ๊ฒ ์ค์ ํด์ ๊ฐํ ์๋ฒ๊ฐ ๋ ๋ง์ ํธ๋ํฝ์ ๋ฐ๊ฒ ํ๋ค.
IP Hash
ํด๋ผ์ด์ธํธ IP๋ฅผ ํด์ํด์ ํญ์ ๊ฐ์ ๋ฐฑ์๋ ์๋ฒ๋ก ๋ณด๋ธ๋ค. ์ธ์ ์นํ์ฑ(session affinity)์ ์ ์ฉํ์ง๋ง, ์์ฆ์ ์ํ ๋น์ ์ฅ(stateless) ์ํคํ ์ฒ๊ฐ ํ์ฅ์ ์ ๋ฆฌํ๋ฏ๋ก ์ ํธ๋๊ฐ ๋ฎ๋ค.
L4 vs L7 Load Balancing
์ด ๊ตฌ๋ถ์ ์ค๋ฌด์์ ๋งค์ฐ ์ค์ํ๋ค.
| ๊ตฌ๋ถ | L4 (์ ์ก ๊ณ์ธต) | L7 (์ ํ๋ฆฌ์ผ์ด์ ๊ณ์ธต) |
|---|---|---|
| ์ดํดํ๋ ๊ฒ | [[11. TCP์ UDP | TCP]] ์ฐ๊ฒฐ, IP ์ฃผ์, ํฌํธ ๋ฒํธ |
| ๋ผ์ฐํ ๊ธฐ์ค | ๋คํธ์ํฌ ์ฐ๊ฒฐ ๋จ์ | ์์ฒญ ๋ด์ฉ ๊ธฐ๋ฐ |
| ์๋ | ๋งค์ฐ ๋น ๋ฆ | ์๋์ ์ผ๋ก ๋๋ฆผ |
| ์ ์ฐ์ฑ | ๋ฎ์ (๋ด์ฉ์ ๋ชจ๋ฆ) | ๋์ (URL ๊ฒฝ๋ก๋ณ ๋ผ์ฐํ ๊ฐ๋ฅ) |
| AWS ์์ | Network Load Balancer (NLB) | Application Load Balancer (ALB) |
L7 Load Balancer๋ /api/users ํธ๋ํฝ์ ์ฌ์ฉ์ ์๋น์ค ํด๋ฌ์คํฐ๋ก, /api/payments ํธ๋ํฝ์ ๋ ์์ ํ ๊ฒฐ์ ์๋ฒ ํด๋ฌ์คํฐ๋ก ๋ณด๋ด๋ ์์ ์ฝํ
์ธ ๊ธฐ๋ฐ ๋ผ์ฐํ
์ด ๊ฐ๋ฅํ๋ค.
ํฌ์ค ์ฒดํฌ
Load Balancer์ ํต์ฌ ๊ธฐ๋ฅ์ด๋ค. ๋ฐฑ์๋ ์๋ฒ์ ์ง์์ ์ผ๋ก โ์ด์ ์์ด?โ ํ์ ๋ณด๋ด๊ณ , ์๋ต์ด ์์ผ๋ฉด ์ฆ์ ํธ๋ํฝ ํ์์ ์ ๊ฑฐํ๋ค.
- ํธ๋ํฝ์ ์๋์ผ๋ก ์ ์ ์๋ฒ๋ก ์ฌ๋ถ๋ฐฐ๋๋ค
- ์๋ฒฝ 3์์ ์์ง๋์ด๊ฐ ์ผ์ด๋์ ์๋์ผ๋ก ํธ๋ํฝ์ ๋๋ฆด ํ์๊ฐ ์๋ค
- ์ฅ์ ์๋ฒ๊ฐ ๋ณต๊ตฌ๋๋ฉด ์๋์ผ๋ก ํ์ ์ฌํฉ๋ฅํ๋ค
Load Balancer๊ฐ ํด๊ฒฐํ๋ ๋ ๊ฐ์ง ๋ฌธ์
- ์ํ ํ์ฅ์ฑ: ์๋ฒ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ๋ง์ผ๋ก ๋ ๋ง์ ํธ๋ํฝ ์ฒ๋ฆฌ ๊ฐ๋ฅ
- ๊ณ ๊ฐ์ฉ์ฑ: ๊ฐ๋ณ ์๋ฒ ์ฅ์ ๊ฐ ์ ์ฒด ์๋น์ค ๋ค์ด์ผ๋ก ์ด์ด์ง์ง ์์
์ด ๋ ๊ฐ์ง๋ ์์ ์ฑ์ ์ํ ๊ธฐ์ ์์ ๋ค๋ฃจ๋ ์ด์คํ, ๊ฐ์ฉ์ฑ ๊ฐ๋ ๊ณผ ์ง์ ์ฐ๊ฒฐ๋๋ค.
4. API Gateway
์๋น์ค๊ฐ ์ฑ์ฅํ๋ฉด ๋ชจ๋๋ฆฌ์ค๊ฐ ๋ง์ดํฌ๋ก์๋น์ค๋ก ์ชผ๊ฐ์ง๋ ์์ ์ด ์จ๋ค. ์ฌ์ฉ์ ์๋น์ค, ์ฃผ๋ฌธ ์๋น์ค, ๊ฒฐ์ ์๋น์ค, ์๋ฆผ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐฐํฌ๋๊ณ ํ์ฅ๋๋ค.
์ด๋ก ์ ์ผ๋ก๋ ์๋ฒฝํ์ง๋ง, ์ค์ ๋ก๋ ์์คํ ์ ๊ตฌ์์ ์์ ํ ์๋ก์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
๋ง์ดํฌ๋ก์๋น์ค๊ฐ ๋ง๋๋ ์ค๋ณต ๋ฌธ์
- ์ธ์ฆ ์ค๋ณต: ๋ชจ๋ ์๋น์ค๊ฐ JWT ๊ฒ์ฆ, API ํค ํ์ธ, ๊ถํ ์ฒดํฌ๋ฅผ ๊ฐ์ ๊ตฌํ. 12๊ฐ ์๋น์ค์ ๋์ผํ ์ธ์ฆ ๋ก์ง 12๋ฒ
- ์๋ ์ ํ ์ค๋ณต: ์๋น์ค๋ง๋ค ๋ค๋ฅธ ๊ท์น, ๋ค๋ฅธ ์๊ณ๊ฐ, ๋ค๋ฅธ ๋ฒ๊ทธ๋ก ์ ํ ๋ก์ง์ ๊ตฌํ
- ๋ชจ๋ํฐ๋ง ํํธํ: ํ ํ์ ์ง์ฐ์๊ฐ์ ์ด๋ ๊ฒ, ๋ค๋ฅธ ํ์ ์๋ฌ๋ฅผ ์ ๋ ๊ฒ ๋ก๊น . ์ฅ์ ์ ์ ์ฒด ๊ทธ๋ฆผ์ ๋ณผ ์ ์์
- ์์ฒญ ๋ณํ ์ค๋ณต: ๋ชจ๋ฐ์ผ ์ฑ์ JSON, ๋ ๊ฑฐ์ ๊ฒฐ์ ์์คํ ์ XML. ๊ฐ ์๋น์ค์ ๋ณํ ๋ก์ง์ด ๋น์ฆ๋์ค ๋ก์ง ์์ ์นํ์ง
๊ฒฐ๊ณผ์ ์ผ๋ก 12๊ฐ์ ๋ ๋ฆฝ ์๋น์ค๊ฐ ์๋๋ผ, 12๊ฐ ํ์ด ๊ฐ๊ฐ ์ ์ง๋ณด์ํ๋ ๊ฐ์ ์ธํ๋ผ ์ฝ๋์ 12๊ฐ ๋ณต์ฌ๋ณธ์ด ๋๋ค.
API Gateway์ ์ญํ
API Gateway๋ ์ฌ์ ํ Reverse Proxy์ง๋ง, ์ ํต์ ์ธ Reverse Proxy์ ๋ฌ๋ฆฌ API๋ฅผ ์ดํดํ๋ค. ๋จ์ํ HTTP ์์ฒญ์ ์ ๋ฌํ๋ ๊ฒ์ด ์๋๋ผ, ์ด๋ค ์๋ํฌ์ธํธ๊ฐ ๊ณต๊ฐ์ธ์ง, ์ธ์ฆ์ด ํ์ํ์ง, ์ด๋ค ํด๋ผ์ด์ธํธ๊ฐ ์ด๋ค ๋ฑ๊ธ์ธ์ง ์๊ณ ์๋ค.
์ค์ ์ง์ค ์ธ์ฆ
ํด๋ผ์ด์ธํธ โ [API Gateway: JWT ๊ฒ์ฆ] โ ๋ฐฑ์๋ ์๋น์ค
โ (์คํจ ์)
์ฆ์ ๊ฑฐ๋ถ (๋ฐฑ์๋ ๋๋ฌ ์ )
๋ชจ๋ ์๋น์ค๊ฐ ๊ฐ๋ณ์ ์ผ๋ก ํ ํฐ์ ๊ฒ์ฆํ๋ ๋์ , ๊ฒ์ดํธ์จ์ด๊ฐ ์ฃ์ง์์ ํ ๋ฒ ์ฒ๋ฆฌํ๋ค. ๋ฐฑ์๋ ์๋น์ค๋ ๋น์ฆ๋์ค ๋ก์ง์๋ง ์ง์คํ ์ ์๋ค.
์ค์ ์ง์ค ์๋ ์ ํ
๋ฌด๋ฃ ์ฌ์ฉ์: 100 req/min
ํ๋ก ์ฌ์ฉ์: 1,000 req/min
์ํฐํ๋ผ์ด์ฆ: 10,000 req/min
๊ฐ ํ์ด ์์ฒด ์ ํ ๋ก์ง์ ๋ง๋๋ ๋์ , ๊ฒ์ดํธ์จ์ด์์ ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ๋ค. ๋ฐฑ์๋ ์๋น์ค๋ ๊ณผ๊ธ ๋ฑ๊ธ์ด๋ ๊ตฌ๋ ๋ก์ง์ ์ ํ์๊ฐ ์๋ค.
์์ฒญ/์๋ต ๋ณํ
๋ชจ๋ฐ์ผ ์ฑ๊ณผ ๋ ๊ฑฐ์ ์์คํ ์ด ๋ค๋ฅธ ํฌ๋งท์ ์ฌ์ฉํด๋, ๊ฒ์ดํธ์จ์ด๊ฐ ์ค๊ฐ์์ ๋ณํํ๋ค. ์์ชฝ ๋ค ์๋๋ฐฉ์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅด๊ณ ์์ ์ ํฌ๋งท์ผ๋ก๋ง ํต์ ํ๋ค.
API ๋ฒ์ ๊ด๋ฆฌ
/v1/* โ ๊ตฌ ๋ฒ์ ๋ฐฑ์๋
/v2/* โ ์ ๋ฒ์ ๋ฐฑ์๋
๋ง์ด๊ทธ๋ ์ด์ ์ค์๋ ๊ตฌ ๋ฒ์ ํด๋ผ์ด์ธํธ๋ ๊ณ์ ๋์ํ๊ณ , ์ ํด๋ผ์ด์ธํธ๋ ์์ฐ์ค๋ฝ๊ฒ ์ ๋ฒ์ ์ผ๋ก ์ด๋ํ๋ค.
ํตํฉ ๊ด์ฐฐ์ฑ (Observability)
๋ชจ๋ ์์ฒญ์ด ํ๋์ ์ง์ ์ ์ ํต๊ณผํ๋ฏ๋ก, ์ด๋ค ์๋ํฌ์ธํธ์ ํธ๋ํฝ์ด ๋ชฐ๋ฆฌ๋์ง, ์ด๋ค ํด๋ผ์ด์ธํธ๊ฐ ์๋ฌ๋ฅผ ๋ง์ด ๋ด๋์ง, ์ด๋์ ์ง์ฐ์ด ๋ฐ์ํ๋์ง ํ๋์ ๋ณผ ์ ์๋ค.
๋ํ ๋๊ตฌ
- Kong (Nginx ๊ธฐ๋ฐ)
- AWS API Gateway
- Apigee
- Tyk
- Envoy ๊ธฐ๋ฐ ๊ฒ์ดํธ์จ์ด
5. ์ธ ๊ฐ๋ ์ด ํผ๋๋๋ ์ด์
์ค์ ๋๊ตฌ๋ค์ด ์ธ ์ญํ ์ ๊ฒฝ๊ณ๋ฅผ ์กด์คํ์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
Nginx ์์
Nginx ์๋ = Reverse Proxy (SSL ์ข
๋ฃ, ์บ์ฑ, ์์ถ)
+ ์ฌ๋ฌ ๋ฐฑ์๋ + ํฌ์ค ์ฒดํฌ = Load Balancer
+ ์ธ์ฆ ํ๋ฌ๊ทธ์ธ + ์๋ ์ ํ + OpenResty = API Gateway
ํ๋์ ์ํํธ์จ์ด๊ฐ ์ค์ ์ ๋ฐ๋ผ ์ธ ๊ฐ์ง ๋ชจ์๋ฅผ ๋์์ ์ฐ๊ณ ์๋ค.
Kong ์์
Kong์ ์ค์ค๋ก๋ฅผ API Gateway๋ผ๊ณ ๋ถ๋ฅด์ง๋ง, ๋ด๋ถ์ ์ผ๋ก๋ Nginx ์์ ๊ตฌ์ถ๋์ด ์๋ค. Reverse Proxy ๋์๊ณผ Load Balancing์ ๋ด๋ถ์์ ์ํํ๊ณ , ๊ทธ ์์ API Gateway ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ฒ์ด๋ค.
AWS ์์
AWS์๋ Application Load Balancer(ALB)์ API Gateway๊ฐ ๋ณ๋ ์ ํ์ผ๋ก ์์ง๋ง, ๊ฒฝ๊ณ๊ฐ ๋ง์ด ๊ฒน์น๋ค. ALB๋ ์ด๋ฏธ ์ฝํ ์ธ ๊ธฐ๋ฐ ๋ผ์ฐํ ์ ์ง์ํ๋ค.
6. ์ค์ ํ๋ก๋์ ์์์ ๊ณ์ธต ๊ตฌ์กฐ
๋๊ท๋ชจ ์์คํ ์์๋ ์ธ ๊ฐ์ง๊ฐ ๊ณ์ธต์ ์ผ๋ก ํจ๊ป ๋์ํ๋ค.
[์ธํฐ๋ท]
โ
[CDN / Edge Proxy] โ SSL ์ข
๋ฃ, ์ ์ ์บ์ฑ, DDoS ๋ฐฉ์ด
โ
[API Gateway] โ ์ธ์ฆ, ์๋ ์ ํ, ๋ฒ์ ๋ผ์ฐํ
โ
[Load Balancer] โ ํธ๋ํฝ ๋ถ๋ฐฐ, ํฌ์ค ์ฒดํฌ
โ
[๋ฐฑ์๋ ์๋น์ค ํด๋ฌ์คํฐ] โ ๋น์ฆ๋์ค ๋ก์ง๋ง ์ฒ๋ฆฌ
ํต์ฌ ์ ๋ฆฌ
๊ตฌ๋ถ ์ฃผ์ ์ญํ ์ดํด ์์ค ํต์ฌ ํด๊ฒฐ ๋ฌธ์ Reverse Proxy SSL, ์บ์ฑ, ์์ถ, ๋ณด์ ์ฐ๊ฒฐ/๋ผ์ฐํ ์๋ฒ ๋ณดํธ + ๋ถํ ๊ฒฝ๊ฐ Load Balancer ํธ๋ํฝ ๋ถ๋ฐฐ + ํฌ์ค ์ฒดํฌ TCP ๋๋ HTTP ์ํ ํ์ฅ + ๊ณ ๊ฐ์ฉ์ฑ API Gateway ์ธ์ฆ, ์๋ ์ ํ, ๋ณํ, ๋ฒ์ ๊ด๋ฆฌ API ๋น์ฆ๋์ค ๋ก์ง ์ธํ๋ผ ๊ด์ฌ์ฌ์ ์ค์ํ ์ธ ๊ฐ๋ ์ ๋ณ๊ฐ๊ฐ ์๋๋ผ ์งํ ๊ด๊ณ๋ค. Reverse Proxy โ Load Balancer โ API Gateway ์์ผ๋ก ๋ ๋ง์ ๊ฒ์ ์ดํดํ๊ณ , ๋ ๋ง์ ์ฑ ์์ ๋งก๋๋ค.