
ALB, Ingress, Node.js, Kubernetes ๊ตฌ์กฐ ์ฝ๊ฒ ์ดํดํ๊ธฐ
์ต๊ทผ ์ ์ฌํ์ ๋๋ฃ๋ถ์ ์ง๋ฌธ์ ์์ฌ์๋ "ALB", "Ingress", "ECR", "Kubernetes" ๊ฐ์ ๋จ์ด๋ค์ ์ ๋๋ก ์ดํดํ์ง ๋ชปํ๊ณ ์์์ ๊นจ๋ซ๊ณ ์ ๋ฆฌํด๋ด ๋๋ค. ์ฐ๋ฆฌ ์น ์๋น์ค๊ฐ ์ฌ์ฉ์์๊ฒ ๋๋ฌํ๋ ํ๋ฆ์ ์ดํดํ๋ฉด ์ด ๋จ์ด๋ค์ ์๋ฏธ๊ฐ ์์ฐ์ค๋ฝ๊ฒ ์ฐ๊ฒฐ๋ฉ๋๋ค.
์ด ๊ธ์ ํ๋ก ํธ์๋ ์ฝ๋๊ฐ ์ด๋ป๊ฒ ๋ฐฐํฌ๋๊ณ ์ฌ์ฉ์ ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋๋์ง ์ ์ฒด ํ๋ฆ์ ์ฝ๊ฒ ์ ๋ฆฌํ ๋ด์ฉ์
๋๋ค.
์ ์ฒด ํ๋ฆ ์์ฝ
ํ๋ก ํธ์๋ ์ฝ๋๋ Docker๋ก ๋น๋๋์ด AWS์ Kubernetes์ ๋ฐฐํฌ๋๊ณ , ์ฌ์ฉ์๋ ALB → Ingress → Node.js ์๋ฒ๋ฅผ ๊ฑฐ์ณ ์๋น์ค๋ฅผ ์ ๋ฌ๋ฐ์ต๋๋ค.
์ฌ์ฉ์ → ์๋ฒ๊น์ง ์์ฒญ ํ๋ฆ
์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์ ์ํ๋ฉด, ์์ฒญ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ์ ๋ฌ๋ฉ๋๋ค.
1. ALB๋ฅผ ์ง๋ Kubernetes๋ก ์ง์
- ์ฌ์ฉ์์ ์์ฒญ์ ๋จผ์ AWS ALB (Application Load Balancer) ๋ก ์ ๋ฌ๋ฉ๋๋ค.
- ALB๋ ๋๋ฉ์ธ ๋ฐ ๊ฒฝ๋ก ๊ธฐ๋ฐ์ผ๋ก ๋ผ์ฐํ ์ ์ํํ๋ฉฐ, HTTPS ์ธ์ฆ์ ์ฒ๋ฆฌ๋ฅผ ๋ด๋นํฉ๋๋ค.
- ๋ค์์ ์๋ฒ์ ํธ๋ํฝ์ ๋ถ์ฐ์ํค๊ณ , ์ฅ์ ๊ฐ ๋ฐ์ํ ์๋ฒ๋ฅผ ์๋์ผ๋ก ์ ์ธํฉ๋๋ค.
2. Ingress (Kubernetes ๋ด๋ถ ๋ผ์ฐํฐ)
์๋น์ค๊ฐ Kubernetes ํด๋ฌ์คํฐ ์์์ ์ด์๋๋ค๋ฉด, ALB๋ ์ธ๋ถ์์ ํด๋ฌ์คํฐ๋ก ๋ค์ด์ค๋ ๊ด๋ฌธ ์ญํ ์ ํ๋ฉฐ ํด๋ฌ์คํฐ ๋ด๋ถ์๋ ๋ ๋ค๋ฅธ ๋ผ์ฐํฐ์ธ Ingress๊ฐ ์กด์ฌํฉ๋๋ค.
- Ingress๋ Kubernetes ๋ด๋ถ์์ ์์ฒญ์ ์ด๋ค ์๋น์ค๋ก ์ ๋ฌํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
- /api ์์ฒญ์ backend-service๋ก, / ์์ฒญ์ frontend-service๋ก ๋ผ์ฐํ ๋ฉ๋๋ค.
ALB์ Ingress๋ ๋ชจ๋ ํธ๋ํฝ์ ๋ถ๊ธฐํ๋ ์ญํ ์ ํ์ง๋ง, ALB๋ ํด๋ฌ์คํฐ ์ธ๋ถ, Ingress๋ ํด๋ฌ์คํฐ ๋ด๋ถ์ ์กด์ฌํ๋ฉฐ ์ญํ ์ด ๋ถ๋ฆฌ๋์ด ์์ต๋๋ค. ALB๋ Kubernetes ๋ด๋ถ ๊ตฌ์กฐ๋ฅผ ์์ง ๋ชปํ๊ธฐ ๋๋ฌธ์, Ingress์ ํจ๊ป ์ฌ์ฉ๋์ด์ผ ํฉ๋๋ค.
3. Node.js ์๋ฒ
- Ingress๊ฐ / ์์ฒญ์ frontend-service๋ก ์ ๋ฌํ๋ฉด, ํด๋น ์๋น์ค๊ฐ ๋ฐฐํฌ๋ Pod(์คํ ๋จ์) ์ค ํ๋์ธ Node.js ์๋ฒ๋ก ์์ฒญ์ด ์ ๋ฌ๋ฉ๋๋ค.
- ๋ฐฐํฌ๋ Pod ์ Github Actions๋ฅผ ํตํด ์๋ ๋น๋๋๋ Docker ์ด๋ฏธ์ง๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
์ด์ด์ง๋ ์ง๋ฌธ๋ค
๋น๋ ๋ฐ ๋ฐฐํฌ ํ๋ฆ
์ผ๋ฐ์ ์ธ ํ๋ฆ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- GitHub์ ์ฝ๋ Push
- GitHub Actions ์คํ
- Docker ์ด๋ฏธ์ง ๋น๋
- AWS ECR์ ์ด๋ฏธ์ง ์ ์ฅ
- Kubernetes์ ๋ฐฐํฌ
- ์๋ก์ด Node.js ์๋ฒ Pod๊ฐ ์คํ๋จ
์ ์ ํ์ผ ์๋น๋ง ํ์ํ๋ค๋ฉด?
1. Nginx
- Nginx๋ ์ ํต์ ์ผ๋ก ์ ์ ํ์ผ ์๋น๊ณผ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ญํ ์ ํนํ๋ ์น ์๋ฒ์ ๋๋ค.
- ์ ์ ํ์ผ์ ๋น ๋ฅด๊ฒ ์ ๋ฌํ๋ฉฐ, ์์ฒญ์ ๋ฐ๋ผ ๋ค๋ฅธ ์๋ฒ(์: Node.js)๋ก ํธ๋ํฝ์ ์ ๋ฌํ๋ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ญํ ๋ ์ํํฉ๋๋ค.
- ๋ง์ ์๋น์ค์์ Node.js ์๋จ์ Nginx๋ฅผ ๋์ด
- ์ ์ ์์ฐ์ Nginx๊ฐ ์ง์ ์๋นํ๊ณ ,
- API ์์ฒญ ๋ฑ ๋์ ์ฒ๋ฆฌ๋ Node.js๋ก ์ ๋ฌํ๋ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Node.js ์๋ฒ๊ฐ ์ง์ SSR๊ณผ ์ ์ ํ์ผ ์๋น๊น์ง ๋ชจ๋ ์ฒ๋ฆฌํ๋ค๋ฉด, Nginx๋ฅผ ๋ณ๋๋ก ๋์ง ์์ ์๋ ์์ต๋๋ค.
2. S3 + CloudFront
- S3๋ AWS๊ฐ ์ ๊ณตํ๋ ์ ๋ ดํ๊ณ ์์ ์ ์ธ ํ์ผ ์ ์ฅ ๊ณต๊ฐ์
๋๋ค.
- ๋น๋๋ ํ๋ก ํธ์๋ ์ ์ ํ์ผ(HTML, JS, CSS, ์ด๋ฏธ์ง ๋ฑ)์ ์ ์ฅํ๋ ๋ฐ ์ ํฉํฉ๋๋ค.
- CloudFront๋ AWS์ ๊ธ๋ก๋ฒ CDN(์ฝํ
์ธ ์ ์ก ๋คํธ์ํฌ) ์๋น์ค๋ก,
- S3์ ์ ์ฅ๋ ์ ์ ํ์ผ์ ์ ์ธ๊ณ์ ๋ถ์ฐ๋ ์ฃ์ง ์๋ฒ์ ์บ์ฑํด ์ฌ์ฉ์๊ฐ ๋ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ด ์กฐํฉ์ ์๋ฒ ์ด์ ๋ถ๋ด ์์ด, ๊ณ ์ฑ๋ฅ์ผ๋ก ์ ์ ํ์ผ์ ๋ฐฐํฌํ ์ ์๋ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
- ๋ณดํต SPA(Single Page Application)๋ ์ ์ ์ฌ์ดํธ์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
| ๋ฐฉ์ | ์ฅ์ | ๋จ์ | ํ์ฉ ์์ |
| Nginx + Node.js | ์ ์ ํ์ผ๊ณผ API ์์ฒญ์ ํจ์จ์ ์ผ๋ก ๋ถ๋ฆฌ ๊ฐ๋ฅ. ์ ์ฐํ ๋ฆฌ๋ฒ์ค ํ๋ก์ ์ค์ |
์๋ฒ ์ด์๊ณผ ๊ด๋ฆฌ ํ์ | SSR ์ฑ + ์ ์ ํ์ผ ๋น ๋ฅธ ์๋น์ด ํ์ํ ๋ |
| Node.js ๋จ๋ ์๋ฒ | ๊ตฌ์กฐ ๋จ์ํ, SSR๊ณผ ์ ์ ํ์ผ ๋ชจ๋ ์ฒ๋ฆฌ ๊ฐ๋ฅ | ๊ณ ๋ถํ ์ ์๋ฒ ๋ฆฌ์์ค ๋ถ๋ด ๊ฐ๋ฅ | SSR ์ค์ฌ ์ฑ, ๋จ์ผ ์๋ฒ๋ก ๊ฐ๋จํ ์ด์ํ ๋ |
| S3 + CloudFront | ๋น์ฉ ํจ์จ์ , ๊ธ๋ก๋ฒ CDN์ผ๋ก ๋น ๋ฅธ ์๋ต ์๋ฒ๋ฆฌ์ค ๊ตฌ์กฐ๋ก ๊ด๋ฆฌ ์ฉ์ด |
SSR ๋ถ๊ฐ, ์ ์ ํ์ผ๋ง ์๋น ๊ฐ๋ฅ | ์ ์ SPA, ๋ธ๋ก๊ทธ, ๋ง์ผํ ์ฌ์ดํธ ๋ฑ |
์ฃผ์ ๊ตฌ์ฑ ์์ ์ ๋ฆฌ
| ALB | ์ธ๋ถ ์์ฒญ์ ๊ด๋ฌธ. HTTPS ์ฒ๋ฆฌ ๋ฐ ์๋น์ค ๋ผ์ฐํ |
| Ingress | Kubernetes ๋ด๋ถ ์์ฒญ ๋ผ์ฐํ ๋ด๋น |
| Pod | (Frontend ๊ด์ ์์) Docker ์ด๋ฏธ์ง ๊ธฐ๋ฐ์ผ๋ก ์คํ๋๋ Node.js ์๋ฒ |
| Node.js | SSR ๋ ๋๋ง ๋๋ HTML/JS ์๋ต ์์ฑ |
| GitHub Actions | CI/CD ์๋ํ ๋๊ตฌ |
| ECR | AWS Docker ์ด๋ฏธ์ง ์ ์ฅ์ |
| Docker | Node.js ์ฑ์ ํจํค์งํ์ฌ ์คํ ๊ฐ๋ฅํ๋๋ก ์ด๋ฏธ์ง๋ก ๋ง๋๋ ๋๊ตฌ |
๋ง์น๋ฉฐ
์ด ๊ธ์ ์ธํ๋ผ ์ง์์ด ๋ง์ง ์์ ์ํ์์ ๊ฐ๋ ์ ํ๋์ฉ ์ ๋ฆฌํ๋ฉฐ ์์ฑํ ๋ด์ฉ์ ๋๋ค. ๋ถ์กฑํ ๋ถ๋ถ์ด ์๋ค๋ฉด ๋๊ธ๋ก ์ ๋ณด์ฃผ์ธ์!
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
'์น (WEB) > ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| ChatGPT ๋ก React ์ํ ๊ด๋ฆฌ ๊ณต๋ถํด๋ณด๊ธฐ (6) | 2025.07.27 |
|---|---|
| useQuery์ isLoading์ด SSR์์๋ true๊ฐ ๋ ์ ์์๊น? (0) | 2025.04.26 |
| [๋ธ๋ผ์ฐ์ ] ์ธํฐ๋ท ์์ ํด๋ผ์ด์ธํธ - ์๋ฒ ํต์ ๊ณผ์ (3) | 2025.02.09 |
| ์น๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ์ฑ๊ฐ๋ฐ ์์ด๋ณด๊ธฐ :: ๋ ๋ค ํด๋ณธ ๊ฐ๋ฐ์ ๐ (1) | 2024.03.24 |
| Font Glyph (0) | 2023.09.16 |
Comment