System Architecture - Team-likelion-3rd-Project/likelion-devops-7th-3rd-team01 GitHub Wiki
System Architecture
์ํ: 1์ฃผ์ฐจ ํด๋ผ์ฐ๋ ์ค๊ณ์ / ํ ๊ฒํ ์
์์ฑ์ผ: 2026-10-07. ์ค์ ๊ตฌ์ถยท๊ฒ์ฆ ๊ฒฐ๊ณผ๊ฐ ์๋ ๋ชฉํ ๊ตฌ์กฐ์ ๋๋ค. ๋ค์ ์ฃผ ํ ๊ฒํ ๋ฅผ ๊ฑฐ์ณ ์์ ํฉ๋๋ค. ๊ณ์ ยท๋ฆฌ์ ยทAZ ์ด๋ฆ์ ๋ฏธ์ ์ ๋๋ค. 2026-10-14 ๊ณต์ ๋จ๊ฐ ๊ธฐ์ค์ ๊ฐ์ ๊ธฐ๋ฐ ๋น์ฉ ์ถ์ ํ๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ์ค์ ๊ณ์ ยท์ฌ์ยท์ฌ์ฉ๋ ํ์ธ ํ ์ฌ์ฐ์ ํฉ๋๋ค. 2026-10-12 ์ ๋ฐ์ดํธ: ํ ํ์ ์ฌํญ์ธ 6๋ถ์ผยท30๋ถ ๊ฐฑ์ ๊ณผ mock/real ์ด์ ๋ฐฉ์์ ๋ฐ์ํ์ต๋๋ค. ์ธํ๋ผ ๊ตฌ์ฑ์ ๊ณ์ ์ค๊ณ์์ด๋ฉฐ ์ค์ ๊ตฌ์ถยท๊ฒ์ฆ ์๋ฃ๋ฅผ ๋ปํ์ง ์์ต๋๋ค.
๊ฐ์
AI ๋ด์ค ๋ธ๋ฆฌํ ์๋น์ค์ ๊ฐ๋ฐ ํ๊ฒฝ์ ์จํ๋ ๋ฏธ์ค(develop), ์ด์ ํ๊ฒฝ์ AWS(main)๋ก ๋ถ๋ฆฌํฉ๋๋ค. AWS๋ ํผ๋ธ๋ฆญ ์ ๊ตฌ, ํ๋ผ์ด๋น ์ฑ, ํ๋ผ์ด๋น ๋ฐ์ดํฐ์ 3Tier๋ก ๊ตฌ์ฑํ๊ณ ๋ AZ์ ๋ถ์ฐํฉ๋๋ค.

- ํ๋ฉด: ์ฌ์ฉ์ โ CloudFront โ ๋น๊ณต๊ฐ S3. ๋ ์๋น์ค๋ VPC ์๋ธ๋ท ๋ฐ์ ์์ต๋๋ค.
- API: ์ฌ์ฉ์ โ ๋ AZ์ ์ฐ๊ฒฐ๋ ALB โ ์ ์ ์ฑ ํ๋.
- ์ ์ฅ์: ์์ชฝ ์ฑ์ด RDSยทRedis์ ํ์ฌ Primary ์๋ํฌ์ธํธ์ ์ ์ํฉ๋๋ค. ๊ฐ AZ์ ๋ ๋ฆฝ๋ DB๋ฅผ ๋ง๋ค์ด ๋ฐ๋ก ์ฐ๋ ๊ตฌ์กฐ๊ฐ ์๋๋๋ค.
- ์ธ๋ถ ํธ์ถ: ์ฑ A โ NAT-A โ IGW โ ๋ด์คยทAI API, ์ฑ B โ NAT-B โ IGW โ ๋ด์คยทAI API.
- ALB๋ ๋ ผ๋ฆฌ์ 1๊ฐ, NAT๋ AZ๋ณ 1๊ฐ๋ก ์ด 2๊ฐ์ ๋๋ค.
๋ด์ค ์์ง๊ณผ AI ์ด์
2026-10-12 ํ ํ์ ์ฌํญ๊ณผ API ๋ช ์ธ, ์ฑ๋ฅ ํ ์คํธ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ฆฌํฉ๋๋ค.
- ๋ถ์ผ๋ณ ์์ฝ: ์ ์นยท๊ฒฝ์ ยท์ฌํยท์ํ/๋ฌธํยทIT/๊ณผํยท์คํฌ์ธ ์ 6๊ฐ ๋ถ์ผ๋ฅผ 30๋ถ๋ง๋ค ๊ฐฑ์ ํฉ๋๋ค. ์ฌ์ฉ์๋ ์ ์ฅ๋ ์์ฝ์ ์กฐํํ๋ฏ๋ก ์กฐํ ์ฌ์ฉ์ ์๋งํผ AI๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค.
- ๊ธฐ์ฌ ์์ง: ์ ์นยท๊ฒฝ์ ยท์ฌํยท์ํ/๋ฌธํยท์คํฌ์ธ ๋ ์ฐํฉ๋ด์ค RSS, IT/๊ณผํ์ ์ ์์ ๋ฌธ RSS๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ ๋ชฉยท์์ฝ๋ฌธยท๋งํฌยท์ธ๋ก ์ฌยท๋ ์ง๋ฅผ ์ ์ฅํ๊ณ 7์ผ ๋ณด๊ดํฉ๋๋ค.
- ์ง๋ฌธ ๋ต๋ณ: ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ๊ธฐ์ฌ๊ฐ DB์ ์์ผ๋ฉด ๋ค์ด๋ฒ ๋ด์ค ๊ฒ์ API๋ก ๋ณด์ํฉ๋๋ค. ์ง๋ฌธ 1๊ฑด๋น AI 1ํ ํธ์ถ์ ๋น์ฉ ์ฐ์ ๊ธฐ์ค์ผ๋ก ๋ก๋๋ค. ์ฌ์ฉ์๋น ํ๋ฃจ ์ต๋ 10ํ์ด๋ฉฐ ์ธ๋ถ ์ฐจ๊ฐ ๊ท์น์ API ๋ช ์ธ๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- AI ์ ๊ณต ๋ฐฉ์: ํ AWS ๊ณ์ ์์ Amazon Bedrock์ ์ฌ์ฉํ ์ ์์ผ๋ฉด Bedrock์ ์ฌ์ฉํ๊ณ , ๋ถ๊ฐ๋ฅํ๋ฉด AI ํ์ฌ API๋ฅผ ์ง์ ํธ์ถํฉ๋๋ค. ์์ฝยท์ง๋ฌธ ๋ต๋ณ์ ๊ฐ์ ์ ๊ณต ๋ฐฉ์์ ์ฌ์ฉํ๋ฉฐ ๋ชจ๋ธ์ ์์ง ๋ฏธ์ ์ ๋๋ค.
- ํ์ ๊ฐ๋ฐยทํ
์คํธยทk6 ๋ถํ ํ
์คํธ:
AI_MODE=mock์ผ๋ก ์ค์ AI๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค. ์ด๋ AI ํธ์ถ๋ฃ๋ ์์ง๋ง AWS ์ธํ๋ผ ๋น์ฉ๊ณผ๋ ๋ณ๊ฐ์ ๋๋ค. - ์ ๊ฒยท๋ฐ๋ชจ: ์ค์ AI๋ ํ์ง ํ์ธ ๋ฐ ๋ฐ๋ชจ์ ํ์ํ ์๊ฐ์๋ง
AI_MODE=real๋ก ์ผญ๋๋ค. ์์ ์์ ์ 4์ฃผ์ฐจ ์ ๊ฒ๊ณผ 6์ฃผ์ฐจ ๋ฐ๋ชจ ๋ฆฌํ์คยท๋ฐํ์ด๋ฉฐ ์ ํํ ์ผ์ยท์๊ฐ์ ์ถํ ํ์ ํฉ๋๋ค. - mock ๊ฒฐ๊ณผ๋ ํ๋ฉด์ ์ํ ๋ฐ์ดํฐ๋ก ํ์ํฉ๋๋ค. ์ค์ AI ์ง์ฐ์ ์๋ ์ธก์ ํด mock ์ง์ฐ์ ๋ฐ์ํ๋ ๊ฒ์ฆ ๋ฐฉ์์ ์ฑ๋ฅ ํ ์คํธ ๋ฌธ์๋ฅผ ๋ฐ๋ฆ ๋๋ค.
AI ๋น์ฉ ์ฐ์ ์ฉ ์ฌ์ฉ๋ ๊ฐ์
์๋๋ ๋ฐฑ์๋ ๋ด๋น์ด ์ ๊ณตํ ์ถ์ ์น์ด๋ฉฐ ์ค์ธก๊ฐยท์ฒญ๊ตฌ ๊ธ์ก์ด ์๋๋๋ค. ๋ชจ๋ธ๋ณ ์ ๋ ฅยท์ถ๋ ฅ ๋จ๊ฐ์ ์ค์ ์ฌ์ฉ ์๊ฐ ํ์ ํ ๋น์ฉ์ ๊ณ์ฐํฉ๋๋ค. ์ด์ ์ 5๋ถยท3๋ถ์ผ ๊ฐ์ ์ ์ ์ฉํ์ง ์์ต๋๋ค.
| ์ฉ๋ | ํธ์ถ ์ ๊ธฐ์ค | 1ํ ์ ๋ ฅ ํ ํฐ | 1ํ ์ถ๋ ฅ ํ ํฐ |
|---|---|---|---|
| ๋ถ์ผ๋ณ ์์ฝ | 30๋ถ๋ง๋ค 6ํ. 24์๊ฐ์ด๋ฉด 288ํ | ์ฝ 8,000 (๊ธฐ์ฌ 30๊ฐ ๊ธฐ์ค) | ์ฝ 1,500 |
| ์ง๋ฌธ ๋ต๋ณ | ์ง๋ฌธ 1๊ฑด๋น 1ํ, ์ฌ์ฉ์๋น ํ๋ฃจ ์ต๋ 10ํ | ์ฝ 3,000 (๊ธฐ์ฌ 5~10๊ฐ ๊ธฐ์ค) | ์ฝ 500 |
- ๋ถ์ผ ์์ฝ 24์๊ฐ ๊ธฐ์ค: ์
๋ ฅ
288 ร 8,000 = 2,304,000ํ ํฐ, ์ถ๋ ฅ288 ร 1,500 = 432,000ํ ํฐ. - ์ค์ AI ๊ฐ๋ ์๊ฐ์ด H์๊ฐ์ด๋ฉด ๋ถ์ผ ์์ฝ์
H ร 2 ร 6ํ๋ก ์ถ์ ํฉ๋๋ค. 4์๊ฐ ์์๋ 48ํ, ์ ๋ ฅ 384,000ยท์ถ๋ ฅ 72,000ํ ํฐ์ ๋๋ค. ๊ธฐ๋ ์ ์ถ๊ฐ ๊ฐฑ์ ยท์ฌ์๋๋ ๋ณ๋ ํฉ์ฐํฉ๋๋ค. - ์ง๋ฌธ ์๊ฐ Q๊ฑด์ด๋ฉด ์
๋ ฅ
Q ร 3,000, ์ถ๋ ฅQ ร 500ํ ํฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด 10๋ช ์ด ๊ฐ๊ฐ 5ํ ์ง๋ฌธํ๋ฉด 50๊ฑด์ ๋๋ค. - ์ด AI ๋น์ฉ์ ์ค์ ํธ์ถ์ ์ ๋ ฅ ํ ํฐ ์ฌ์ฉ๋ฃ์ ์ถ๋ ฅ ํ ํฐ ์ฌ์ฉ๋ฃ๋ฅผ ํฉ์ฐํฉ๋๋ค. 24์๊ฐ ์์ ์ฌ์ฉ์ด๋ ๋งค๋ฌ ๋งค์ผ ์ฌ์ฉ์ ์ ์ ํ์ง ์์ต๋๋ค.
- ์์ง ์ ํ์ง ์์ ํญ๋ชฉ: Bedrock ์ ๊ทผ ๊ฐ๋ฅ ์ฌ๋ถ, ์์ธ ๋ฆฌ์ ๋ชจ๋ธ ์ง์ยท๋ชจ๋ธ ๋จ๊ฐ, ์ ๊ฒยท๋ฐ๋ชจ ์ผ์์ ์ค์ ๊ฐ๋ ์๊ฐยท์ง๋ฌธ ์.
๋น์ฉ ์ถ์ ๊ธ์กํ
2026-10-14 ๊ฒํ ์ด์: ์ค์ ์ฒญ๊ตฌ์กยทํ์ ์์ฐ์ด ์๋๋๋ค. ๊ฐ์ ๊ธฐ๋ฐ ํฉ๊ณ ์ฝ $316.33, ์๋น๋น 20% ํฌํจ ์ฝ $379.60(์ธ์ )์ ๋๋ค.
1. ๊ณ์ฐ ๋ฒ์์ ๊ฐ์
- ์์ธ(ap-northeast-2)์ ๊ณ์ฐ์ฉ ๋ฆฌ์ ์ผ๋ก ๊ฐ์ ํ๋ค. ํ ๋ฆฌ์ ํ์ ์ ์๋๋ค. USD, ์จ๋๋งจ๋, ํ ์ธยทํฌ๋ ๋งยทํ๋ฆฌํฐ์ดยท์ธ๊ธ ๋ฏธ๋ฐ์์ด๋ค.
- ๋ฒ์๋ 2
6์ฃผ์ฐจ(10/1211/15, ๋ง์ง๋ง ์ฃผ๋ง ํฌํจ ์ ๋ฆฌ ๊ธฐ๊ฐ)๋ค. ๊ธฐ๊ฐ ์ข ๋ฃ ํ ๋ชจ๋ ๊ณผ๊ธ ์์์ ์ ๋ฆฌํ๋ค๋ ๊ฐ์ ์ด๋ฉฐ ์ค์ ์์ ๋ง์ง๋ง ๋ ์ 11/13์ด๋ค. - ์ฌ์ฉ์ ์์ฒญ๋๋ก NAT 2๊ฐ, RDS Primary+Standby, Redis Primary+Replica๋ฅผ ์ ์งํ๋ค.
- 2์ฃผ์ฐจ NAT ์ค์ต 4์๊ฐ, 3์ฃผ์ฐจ ๋ด๋ถ ํต์ ์ค์ต 4์๊ฐ์ ๊ฐ์ ํ๋ค. 3์ฃผ์ฐจ ํ ์คํธ EC2๋ t3.medium 1๋ร4์๊ฐ์ด๋ค.
- 4์ฃผ์ฐจ EC2+kubeadm์ t3.medium ์ ์ด ๋ ธ๋ 1๋์ t3.large ์์ ๋ ธ๋ 2๋, ํ๋ฃจ 4์๊ฐร5์ผ=20์๊ฐ์ผ๋ก ๊ณ์ฐํ๋ค.
- 5~6์ฃผ์ฐจ EKS ์์ ๋ ธ๋๋ t3.large 2๋, ํ๋ฃจ 4์๊ฐร10์ผ=40์๊ฐ์ด๋ค. EKS ์ ์ด ์์ญ์ ํ์ค ์ง์ ๋ฒ์ 1๊ฐ๋ฅผ 14์ผ=336์๊ฐ ์ ์งํ๋ค. Auto Mode๋ ์ฌ์ฉํ์ง ์๋ ๊ฐ์ ์ด๋ค.
- NAT 2๊ฐ๋ ์ด 68์๊ฐ(4+4+20+40), ALB 1๊ฐ๋ 60์๊ฐ(20+40)๋ง ์กด์ฌํ๋๋ก ์์ฑยท์ญ์ ํ๋ค๋ ๊ฐ์ ์ด๋ค. EC2 ์ข ๋ฃ๋ง์ผ๋ก NATยทALB ๋น์ฉ์ด ๋ฉ์ถ๋ ๊ฒ์ ์๋๋ค. ์ฌ์์ฑยท์์ ์ค๋น ์๊ฐ์ด ๊ธธ์ด์ง๋ฉด ์ถ๊ฐ๋๋ค.
- ๋ฐ์ดํฐ ๋ณด์กด๊ณผ ์ฌ์์ฑ ์ ์ฐจ๊ฐ ์์ง ํ์ ๋์ง ์์์ผ๋ฏ๋ก RDSยทRedis๋ 3~6์ฃผ์ฐจ 28์ผ=672์๊ฐ ์ ์งํ๋ ๋ณด์์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐํ๋ค. ์ด๋ ํญ์ ์ผ๋๋ผ๋ ์ง์๊ฐ ์๋๋ค. ์ค์ ์ข ๋ฃยท๋ณต์ ์ ์ฐจ ํ์ ํ ์๊ฐ์ ์ค์ฌ ์ฌ์ฐ์ ํ๋ค.
- RDS MySQL db.t3.medium Multi-AZ ๋ฐฐํฌ 1๊ฐ, gp3 ๋ ผ๋ฆฌ ์ฉ๋ 20GB; Redis OSS cache.t3.small 2๊ฐ๋ฅผ ๊ฐ์ ํ๋ค. ์ง์ ์ค์ธ ์์ง ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์ฐ์ฅ ์ง์๋ฃ๋ ์ ์ธํ๋ค. ์ฌ์์ ๊ฒฌ์ ์ฉ์ด๋ฉฐ ์ฑ๋ฅ ๊ฒ์ฆ ์ ์ด๋ค.
- EBS gp3๋ 3์ฃผ์ฐจ ํ ์คํธ์ฉ 30GBร7์ผ, 4์ฃผ์ฐจ 3๋ร30GBร7์ผ, 5~6์ฃผ์ฐจ 2๋ร30GBร14์ผ์ ์ ์งํ๋ค. ์ ๋จ๊ฐ๋ 730์๊ฐ์ผ๋ก ๋๋ ๊ทผ์ฌํ๋ค. ์ค์ ์ ๊ธธ์ดยท์๊ฐ๋ณ ์ฌ์ฉ๋์ ๋ฐ๋ผ ์์ก ์ฐจ์ด๊ฐ ๋ฐ์ํ ์ ์๋ค.
- ALB ํ๊ท 1 LCU, NAT ์ฒ๋ฆฌ๋ ํฉ๊ณ 20GB๋ฅผ ๊ฐ์ ํ๋ค. ๊ณต์ธ IPv4๋ NAT์ฉ 2๊ฐร68์๊ฐ, ALB์ฉ 2๊ฐร60์๊ฐ์ด๋ค. ์ถ๊ฐ IP๊ฐ ํ ๋น๋๋ฉด ์ฆ์กํ๋ค. ์ฑยทDB๋ ๊ณต์ธ IP ์์ด ๊ตฌ์ฑํ๋ค.
2. ์์ ๊ธ์ก
| ํญ๋ชฉ | ์ ์ฉ ๋จ๊ฐยท๊ณ์ฐ | ์์ USD |
|---|---|---|
| EC2 | t3.medium $0.052/์๊ฐร24 + t3.large $0.104/์๊ฐร2๋ร60์๊ฐ | 13.73 |
| EKS ์ ์ด ์์ญ | ํ์ค ์ง์ $0.10/์๊ฐร336์๊ฐ | 33.60 |
| EBS gp3 | $0.0912/GBยท์ร(30ร168+90ร168+60ร336)/730 | 5.04 |
| NAT ๊ฒ์ดํธ์จ์ด 2๊ฐ | $0.059/๊ฐยท์๊ฐร2ร68 | 8.02 |
| NAT ๋ฐ์ดํฐ ์ฒ๋ฆฌ | $0.059/GBร20GB | 1.18 |
| ๊ณต์ธ IPv4 | $0.005/IPยท์๊ฐร(2ร68+2ร60) | 1.28 |
| ALB 1๊ฐ๏ผํ๊ท 1 LCU | ($0.0225/์๊ฐ๏ผ$0.008/LCUยท์๊ฐ)ร60 | 1.83 |
| RDS MySQL Multi-AZ | ์ด์คํ ํฌํจ ๋จ๊ฐ $0.208/์๊ฐร672. ์ฌ๊ธฐ์ ๋ค์ 2๋ฅผ ๊ณฑํ์ง ์์ | 139.78 |
| RDS gp3 Multi-AZ ์ ์ฅ์ | ์ด์คํ ํฌํจ ๋จ๊ฐ $0.262/GBยท์ร20GBร672/730 | 4.82 |
| Redis OSS ๋ ธ๋ 2๊ฐ | cache.t3.small $0.049/๋ ธ๋ยท์๊ฐร2ร672 | 65.86 |
| Route 53 | ํธ์คํ ์์ญ 1๊ฐร$0.50/์ร10์ยท11์ | 1.00 |
| ACM ์ธ์ฆ์ 2๊ฐ | CloudFrontยทALB์ ์ฐ๊ฒฐํ๋ ๋น๋ด๋ณด๋ด๊ธฐ ๊ณต๊ฐ ์ธ์ฆ์ ๊ฐ์ | 0.00 |
| Bedrock ์ค์ AI | Nova Lite ๊ณ์ฐ์ฉ ๊ฐ์ , ์๋ 12์๊ฐยท์ง๋ฌธ 150๊ฑด ์์ | 0.20 |
| ๋๋ฉ์ธ ์ ๊ท ๊ตฌ์ ์์ฐ | ๊ณต์ ๋จ๊ฐ ์๋: ๋ฏธ์ ์ ๋๋ฉ์ธ์ ์์ ์์ฐ. ์ด๋ฏธ ๋ณด์ ํ ๋๋ฉ์ธ ์ฌ์ฉ ์ ์ฐจ๊ฐ | 20.00 |
| ํ๋ฉดยท๋ก๊ทธยท์ถ๊ฐ ๋ฐฑ์ ยท์ ์ก ๋ฑ | ๊ณต์ ๋จ๊ฐ ํฉ์ฐ ์๋: S3ยทCloudFrontยท๋ก๊ทธยท์ด๋ฏธ์ง ์ ์ฅยท์ถ๊ฐ ๋ฐฑ์ ยท๊ธฐํ ์ ์กยท์ํ์ฉ ์์ ๋ฑ์ ์์ ์ฌ์ ๋ถ | 20.00 |
| ์์ ํฉ๊ณ | ๋ฐ์ฌ๋ฆผ ์ ๊ฐ์ผ๋ก ํฉ์ฐ | 316.33 |
| 20% ์๋น๋น ํฌํจ | 316.3313ร1.2. ์์์ ํ๊ธฐ ํฉ๊ณ์ ๋ฏธ์ธํ ์ฐจ์ด๊ฐ ์์ ์ ์์ | 379.60 |
์์ฐ ๊ณํ์ฉ์ผ๋ก **์ฝ $380, ์ฌ์ ์๊ฒ $400(์ธ์ )**๋ฅผ ์ ์ํ๋ค. ์ํ ๋ณด์ฅ์ด๋ ํ ์์ฐ ํ์ ์ด ์๋๋ค. ์ํ๋ ์ค์ ๊ฒฐ์ ํ์จยท์ธ๊ธ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ํ์ ํ์ฐ์ก์ ์ ์ง ์๋๋ค. ๋๋ฉ์ธ๊ณผ ๊ธฐํ ํญ๋ชฉ์ $40๋ ์์ฝ๊ธ์ด๋ ์ค์ AWS ์ฒญ๊ตฌ ๊ธ์ก์ด ์๋ ํธ์์ ์ก์ ์์ฐ์ด๋ค.
3. ์ฉ๋ฏผ๋ AI ์ด์ ๊ธฐ์ค ๋ฐ์
- ๋ถ์ผ ์์ฝ: 30๋ถ๋ง๋ค 6๋ถ์ผ, ํธ์ถ๋น ์ ๋ ฅ 8,000ยท์ถ๋ ฅ 1,500ํ ํฐ. ์ ์ฅ๋ ์์ฝ ์กฐํ๋ ์ถ๊ฐ AI ํธ์ถ๋ก ๊ณ์ฐํ์ง ์๋๋ค.
- ์ง๋ฌธ: ์ฌ์ฉ์๋น ํ๋ฃจ ์ต๋ 10ํ, ์ง๋ฌธ๋น 1ํ ํธ์ถ, ์ ๋ ฅ 3,000ยท์ถ๋ ฅ 500ํ ํฐ.
- ํ์ ๊ฐ๋ฐยทํ ์คํธยทk6๋ mock์ด๋ฉฐ ์ค์ AI ํธ์ถ๋ฃ๋ 0์ด๋ค. ์ค์ AI๋ 4์ฃผ์ฐจ ์ ๊ฒ๊ณผ 6์ฃผ์ฐจ ๋ฆฌํ์คยท๋ฐํ ๋๋ง ์ฌ์ฉํ๋ ๊ณํ์ด๋ค.
- ๊ณ์ฐ์ฉ ์์: 4์ฃผ์ฐจ ์ ๊ฒ 1ํ๏ผ6์ฃผ์ฐจ ๋ฆฌํ์คยท๋ฐํ 2ํ, ๊ฐ 4์๊ฐ์ผ๋ก ์ด 12์๊ฐ. ๊ฐ ํ์ฐจ 10๋ช ์ด 5๋ฒ์ฉ ์ง๋ฌธํด ์ด 150๊ฑด. ํ์ยท์๊ฐยท์ธ์์ ํฉ์๋ ์ผ์ ์ด ์๋๋ค.
- ๋ชจ๋ธ์ Amazon Nova Lite v1์ ๊ณ์ฐ์ฉ์ผ๋ก๋ง ๊ฐ์ ํ๋ค. ํ ๋ชจ๋ธ ๊ฒฐ์ ์ด๋ ์ค์ ํธ์ถ ๊ฐ๋ฅ ํ์ธ์ ๋์ ํ์ง ์๋๋ค.
- ์์ธ ๊ฐ๊ฒฉ ์นดํ๋ก๊ทธ์ ์จ๋๋งจ๋ ๋จ๊ฐ๋ ์ ๋ ฅ $0.071/100๋ง ํ ํฐ, ์ถ๋ ฅ $0.284/100๋ง ํ ํฐ์ด๋ค. Batch ๋จ๊ฐ๋ ๋ค๋ฅธ ๋ฆฌ์ ์ $0.06/$0.24๋ฅผ ์์ง ์์๋ค.
- ๊ณต์ ๋ชจ๋ธ ๋ฌธ์๋ ์์ธ์์ In-Region์ ๋ฏธ์ง์, Geo Cross-Region์ ์ง์์ผ๋ก ์๋ดํ๋ค. ์์ธ ๋ด์์๋ง ์ถ๋ก ํ๋ค๋ ๋ป์ด ์๋๋ค. ๊ณ์ ์ ์ถ๋ก ํ๋กํยท๋์ ๋ฆฌ์ ๊ถํ๊ณผ ์ ์ฑ , ์ค์ ์ ์ฉ ์๊ธ์ ํ์ธํด์ผ ํ๋ค.
| ๊ตฌ๋ถ | ํธ์ถ ์ | ์ ๋ ฅ ํ ํฐ | ์ถ๋ ฅ ํ ํฐ | ์์ USD |
|---|---|---|---|---|
| ์์ฝ 12์๊ฐ | 12ร2ร6=144 | 1,152,000 | 216,000 | 0.143136 |
| ์ง๋ฌธ 150๊ฑด | 150 | 450,000 | 75,000 | 0.053250 |
| ํฉ๊ณ | 294 | 1,602,000 | 291,000 | 0.196386 โ 0.20 |
๊ณ์ฐ์: ์ ๋ ฅ 1.602ร$0.071๏ผ์ถ๋ ฅ 0.291ร$0.284. ๋ฐฐ์น๋ผ๋ ์ฑ ์คํ ๋ฐฉ์๋ง์ผ๋ก Bedrock Batch ํ ์ธ ์๊ธ์ ์ ์ฉํ์ง ์๋๋ค. ์์ ์งํ ๊ฐฑ์ ยท์ฌ์๋ยท์ค์ ํ๋กฌํํธ ์ถ๊ฐ ํ ํฐ์ ๋ณ๋์ด๋ฉฐ, ๋ชจ๋ธ์ด ๋ณ๊ฒฝ๋๋ฉด ์ด ๊ธ์ก๋ ๋ฐ๋๋ค. AI๊ฐ ์ ๋ ดํ๊ฒ ๊ณ์ฐ๋๋ ์ด์ ๋ ์ ์ ํธ์ถ ์๊ฐ๊ณผ ๊ฐ์ ํ ๋ชจ๋ธ ๋จ๊ฐ ๋๋ฌธ์ด๋ค.
4. ์์ฐฌ๋ ๊ตฌ์ฑ ๋ฐ์
app.{๋๋ฉ์ธ}โ CloudFront โ ๋น๊ณต๊ฐ S3,api.{๋๋ฉ์ธ}โ ALB โ ์ฑ. API๋ฅผ CloudFront ๊ฒฝ์ ๋ก ์ค๋ณต ๊ณ์ฐํ์ง ์๋๋ค.- ๊ฐ์ ์์ ๋๋ฉ์ธ ํ๋๋ฅผ ์ฌ์ฉํ๋ค. appยทapi๋ฅผ ๋ณ๋ ๋๋ฉ์ธ ๋ ๊ฐ ๊ตฌ์ ์ผ๋ก ๊ณ์ฐํ์ง ์๋๋ค.
- Route 53 ํธ์คํ ์์ญ์ ํ๋๋ก ๊ฐ์ ํ๊ณ , ALBยทCloudFront๋ฅผ ๊ฐ๋ฆฌํค๋ ์ ๊ฒฉ Alias A/AAAA ์ง์๋ ๋ฌด๋ฃ ์กฐ๊ฑด์ ์ ์ฉํ๋ค. ๋ค๋ฅธ ์ง์ยท์ถ๊ฐ ์์ญ์ ๋ณ๋๋ค.
- ์ธ์ฆ์๋ CloudFront์ฉ us-east-1, ALB์ฉ ์์ธ์ ๊ฐ๊ฐ ๋ฐ๊ธํ๋ ๊ณํ์ด๋ค. ๋ ๊ฐ ๋ชจ๋ AWS ์๋น์ค์ ์ฐ๊ฒฐํ๋ ACM ๋น๋ด๋ณด๋ด๊ธฐ ๊ณต๊ฐ ์ธ์ฆ์๋ก ๊ฐ์ ํด $0์ผ๋ก ๊ณ์ฐํ๋ค. ๋ด๋ณด๋ด๊ธฐ ์ธ์ฆ์ยทPrivate CA๋ ์ด ๊ฒฌ์ ์ ํฌํจํ์ง ์๋๋ค.
- CORS credentials, ์ฟ ํค ํฌํจ ์์ฒญ, api.js ํ๊ฒฝ๋ณ ์ฃผ์, ํ๋ฉด ์ ์ฉ SPA ์ฒ๋ฆฌ๋ ๊ธฐ์กด ์ค๊ณ๋ฅผ ์ ์งํ๋ค. ๋ณ๋ ์ ๋ฃ ์๋น์ค ํญ๋ชฉ์ผ๋ก ์ถ๊ฐํ์ง ์๋๋ค.
5. ์ด์ ๋ฐฉ์์ ๋ฐ๋ฅธ ๋ณ๋๊ณผ ์ฌํ์ธ ํญ๋ชฉ
- DBยทRedis ์์ ์ ์ง๊ฐ ์ด ๊ฒฌ์ ์ ๊ฐ์ฅ ํฐ ๋ถ๋ถ์ด๋ค. 24์๊ฐ ์ ์ง์ผ์ ํ๋ฃจ ์ค์ด๋ฉด ๋ ธ๋ ์คํ๋ฃ ๊ธฐ์ค RDS $4.992๏ผRedis $2.352=์ฝ $7.34/์ผ ๊ฐ์ํ ์ ์๋ค. ์ ์ฅยท๋ฐฑ์ ยท์ฌ์์ฑ ๋น์ฉ๊น์ง ์ฌ๋ผ์ง๋ค๋ ๋ป์ ์๋๋ค.
- NATยทALB๋ฅผ 4~6์ฃผ์ฐจ ๋ด๋ด 504์๊ฐ ์ ์งํ๋ฉด ํ์ฌ ์ค์ต์๊ฐ ๊ฐ์ ๋ณด๋ค ์ฝ $74.52 ์ถ๊ฐ๋ ์ ์๋ค(NATยทALB ์๊ฐ๋ฃ์ IPv4 ๊ธฐ์ค, ์ถ๊ฐ LCUยท๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ ์ธ). ๋ฐ๋ผ์ ํด์ค ๋ค ์ค์ ์ญ์ ยทIP ํด์ ์ฌ๋ถ๊ฐ ์ค์ํ๋ค.
- ์ค์ต ์ข ๋ฃ๋ง์ผ๋ก ๊ณผ๊ธ์ด ์ค์ง๋์ง ์๋๋ค. EKSยทRedisยทNATยทALB๋ EC2์ฒ๋ผ ์ผ๊ด ์ ์ง๋๋ค๊ณ ๊ฐ์ ํ์ง ์๋๋ค. ๋ฐ์ดํฐ ๋ณด์กดยท๋ฐฑ์ ๊ฒ์ฆ ํ ์ ๋ฆฌ ์ ์ฐจ๋ฅผ ํ์ ํ๋ค.
- ์ถ๊ฐ ์ค๋ ์ทยท๋ณต์ DB, CloudWatch ๋๋ ๋ก๊ทธ, ์ด๋ฏธ์ง ์ ์ฅ์, ์ธํฐ๋ทยทAZ ๊ฐ ์ ์ก, CPU ํฌ๋ ๋ง ์ด๊ณผ, ๋ถํ ํ ์คํธ๋ก ์ธํ ALB ์ฉ๋ ์ฆ๊ฐ, ์ค๋นยท์ฅ์ ๋ณต๊ตฌ ์๊ฐ์ ์ค์ ์ฌ์ฉ์ ๋ฐ๋ผ ์ฆ์ก๋๋ค. $20 ๊ธฐํ ์์ฐ์ด ์ด๋ฅผ ๋ชจ๋ ๋ณด์ฅํ์ง ์๋๋ค.
- ์ด ๊ฒฌ์ ์ ๊ณ์ ํ์ธ ์ ์์ฑํ ์ค๊ณ ์ถ์ ์น๋ค. ๋ฆฌ์ ยท์ฌ์ยท๋ชจ๋ธยท๊ธฐ๊ฐยท๊ธฐ์กด ๋๋ฉ์ธยทํ๋ฆฌํฐ์ดยทํฌ๋ ๋ง๊ณผ ์์ ์ฌ์ฉ๋์ ํ์ ํ๋ฉด ๋ค์ ๊ณ์ฐํ๋ค. ์ด๋ค ์์๋ ์ด๋ฒ ์์ ์ผ๋ก ์์ฑยท๊ตฌ์ ํ์ง ์๋๋ค.
6. ๊ณต์ ์ถ์ฒ
์์ธ ๋ฆฌ์ ๋จ๊ฐ๋ AWS ๊ณต๊ฐ Price List์ OnDemand ํญ๋ชฉ์์ ์กฐํํ๋ค. current ๋งํฌ๋ ๊ฐฑ์ ๋๋ฏ๋ก ์กฐํ ๋น์ ์ ์ฉ ๋จ๊ฐ๋ ์ ํ์ ๊ณ ์ ๊ธฐ๋กํ๋ค.
- EC2ยทEBSยทNAT ์์ธ ๊ณต์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ
- RDS ์์ธ ๊ณต์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ
- ElastiCache ์์ธ ๊ณต์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ
- ELB ์์ธ ๊ณต์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ
- Bedrock ์์ธ ๊ณต์ ๊ฐ๊ฒฉ ๋ฐ์ดํฐ
- EKS ๊ฐ๊ฒฉ
- ๊ณต์ธ IPv4 ๊ฐ๊ฒฉ
- Route 53 ๊ฐ๊ฒฉ
- ACM ์ธ์ฆ์ ๊ฐ๊ฒฉ
- Nova Lite ๋ฆฌ์ ์ง์
์ 730์๊ฐ ๋น๊ต ๊ฒฌ์
์์ธ ๋ฆฌ์ ์ ๊ณ์ฐ์๋ง ์ฌ์ฉํฉ๋๋ค. Linux ์จ๋๋งจ๋ยทํ ์ธ/ํฌ๋ ๋ง/์ธ๊ธ ์ ์ธ. ์ฌ์์ ์ด์ ๊ฒฌ์ ๊ณผ ๋น๊ตํ๊ธฐ ์ํ ๊ฐ์ ์ด๋ฉฐ ๊ณ์ ์์ MySQL 8.4 ๋ฐ ์ ํ ์ฌ์์ ์์ฑ ๊ฐ๋ฅ ์ฌ๋ถ๋ ๋ฏธํ์ธ์ ๋๋ค.
2026-10-19 AWS ๊ณต์ Price List๋ฅผ ๋ค์ ์ฝ์์ต๋๋ค. EC2ยทRDSยทRedisยทALBยทNAT ๋จ๊ฐ๋ ๊ธฐ์กด ๊ฒฌ์ ๊ณผ ๊ฐ์์ต๋๋ค. Redis๋ ํ์ค ์ง์ ๋ ธ๋ ๋จ๊ฐ์ด๋ฉฐ ์ฐ์ฅ ์ง์ ํญ๋ชฉ์ ํฉ์ฐํ์ง ์์์ต๋๋ค. NAT๋ Regional ์ํ์ด ์๋ AZ๋ณ NAT ์ํ์ ์ฌ์ฉํ์ต๋๋ค.
| ํญ๋ชฉ | ์๋ยท๋จ๊ฐ | ์ USD |
|---|---|---|
| EC2 ์ ์ด ํ๋ฉด | t3.medium 1 ร $0.052 ร 730 | 37.96 |
| EC2 ์์ปค | t3.large 2 ร $0.104 ร 730 | 151.84 |
| EBS gp3 | 30GB ร 3๋ ร $0.0912 | 8.21 |
| RDS MySQL Multi-AZ | db.t3.medium $0.208 ร 730 (Primary/Standby ํฌํจ) | 151.84 |
| RDS gp3 Multi-AZ | 20GB ร $0.262 (์ด์คํ ํฌํจ ๋จ๊ฐ) | 5.24 |
| Redis Primary/Replica | cache.t3.small 2 ร $0.049 ร 730 | 71.54 |
| NAT 2๊ฐ | 2 ร $0.059 ร 730 | 86.14 |
| NAT ์ฒ๋ฆฌ๋ ๊ฐ์ | ํฉ๊ณ 20GB ร $0.059 | 1.18 |
| ALB + ํ๊ท 1 LCU | ($0.0225 + $0.008) ร 730 | 22.27 |
| ๊ณต์ธ IPv4 | NAT 2 + ALB ์ต์ ๊ฐ์ 2, $0.005 ร 4 ร 730 | 14.60 |
| ์ ํญ๋ชฉ ์๊ณ | ๋ฐ์ฌ๋ฆผ ์ ํฉ์ฐ | 550.81 |
| ์๊ณ + 20% | ํ๋ก์ ํธ ์ ์ฒด ์์ฐ ํ์ ์๋ | 660.98 |
์ด ํ๋ M4 EC2 ๊ตฌ์ฑ์ ํ ๋ฌ ๊ณ์ ์ ์งํ๋ ๋น๊ต์ฉ์ ๋๋ค. EKS ์ ์ด ์์ญ, S3ยทCloudFront, Route 53ยท๋๋ฉ์ธ, AI, ๋ก๊ทธยท์ถ๊ฐ ๋ฐฑ์ , ์ธํฐ๋ท/AZ ๊ฐ ์ ์ก, CPU ํฌ๋ ๋ง ์ด๊ณผ, ์ถ๊ฐ IPv4ยทLCU๋ ๋ณ๋์ ๋๋ค. AWS Pricing Calculator ์ ์ฅ ๊ฒฌ์ ๋งํฌ๋ ์์ง ๋ง๋ค์ง ์์์ต๋๋ค. ์ค์ ๊ณ์ ๊ณผ ์์งยท์ฌ์ ์ ํ ํ Calculator์์ ๋ณด์ํด์ผ ํฉ๋๋ค.
๊ธฐ์กด $316.33(์ฌ์ ํฌํจ $379.60)์ 2~6์ฃผ์ฐจ ์ค์ต์๊ฐยท๋ฐ์ดํฐ ์ ์ง๊ธฐ๊ฐ ๊ฐ์ ์ ํ๋ก์ ํธ ๊ฒฌ์ ์ ๋๋ค. ์ด ์ ์๊ณ์ ๊ธฐ๊ฐยทํฌํจ ํญ๋ชฉ์ด ๋ค๋ฅด๋ฏ๋ก ์ง์ ์ ๊ฐ์ก์ ๋น๊ตํ์ง ์์ต๋๋ค.
์ค์ต ์ข ๋ฃ ํ ๋น์ฉ ๊ด๋ฆฌ
| ์์ | ์ข ๋ฃ ๋ฐฉ๋ฒ | ๋จ๋ ๋น์ฉยท์ฃผ์ |
|---|---|---|
| EC2 | ์ค์ง ๋๋ ๋ถํ์ ์ธ์คํด์ค ์ข ๋ฃ | EBSยท์ค๋ ์ทยท๋ณด์ ๊ณต์ธ IP ๋ฑ ๋ณ๋ |
| RDS | ์ง์ ๊ตฌ์ฑ์ ์์ ์ค์ง ๊ฐ๋ฅ | ์คํ ๋ฆฌ์งยท๋ฐฑ์ ์๊ธ ์ ์ง. ์ฐ์ 7์ผ ํ ์๋ ์ฌ์์ |
| Redis | ์บ์ ๋ณด์กด ์ ์ฑ ยท์ต์ข ๋ฐฑ์ ํ์ธ ํ ์ญ์ | EC2์ฒ๋ผ ์ค์งํ๋ ์๋น์ค๊ฐ ์๋. ๋ณด์กด ์ค๋ ์ท ๋ณ๋ |
| NAT | ์ญ์ ํ ์ฌ์ฉํ์ง ์๋ EIP ํด์ | EC2 ์ค์ง๋ก NATยท๊ณต์ธ IP ์๊ธ์ด ๋ฉ์ถ์ง ์์ |
| ALB | ์ฌ์์ฑ ์ ์ฐจ ํ๋ณด ํ ์ญ์ | EC2 ์ค์ง๋ก ALB ์๊ธ์ด ๋ฉ์ถ์ง ์์ |
| EKS (M5) | ์ฌ์์ฑ ๊ฐ๋ฅํ ๊ฒฝ์ฐ ํด๋ฌ์คํฐ ์ญ์ ๊ฒํ | ๋ ธ๋๋ง ์ค์งํด๋ ์ ์ด ์์ญ ๋น์ฉ ๋ฐ์ |
๋ฐ์ดํฐยท์ํ ํ์ผยท๋ฐฑ์ ์ ์๋ ์ญ์ ๋ชฉ๋ก์ ๋ฃ์ง ์์ต๋๋ค. ์ด ๋ฌธ์๋ ์ญ์ ์คํ ์ง์๊ฐ ์๋๋๋ค. ํ ๊ณต์ฉ ์์๊ณผ ๋ณด์กด ๋์์ ํ์ธํ ๋ค ์ข ๋ฃํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
๋จ๊ณ๋ณ ํ๊ฒฝ
| ๋จ๊ณ | ํ๊ฒฝ | ๋ฐฐํฌ ๋์ | ๋ฐฐํฌ ๋ฐฉ์(๊ณํ) |
|---|---|---|---|
| 1 | ์จํ๋ ๋ฏธ์ค VM, kubeadm ๋ฉํฐ๋ ธ๋ | develop | GitHub Actions โ ํ ์คํธ โ ์ด๋ฏธ์ง ๋น๋ โ GHCR push(์ปค๋ฐ SHA ํ๊ทธ) โ ํด๋ฌ์คํฐ ์ self-hosted runner๊ฐ ๊ฐ๋ฐ ํด๋ฌ์คํฐ์ ์ ์ฉ |
| 2 | AWS 3Tier, EC2 + kubeadm | main | GitHub Actions โ ์ด๋ฏธ์ง ๋น๋ โ EC2 ํด๋ฌ์คํฐ |
| 3 | AWS EKS, Terraform | main | Terraform์ผ๋ก ํ๊ฒฝ ๊ตฌ์ฑ + GitHub Actions๋ก ์ฑ ๋ฐฐํฌ |
ํ์ฌ ํด๋ผ์ฐ๋ ์ค๊ณ ๋ชฉํ๋ EKS์ ๋๋ค. ์ค์ ์ ์ฉ ๋ฐฉ์๊ณผ ๊ฐ ๋จ๊ณ ์ฐ๊ฒฐ์ ํ ๊ฒํ ํ ํ์ ํฉ๋๋ค.
๋คํธ์ํฌ ๊ตฌ์กฐ
VPC ์ฃผ์ ์ ์: 10.20.0.0/16. ๊ธฐ์กด ํ ๋คํธ์ํฌ์ ์ค๋ณต๋๋ฉด ๋ณ๊ฒฝํฉ๋๋ค. ์ค์ ๋ฆฌ์ ๊ณผ AZ ์ด๋ฆ์ ์ถํ ์
๋ ฅํฉ๋๋ค.
| ๊ตฌ์ญ | AZ A | AZ B | ๋ฐฐ์น ๋์ |
|---|---|---|---|
| ํผ๋ธ๋ฆญ | 10.20.0.0/24 | 10.20.1.0/24 | ALB์ AZ๋ณ ์ฐ๊ฒฐ, NAT-A / NAT-B |
| ํ๋ผ์ด๋น ์ฑ | 10.20.10.0/24 | 10.20.11.0/24 | EC2 / EKS ์์ ๋ ธ๋ |
| ํ๋ผ์ด๋น ๋ฐ์ดํฐ | 10.20.20.0/24 | 10.20.21.0/24 | RDS PrimaryยทStandby, Redis PrimaryยทReplica |
๋ผ์ฐํ
ํผ๋ธ๋ฆญ A/B๋ rt-public, ์ฑ A/B๋ ๊ฐ๊ฐ rt-app-aยทrt-app-b, ๋ฐ์ดํฐ A/B๋ rt-data์ ์ฐ๊ฒฐํ๋ ์ค๊ณ์
๋๋ค. ๋ชจ๋ ํ์ VPC local ๊ฒฝ๋ก๋ฅผ ์ ์งํ๋ฉฐ ์ฑยทDB ์๋ธ๋ท์ ๊ณต์ธ IPv4 ์๋ ํ ๋น์ ๋นํ์ฑํํฉ๋๋ค.
- ํผ๋ธ๋ฆญ A/B:
0.0.0.0/0 โ IGW. - ์ฑ A:
0.0.0.0/0 โ NAT-A, ์ฑ B:0.0.0.0/0 โ NAT-B. ์ฑ ๋ผ์ฐํ ํ๋ฅผ AZ๋ณ๋ก ๋ถ๋ฆฌํฉ๋๋ค. - ๋ฐ์ดํฐ A/B: ์ธํฐ๋ท ๊ธฐ๋ณธ ๊ฒฝ๋ก ์์. ๋ด๋ถ ํต์ ์ VPC local ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- NAT๋ ๊ฐ AZ์ ์ฑ์ด ์๊ธฐ AZ์ NAT๋ฅผ ์ฌ์ฉํ๋๋ก ํฉ๋๋ค. ์ฅ์ ์ ๋ค๋ฅธ NAT๋ก ๊ฒฝ๋ก๊ฐ ์๋ ๋ณ๊ฒฝ๋๋ ์ค๊ณ๋ ์๋๋๋ค.
์ ๊ทผ ์ ์ด
IPv4ยท๋์ผ VPC ๊ธฐ์ค์ ๋๋ค. ์๋ SG ์ด๋ฆ์ ์ค๊ณ์ฉ ์ด๋ฆ์ด๋ฉฐ ์ค์ SG ID๊ฐ ์๋๋๋ค. SG๋ ํ์ฉ ๊ท์น์ ํฉ์ฐํ๋ฏ๋ก ๋ค๋ฅธ SG๋ฅผ ํจ๊ป ์ฐ๊ฒฐํด ์ฐํ ํ์ฉํ์ง ์๋๋ก ํ์ธํฉ๋๋ค.
| SG | ๋ฐฉํฅ | ์๋ | ํ๋กํ ์ฝยทํฌํธ | ๋ชฉ์ |
|---|---|---|---|---|
| sg-alb | ์ธ๋ฐ์ด๋ | 0.0.0.0/0 | TCP 443 | API HTTPS ์ง์ |
| sg-alb | ์ธ๋ฐ์ด๋ | 0.0.0.0/0 | TCP 80 | HTTPS ๋ฆฌ๋๋ ์ ์ ์ฉ ๋ฆฌ์ค๋ |
| sg-alb | ์์๋ฐ์ด๋ | sg-app | TCP P_TARGET, P_HEALTH | ๋์ ์๋น์ค์ ํฌ์ค์ฒดํฌ. ๋ ํฌํธ๊ฐ ๊ฐ์ผ๋ฉด ๊ท์น ํ๋ |
| sg-app | ์ธ๋ฐ์ด๋ | sg-alb | TCP P_TARGET, P_HEALTH | ์ฌ์ฉ์ ์์ฒญยทํฌ์ค์ฒดํฌ๋ ALB์์๋ง ํ์ฉ |
| sg-app | ์์๋ฐ์ด๋ | sg-db | TCP 3306 | APIยท์์ปคยท๋ฐฐ์น์ MySQL ์ฐ๊ฒฐ |
| sg-app | ์์๋ฐ์ด๋ | sg-redis | TCP 6379 | Redis TLS ์ฐ๊ฒฐ ๊ณํ. ์ค์ ์์ง ์ค์ ํ์ธ |
| sg-app | ์์๋ฐ์ด๋ | 0.0.0.0/0 | TCP 443 | ํด๋น AZ NAT๋ฅผ ํตํ ๋ด์คยทAI API ๋ฐ ํ์ํ HTTPS ์๋น์ค ์ ๊ทผ |
| sg-db | ์ธ๋ฐ์ด๋ | sg-app | TCP 3306 | ์ฑ ๊ณ์ธต๋ง DB ์ ์ |
| sg-redis | ์ธ๋ฐ์ด๋ | sg-app | TCP 6379 | ์ฑ ๊ณ์ธต๋ง Redis ์ ์ |
| sg-db / sg-redis | ์์๋ฐ์ด๋ | ์ฌ์ฉ์ ์ ์ ์ ๊ท ์ฐ๊ฒฐ ์์ | ๊ธฐ๋ณธ ์ ์ฒด ํ์ฉ ์ ๊ฑฐ๋ฅผ ๊ณํ | ํ์ฉ๋ ์ฐ๊ฒฐ์ ์๋ต์ ์ํ ์ถ์ ์ผ๋ก ์ฒ๋ฆฌ. ๊ด๋ฆฌํ ์๋น์ค ์ค์ ์๊ตฌ์ฌํญ์ ๊ตฌ์ถ ์ ํ์ธ |
P_TARGET์ ALB๊ฐ ์ค์ ์ฐ๊ฒฐํ๋ ๋์ ํฌํธ, P_HEALTH๋ ๋์ ๊ทธ๋ฃน ํฌ์ค์ฒดํฌ ํฌํธ์ ๋๋ค. ์์ง ํ์ ๋์ง ์์ ์ซ์๋ฅผ ์ค์ ํฌํธ์ฒ๋ผ ๊ฒ์ํ์ง ์์ต๋๋ค. ๋ฐฑ์๋ ์คํ ํฌํธ์ ALB ๋์ ํ์ ์ ํ์ธํ ๋ค ์ ์ฉํฉ๋๋ค.
2026-10-21 ์ ์ฅ์ ๋์กฐ: backend์ infra์ ์ฑ ํฌํธ๋ 8080์ด๋ฉฐ readiness๋ /actuator/health/readiness, liveness๋ /actuator/health/liveness์
๋๋ค. ์จํ๋ Traefik NodePort๋ HTTP 30080ยทHTTPS 30443์
๋๋ค. ์ด๋ AWS์ฉ ๋์ยทํฌ์ค์ฒดํฌ ํฌํธ๋ฅผ ํ์ ํ ๊ฐ์ด ์๋๋ฏ๋ก Terraform์์๋ alb_target_ports ํ์ ์
๋ ฅ์ผ๋ก ๋ก๋๋ค. ๋์ ๊ฒฝ๋กยทํธ์คํธ ๋ผ์ฐํ
์ M4 ALB ๊ตฌ์ฑ์์ ํ์ธํฉ๋๋ค.
ํ์ฌ backend Category.java์ ์ ์๋ RSS 8๊ฐ๋ ๋ชจ๋ https://rss.etnews.com/ ์ฃผ์์
๋๋ค. ์ธ๋ถ 443 โ ๊ฐ์ AZ NAT โ IGW ๊ฒฝ๋ก๋ฅผ ์ฝ๋์ ๋์กฐํ์ต๋๋ค. ์ค์ VPC์ DNSยทRSS ์ ์์ ๊ณ์ ์๋ น ํ ๊ฒ์ฆํฉ๋๋ค. Terraform ๋ชจ์ ํ
์คํธ ํต๊ณผ์ AWS ์คํต์ ์ฑ๊ณต์ ๊ตฌ๋ถํฉ๋๋ค.
- 4์ฃผ์ฐจ kubeadm์ instance ๋์์ด๋ฉด ํ์ํ NodePort/Ingress ๋์ ํฌํธ๋ง ํ์ฉํฉ๋๋ค. ์ปจํ ์ด๋ ํฌํธ์ ๊ฐ๋ค๊ณ ๊ฐ์ ํ๊ฑฐ๋ NodePort ์ ์ฒด ๋ฒ์๋ฅผ ์ด์ง ์์ต๋๋ค.
- EKS ip ๋์์ด๋ฉด ์ค์ ํ๋ ENI์ ์ ์ฉ๋๋ SG์ ๋์ ํฌํธ๋ฅผ ํ์ธํฉ๋๋ค. ๋ณ๋ ํ๋ SG๋ฅผ ์ฐ๋์ง์ ๋ฐ๋ผ sg-app ์ฐธ์กฐ ๋์์ด ๋ฌ๋ผ์ง๋๋ค.
- ํด๋ฌ์คํฐ ์ ์ด ์์ญยท๋ ธ๋ยทCNIยทDNSยท๊ด๋ฆฌ ์ ์ ๊ท์น์ ์ ์ฌ์ฉ์ ํธ๋ํฝ ํ์ ๋ณ๋๋ก ํ์ ํฉ๋๋ค. ์ด ํ๋ง์ผ๋ก Kubernetes ์ ์ฒด ํต์ ๊ตฌ์ฑ์ด ์๋ฃ๋์ง๋ ์์ต๋๋ค.
- ๊ธฐ๋ณธ ์ ์ฒด ์์๋ฐ์ด๋ ๊ท์น์ด ๋จ์ ์์ผ๋ฉด ์ ์ ํ์ด ๋ฌด์๋ฏธํ๋ฏ๋ก ์ค์ ๊ตฌ์ฑ ์ ํ์ธํฉ๋๋ค. ๊ธฐ๋ณธ VPC DNS์ ์ฌ์ฉ์ ์ง์ DNS๋ ๊ตฌ๋ถํ๋ฉฐ, ์ฌ์ฉ์ ์ง์ DNS ์ฌ์ฉ ์ ํด๋น ์๋ฒ๋ก UDP/TCP 53์ ๋ณ๋ ์ค๊ณํฉ๋๋ค.
- SG๋ง์ผ๋ก HTTPS ๋ชฉ์ ์ง๋ฅผ ํน์ ๋ด์คยทAI ๋๋ฉ์ธ์ผ๋ก ์ ํํ ์๋ ์์ต๋๋ค. ํ์ฌ 443 ์์๋ฐ์ด๋๋ ๋ชจ๋ IPv4 ๋ชฉ์ ์ง์ ๋ํ ํ์ฉ์ ๋๋ค.
- ์ฑยทDBยทRedis์ ์ธํฐ๋ท ์ง์ ์ธ๋ฐ์ด๋๋ ํ์ฉํ์ง ์์ต๋๋ค. SSH 22์ Kubernetes API 6443์ ์ธํฐ๋ท ์ ์ฒด์ ์ด์ง ์์ต๋๋ค. ๊ด๋ฆฌ ๊ฒฝ๋ก๋ ๊ณ์ ๊ถํ ํ์ธ ํ ๋ณ๋ ํ์ ํฉ๋๋ค.
- NATยทS3ยทCloudFront์ ์ด SG ํ๋ฅผ ๊ทธ๋๋ก ์ ์ฉํ์ง ์์ต๋๋ค. ํ๋ฉด์ CloudFrontโ๋น๊ณต๊ฐ S3, API๋ api ๋๋ฉ์ธโALB๋ผ๋ ๊ธฐ์กด ๊ตฌ์ฑ์ ์ ์งํฉ๋๋ค.
๊ตฌ์ถ ํ์๋ ALB ์ ์ ๋์, ์ฑโDB/Redis ์ฐ๊ฒฐ ์ฑ๊ณต, ๋นํ์ฉ ์ถ๋ฐ์ง์ ์ ์ ์คํจ๋ฅผ ์ค์ ๋ก ๊ฒ์ฆํฉ๋๋ค.
์จํ๋ ๋ฏธ์ค (develop)
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ํ์ดํผ๋ฐ์ด์ | VirtualBox |
| ์ด๋ํฐ 1 | NAT. VM์ ์ธํฐ๋ท ์ ์(ํจํค์งยท์ด๋ฏธ์ง ๋ค์ด๋ก๋) |
| ์ด๋ํฐ 2 | ํธ์คํธ ์ ์ฉ 192.168.56.0/24, DHCP ๋นํ์ฑ, ๋
ธ๋ ๊ณ ์ IP |
| ๋ ธ๋ IP | k8s-cp 192.168.56.10, k8s-worker1 .11, k8s-worker2 .12 |
| ํ๋ ๋์ญ | 10.244.0.0/16 |
| ์๋น์ค ๋์ญ | 10.96.0.0/12 (kubeadm ๊ธฐ๋ณธ๊ฐ) |
| CNI | Calico |
| ์ธ๋ถ ๋ ธ์ถ | ingress-nginx(NodePort). / โ ํ๋ก ํธ, /api/* โ API |
| ํ์ ์ ์ | ๋ฏธ์ (VPN ๊ฒํ ) |
- ๋ ธ๋ ๊ฐ ํต์ ์ ํธ์คํธ ์ ์ฉ ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ณต์ ๊ธฐ์ ๋ฌด๊ดํด ์ฅ์๊ฐ ๋ฐ๋์ด๋ ๋ ธ๋ IP๊ฐ ์ ์ง๋ฉ๋๋ค.
- VirtualBox NAT๋ ๋ชจ๋ VM์ ๊ฐ์ IP(
10.0.2.15)๋ฅผ ์ฃผ๋ฏ๋ก, kubelet์--node-ip๋ก ํธ์คํธ ์ ์ฉ IP๋ฅผ ์ง์ ํด ๋ ธ๋ ์ฃผ์๊ฐ ๊ฒน์น์ง ์๊ฒ ํฉ๋๋ค. - ํ๋ ๋์ญ์ ๋
ธ๋ ๋์ญ(
192.168.56.x)๊ณผ ๊ฒน์น์ง ์๋๋ก10.244.0.0/16์ผ๋ก ์ง์ ํฉ๋๋ค. ๊ฒน์น๋ฉด ๋ผ์ฐํ ์ด ๊ผฌ์ ๋๋ค. - ์จํ๋ ๋ฏธ์ค ๋์ญ์ AWS VPC(
10.20.0.0/16)์๋ ๊ฒน์น์ง ์์ต๋๋ค. ๋ ํ๊ฒฝ์ VPN์ผ๋ก ์ง์ ์ฐ๊ฒฐํ์ง ์์ผ๋ฉฐ, ์จํ๋ ๋ฏธ์ค์์ AWS๋ก๋ S3 ๋ฐฑ์ ์ ๋ก๋๋ง ๋๊ฐ๋๋ค. - ํ๋ฉด๊ณผ API๊ฐ ๊ฐ์ ์ถ์ฒ(Nginx๊ฐ
/api/*๋ฅผ ๋ฐฑ์๋๋ก ํ๋ก์)์ด๋ฏ๋ก ์จํ๋ ๋ฏธ์ค์์๋ CORS๊ฐ ํ์ํ์ง ์์ต๋๋ค. /actuator/*๋ Ingress์ ์ฐ๊ฒฐํ์ง ์๊ณ ํด๋ฌ์คํฐ ๋ด๋ถ์์๋ง ์ ๊ทผํฉ๋๋ค. ๋ฉํธ๋ฆญยท์ปค๋ฐ SHA ๊ฐ์ ๋ด๋ถ ์ ๋ณด๊ฐ ์ธ๋ถ์ ๋ ธ์ถ๋์ง ์๊ฒ ํ๊ธฐ ์ํด์์ ๋๋ค.
์ปดํจํธ
- 4์ฃผ์ฐจ: EC2 + kubeadm, ์ ์ด ๋ ธ๋ 1๋์ A/B ์์ ๋ ธ๋ ๊ฐ 1๋๋ฅผ ์ด๊ธฐ์์ผ๋ก ๋ก๋๋ค. ์ ์ด ๋ ธ๋ 1๋๋ ๋จ์ผ ์ฅ์ ์ง์ ์ด๋ฉฐ ํ์ต ๋จ๊ณ์ ํ๊ณ์ ๋๋ค.
- 5์ฃผ์ฐจ: EKS ๊ด๋ฆฌํ ์ ์ด ์์ญ์ผ๋ก ์ ํํ๊ณ ์์ ๋ ธ๋๋ฅผ A/B์ ๋ถ์ฐํฉ๋๋ค. EKS ์ ์ด ์์ญ์ ์ฐ๋ฆฌ ์ฑ ์๋ธ๋ท์ EC2๊ฐ ์๋๋๋ค.
- APIยท์์ปค ๋ณต์ ๋ณธ์ด ๋ AZ์ ๋ถ์ฐ๋๋๋ก ๋ฐฐ์น ๊ท์น์ ์ ์ฉํ๊ณ , ํ AZ ์ฅ์ ์ ์์ฌ ์ฉ๋์ ๊ฒ์ฆํฉ๋๋ค.
- API๋ HPA, ์์ปค๋ ํ ๊ธธ์ด ๊ธฐ๋ฐ KEDA ํ์ฅ์ ๊ณํํฉ๋๋ค. ๋ ธ๋ ์ฆ์ค์ ๋ณ๋ ์ค์ ํฉ๋๋ค.
- ๊ฐฑ์ ๋ฐฐ์น๋ 30๋ถ ์ฃผ๊ธฐ CronJob์ผ๋ก ์คํํ๋ฉฐ ์ค๋ณต ์คํ์ ์ ์ดํฉ๋๋ค.
- ์๋ฒ ํฌ๊ธฐยท์ฑ ํฌํธยทํฌ์ค์ฒดํฌ ๊ฒฝ๋กยท๋ฉ๋ชจ๋ฆฌ๋ ๋ฐฑ์๋ ์คํ ์๊ฑด์ ๋ง์ถฐ ํ์ ํฉ๋๋ค.
์จํ๋ ๋ฏธ์ค (develop)
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ํธ์คํธ | ๋ ธํธ๋ถ 1๋ (AMD Ryzen 5, 6์ฝ์ด 12์ค๋ ๋, 32GB, Windows) |
| ํ์ดํผ๋ฐ์ด์ | VirtualBox (Hyper-V ๋นํ์ฑ ์ํ์์ ์ง์ ์คํ) |
| OS | Ubuntu Server 24.04 LTS (amd64) |
| ์ปจํ ์ด๋ ๋ฐํ์ | containerd 2.4 (SystemdCgroup ์ฌ์ฉ) |
| Kubernetes | v1.35 (kubeadmยทkubeletยทkubectl ๋ฒ์ ๊ณ ์ ) |
| ๋ ธ๋ | ์ญํ | vCPU | RAM | ๋์คํฌ | IP |
|---|---|---|---|---|---|
| k8s-cp | control plane, self-hosted runner | 2 | 4GB | 40GB | 192.168.56.10 |
| k8s-worker1 | worker | 2 | 6GB | 40GB | 192.168.56.11 |
| k8s-worker2 | worker | 2 | 6GB | 40GB | 192.168.56.12 |
| ์ํฌ๋ก๋ | ์ข ๋ฅ | ๋น๊ณ |
|---|---|---|
| API | Deployment | readiness๋ DB ์ฐ๊ฒฐ ๊ธฐ์ค (Redis ์ ์ธ, API ๋ช ์ธ ๊ธฐ์ค) |
| ์์ปค | Deployment | ์ต์ 1๊ฐ ์ ์ง. 0๊ฐ๋ก ์ค์ด๋ฉด ๊ธฐ๋ ์๊ฐ ๋๋ฌธ์ ์ง๋ฌธ ์ฌํฌ์ (30์ด)ยท์คํจ ์ฒ๋ฆฌ(60์ด) ๊ธฐ์ค์ ๊ฑธ๋ฆด ์ ์์ |
| ์์ฝ ๊ฐฑ์ ๋ฐฐ์น | CronJob | concurrencyPolicy: Forbid๋ก ์ค๋ณต ์คํ ๋ฐฉ์ง |
| ํ๋ก ํธ | Deployment (Nginx) | ์ ์ ํ์ผ + /api/* ํ๋ก์ |
- ํธ์คํธ CPU๊ฐ x86(amd64)์ด๋ผ AWS EC2์ ๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
- ์ฑยทDBยท๋ชจ๋ํฐ๋ง์ ์์ปค์ ์ฌ๋ผ๊ฐ๋ฏ๋ก ์์ปค์ RAM์ ๋ ๋ฐฐ์ ํฉ๋๋ค. ๋์คํฌ๋ ์ฌ์ฉํ ๋งํผ๋ง ์ปค์ง๋ ๊ฐ๋ณ ํฌ๊ธฐ์ ๋๋ค.
- swap์ ๋นํ์ฑํํฉ๋๋ค. kubelet์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ํํ ๊ณ์ฐํด ํ๋๋ฅผ ๋ฐฐ์นํ๊ธฐ ์ํด์์ ๋๋ค.
- ์จํ๋ ๋ฏธ์ค๋ 5์ฃผ์ฐจ์ KEDA๋ฅผ ์ค์นํ๊ธฐ ์ ๊น์ง ์์ปค ์๋ฅผ ๊ณ ์ ์ผ๋ก ์ด์ํฉ๋๋ค.
๋ฐ์ดํฐ ๊ณ์ธต
| ๊ตฌ์ฑ | AZ A ์ด๊ธฐ ๋ฐฐ์น | AZ B ์ด๊ธฐ ๋ฐฐ์น | ์ฅ์ ๋์ |
|---|---|---|---|
| RDS MySQL Multi-AZ DB instance | Primary | Standby | ๋๊ธฐ ๋ณต์ , ๋๊ธฐ DB ์๋ ์น๊ฒฉ |
| ElastiCache Redis OSS ๋ณต์ ๊ทธ๋ฃน | Primary | Replica | ๋น๋๊ธฐ ๋ณต์ , Multi-AZยทAutomatic Failover ํ์ฑํ |
- RDS๋ ๋ ๋ฆฝ DB ๋ ๊ฐ๊ฐ ์๋ Multi-AZ ๋ฐฐํฌ 1๊ฐ์ ๋๋ค. Standby๋ ํ์ ์ฝ๊ธฐ ์์ฒญ์ ์ฒ๋ฆฌํ์ง ์์ต๋๋ค. 3๊ฐ AZ๋ฅผ ์ฌ์ฉํ๋ Multi-AZ DB cluster์ ๊ตฌ๋ถํฉ๋๋ค.
- Redis๋ ํด๋ฌ์คํฐ ๋ชจ๋ ๋นํ์ฑ, ์ค๋ 1๊ฐ, ์ฃผ ๋ ธ๋ 1๊ฐ + ๋ณต์ ๋ ธ๋ 1๊ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๊ณํฉ๋๋ค.
- RDS๋ ํ์ยท์ง๋ฌธยท๊ฒฐ๊ณผยท์์ ์ํ๋ฅผ, Redis๋ ์บ์ยท์์ ๋๊ธฐ์ด์ ๋ด๋นํฉ๋๋ค. ์คํค๋ง๋ ๋ฐฑ์๋์ ERD ๋ฌธ์์์ ํ์ ํฉ๋๋ค.
- A/B ์ฃผยท๋๊ธฐ ์ญํ ์ ์ด๊ธฐ ์์์ด๋ฉฐ ์ฅ์ ์ ํ ํ ๋ฐ๋ ์ ์์ต๋๋ค. ์ฑ์ ๊ณ ์ IP ๋์ ์๋น์ค ์๋ํฌ์ธํธ์ ์ฌ์ฐ๊ฒฐ ๋ก์ง์ ์ฌ์ฉํฉ๋๋ค.
- Redis ๋น๋๊ธฐ ๋ณต์ ๋ ์ต๊ทผ ์ฐ๊ธฐ ์ผ๋ถ ์ ์ค ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. DB ์์ ์ํ, ์ฌ์ฒ๋ฆฌ, ์ค๋ณต ์ฒ๋ฆฌ ๋ฐฉ์ง๋ฅผ ๋ฐฑ์๋์ ์ค๊ณํฉ๋๋ค.
- ์ด์คํ๋ ๋ฐฑ์ ์ ๋์ฒดํ์ง ์์ต๋๋ค. ์ค๋ ์ท ๋ณต์๊ณผ ๋ฐ์ดํฐ ๊ฒ์ฆ์ ๋ณ๋๋ก ์ํํฉ๋๋ค.
์จํ๋ ๋ฏธ์ค (develop)
| ๊ตฌ์ฑ | ๋ฐฉ์ | ๋น๊ณ |
|---|---|---|
| MySQL | StatefulSet + PVC | kubeadm์๋ ๊ธฐ๋ณธ ์คํ ๋ฆฌ์ง๊ฐ ์์ด local-path-provisioner๋ก PVC๋ฅผ ์ ๊ณตํฉ๋๋ค |
| Redis | Deployment | ๋จ์ผ ์ธ์คํด์ค. ์บ์์ ์์ ๋๊ธฐ์ด |
| ๋ฐฑ์ | etcd ์ค๋ ์ทยทMySQL ๋คํ ํ๋ฃจ 1ํ, 7์ผ ๋ณด๊ด | 5์ฃผ์ฐจ๋ถํฐ S3๋ก ์ ์กํฉ๋๋ค |
- ์จํ๋ ๋ฏธ์ค ๋ฐ์ดํฐ๋ ๊ฐ๋ฐยท๊ฒ์ฆ์ฉ์ด๋ฉฐ ์ด์คํํ์ง ์์ต๋๋ค. ์ด์ ๋ฐ์ดํฐ๋ AWS์๋ง ๋ก๋๋ค.
- Redis ๋จ์ผ ์ธ์คํด์ค๊ฐ ์ค๋จ๋๋ฉด ๋๊ธฐ์ด ํญ๋ชฉ์ด ์ฌ๋ผ์ง ์ ์์ง๋ง, ์ง๋ฌธ ์ํ์ ๊ธฐ์ค์ DB์ด๊ณ 30์ด ๋์ PENDING ์ง๋ฌธ์ ๋ค์ ๋๊ธฐ์ด์ ๋ฃ์ผ๋ฏ๋ก ์ฒ๋ฆฌ๊ฐ ์ด์ด์ง๋๋ค (API ๋ช ์ธ ๊ธฐ์ค).
์ธ์ฆ
์ญํ ๋ณ IAM ์ต์ ๊ถํ
์๋๋ ์ญํ ๋ณ ๊ถํ ๊ฒฝ๊ณ์ด๋ฉฐ ์ค์ IAM ์ ์ฑ ์ ์ฉ ์๋ฃ๋ฅผ ์๋ฏธํ์ง ์๋๋ค. ๊ตฌ์ฒด์ ์ธ ์์ ์ด๋ฆ๊ณผ ๋ฆฌ์์ค ARN์ ๊ณ์ ยท๋ฐฐํฌ ๋ฐฉ์ ํ์ ํ ์์ฑํ๋ค.
| ์ญํ | ํ์ํ ๋ฒ์ | ์ ํ ๊ธฐ์ค |
|---|---|---|
| ํด๋ผ์ฐ๋ ์ธํ๋ผ ๋ด๋น | ํ๋ก์ ํธ ๋คํธ์ํฌยท์ปดํจํธยท๋ฐ์ดํฐ ์์์ ์์ฑยท์์ ยท์กฐํ | ์๋น์ค๋ณ ์ง์ ๋ฒ์ ๋ด์์ ํ๋ก์ ํธ ๋ฆฌ์์คยทํ๊ทธยท๋ฆฌ์ ์ผ๋ก ์ ํ. ๋ชจ๋ ์์ ์ด ํ๊ทธ ์กฐ๊ฑด์ ์ง์ํ๋ค๊ณ ๊ฐ์ ํ์ง ์์ |
| ๋ฐฑ์๋ ๋ฐฐํฌ | ์ง์ ์ด๋ฏธ์ง ์ ์ฅ์์ ์ฑ ๋ฐฐํฌ ๋์ | ์ธํ๋ผยท์ฌ์ฉ์ ๊ด๋ฆฌ ๊ถํ๊ณผ ๋ถ๋ฆฌ. IAM ์ธ์ฆ๊ณผ Kubernetes ๋ฐฐํฌ ๊ถํ์ ๋ณ๋๋ก ์ ํ |
| ํ๋ก ํธ ๋ฐฐํฌ | ์ง์ S3 ๋ฐฐํฌ ๊ฒฝ๋ก ์ ๋ก๋, ์ง์ CloudFront ๋ฐฐํฌ ๋ฌดํจํ | ๋ค๋ฅธ ๋ฒํทยท๋ฐฐํฌ ์ ๊ทผ ์ ์ธ |
| ์ฑ ์คํ | ์ ํํ AI ์๋น์ค ํธ์ถ๊ณผ ํ์ํ ๋น๋ฐ๊ฐ ์ฝ๊ธฐ ๋ฑ | ๋ชจ๋ธยท๋น๋ฐ๊ฐ ๋ฑ ํ์ํ ๋ฆฌ์์ค๋ก ์ ํ. ์ธํ๋ผ ๊ด๋ฆฌ ๊ถํ ์ ์ธ |
| ์กฐํยท๋น์ฉ ํ์ธ | ํ์ํ ๋ชจ๋ํฐ๋งยท๋น์ฉ ์กฐํ | ๋ณ๊ฒฝ ๊ถํ๊ณผ ๊ตฌ๋ถ. ๋น์ฉ ์ ๋ณด ์ ๊ทผ์ ํ ๊ณ์ ์ ์ฑ ์ ๋ง์ถฐ ๋ถ์ฌ |
GitHub Actions OIDC๋ ํด๋น ์ ์ฅ์ยท๋ธ๋์น ๋๋ ๋ฐฐํฌ ํ๊ฒฝ์ผ๋ก ์ ๋ขฐ ์กฐ๊ฑด์ ์ ํํ๋ค. ์ฌ๋ ๊ณ์ ์ MFA๋ฅผ ์ ์ฉํ๋ค. ์ ์ ๋น๋ฐ๊ฐ์ ์ ์ฅ์์ ์ฌ๋ฆฌ์ง ์๋๋ค.
AWSยท๋ฐฐํฌ ๊ถํ ์ค๊ณ
- ํ์๋ณ ๋ก๊ทธ์ธ๊ณผ MFA, ์ ๋ฌด์ ํ์ํ ์ต์ ๊ถํ์ ์ฌ์ฉํฉ๋๋ค.
- ์ธํ๋ผ ๊ด๋ฆฌ, ์ฑ ๋ฐฐํฌ, ํ๋ก ํธ ๋ฐฐํฌ, ์ฑ ์คํ ๊ถํ์ ๋ถ๋ฆฌํฉ๋๋ค.
- GitHub Actions๋ OIDC ๊ธฐ๋ฐ ๋จ๊ธฐ ๊ถํ์ ์ฌ์ฉํ๋ฉฐ ์ ๋ขฐ ์กฐ๊ฑด์ ํด๋น ์ ์ฅ์์ ๋ธ๋์น ๋๋ ์น์ธ๋ ๋ฐฐํฌ ํ๊ฒฝ์ผ๋ก ์ ํํฉ๋๋ค.
- API ํคยทDB ์ํธ๋ Git์ ์ ์ฅํ์ง ์๊ณ ๋น๋ฐ๊ฐ ์ ์ฅ์๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ๋น๊ณต๊ฐ ํด๋ฌ์คํฐ๊น์ง ์ ๊ทผ ๊ฐ๋ฅํ ๋ฐฐํฌ ์คํ ์์น๋ฅผ ๋ง๋ จํฉ๋๋ค. OIDC ์ธ์ฆ๋ง์ผ๋ก ๋ด๋ถ ๋คํธ์ํฌ ์ ๊ทผ์ด ๊ฐ๋ฅํด์ง๋ ๊ฒ์ ์๋๋๋ค.
์จํ๋ ๋ฏธ์ค (develop)
- ๋น๋ฐ ๊ฐ: AIยท๋ด์ค API ํค์ DB ๋น๋ฐ๋ฒํธ๋ Kubernetes Secret์ผ๋ก ์ฃผ์ ํฉ๋๋ค.
- ๋ก๊ทธ์ธ ์ฟ ํค: ์จํ๋ ๋ฏธ์ค๋ HTTP๋ก ์๋น์คํ๋ฏ๋ก
COOKIE_SECURE=false๋ฅผ ConfigMap์ผ๋ก ์ฃผ์ ํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋localhost์ธ์ HTTP ์ฃผ์(VM IP)์์ Secure ์ฟ ํค๋ฅผ ์ ์ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. - ๋ฐฐํฌ ๊ถํ: self-hosted runner๋ ๊ด๋ฆฌ์ ๊ถํ์ด ์๋ ๋ฐฐํฌ ์ ์ฉ ServiceAccount(RBAC๋ก ์ฑ ๋ค์์คํ์ด์ค๋ง ํ์ฉ)๋ก ํด๋ฌ์คํฐ์ ์ ๊ทผํฉ๋๋ค.
- ์ด๋ฏธ์ง pull: GHCR ์ด๋ฏธ์ง๊ฐ ๋น๊ณต๊ฐ๋ฉด ํด๋ฌ์คํฐ์
imagePullSecret์ ๋ฑ๋กํฉ๋๋ค. - S3 ๋ฐฑ์ : ์จํ๋ ๋ฏธ์ค๋ IAM ์ญํ ์ ์ธ ์ ์์ผ๋ฏ๋ก, ๋ฐฑ์ ๋ฒํท ์ ๋ก๋๋ง ํ์ฉํ ์ ์ฉ IAM ์ฌ์ฉ์๋ฅผ ํด๋ผ์ฐ๋ ๋ด๋น๊ณผ ์ค๊ณํฉ๋๋ค.
์ฌ์ฉ์ ๋ก๊ทธ์ธยทJWT ๋ฑ ์ฑ ์ธ์ฆ ์์ธ๋ ๋ฐฑ์๋ ๋ด๋น ์์ฑ ์์ ์ ๋๋ค.
ํ๋ก ํธ์๋
AWS ๋๋ฉ์ธยทHTTPS ๊ตฌ์ฑ
2026-10-12 ํ๋ก ํธ์๋ ๋ด๋น ์ ์์ ๋ฐ์ํฉ๋๋ค. ์ค์ ๋๋ฉ์ธ ์ด๋ฆ์ ํด๋ผ์ฐ๋ ๋ด๋น์ด ํ์ ํ ์ ๋ ฅํฉ๋๋ค.
- ํ๋ฉด:
https://app.{๋๋ฉ์ธ}โ CloudFront โ ๋น๊ณต๊ฐ S3. - API:
https://api.{๋๋ฉ์ธ}โ ALB(HTTPS) โ ์ฑ ์๋ฒ. - ๋ ์ฃผ์๋ ๊ฐ์ ์์ ๋๋ฉ์ธ์ ์ฌ์ฉํ๊ณ Route 53์์ ๊ฐ๊ฐ CloudFrontยทALB๋ก ์ฐ๊ฒฐํฉ๋๋ค. HTTPS๋ฅผ ๊ณตํต์ผ๋ก ์ฌ์ฉํด ๋ก๊ทธ์ธ ์ฟ ํค์
SameSite=Lax์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ์ฌ์ดํธ ๊ตฌ์ฑ์ ์ ์งํฉ๋๋ค. - ํ๋ฉด๊ณผ API๋ ๊ฐ์ ์ฌ์ดํธ์ด์ง๋ง ์๋ก ๋ค๋ฅธ ์ถ์ฒ์ด๋ฏ๋ก CORS๊ฐ ํ์ํฉ๋๋ค. AWS API๋ CloudFront์
/api/*ํ๋ก์๋ฅผ ๊ฑฐ์น์ง ์๊ณ API ๋๋ฉ์ธ์ผ๋ก ์ง์ ํธ์ถํฉ๋๋ค.
CORSยทํ๊ฒฝ๋ณ API ์ฃผ์
- ๋ฐฑ์๋๋
https://app.{๋๋ฉ์ธ}์ถ์ฒ๋ง ํ์ฉํ๊ณ credentials๋ฅผ ํ์ฉํฉ๋๋ค. ์ฟ ํค ์ธ์ฆ ์์ฒญ์ ์์ผ๋์นด๋ ์ถ์ฒ(*)๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. - ํ๋ก ํธ๋ ์ฟ ํค ํฌํจ ์์ฒญ(
credentials: include๋๋ AxioswithCredentials: true)์ ์ฌ์ฉํฉ๋๋ค. - ํ๋ฉด์
api.js์์ ํ๊ฒฝ๋ณ API ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค: ์จํ๋ ๋ฏธ์ค/api, AWShttps://api.{๋๋ฉ์ธ}./api๊ฒฝ๋ก๊ฐ ์ค๋ณต๋๊ฑฐ๋ ๋น ์ง์ง ์๋๋ก ์ค์ ์๋ํฌ์ธํธ ์กฐํฉ์ API ๋ช ์ธ์ ๋ง์ถฐ ์ฐ๊ฒฐํฉ๋๋ค.
์ธ์ฆ์์ ๋ด๋น
app.{๋๋ฉ์ธ}์ฉ CloudFront ์ธ์ฆ์๋ ACM์us-east-1์์ ๋ฐ๊ธํฉ๋๋ค.api.{๋๋ฉ์ธ}์ฉ ALB ์ธ์ฆ์๋ ALB๋ฅผ ๋ฐฐ์นํ๋ ๋ฆฌ์ ์์ ๋ฐ๊ธํฉ๋๋ค. ALB๊ฐ ์์ธ์ด๋ฉด ์์ธ ๋ฆฌ์ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.- ํด๋ผ์ฐ๋ ๋ด๋น: ๋๋ฉ์ธ ์ด๋ฆ ํ์ , Route 53 ์ฐ๊ฒฐ, ์ธ์ฆ์ ๋ฐ๊ธยท๊ฒ์ฆยท์ฐ๊ฒฐ.
- ํ๋ก ํธ ๋ด๋น:
api.jsํ๊ฒฝ๋ณ ์ฃผ์ ๋ถ๋ฆฌ ๋ฐ ์ฟ ํค ํฌํจ ์์ฒญ ์ ์ฉ. - ๋ฐฑ์๋ ๋ด๋น: CORSยท๋ก๊ทธ์ธ ์ฟ ํค ์ค์ . ์ด์ ์ฟ ํค์
SecureยทHttpOnlyยทSameSite=Lax์ ์ค์ ๋ก๊ทธ์ธ ๋์์ ๊ฒ์ฆํฉ๋๋ค.
SPA ๊ฒฝ๋ก ์ฒ๋ฆฌ
- CloudFront๋ ํ๋ฉด ํ์ผ๋ง ์ ๊ณตํ๋ฉฐ 403/404๋ฅผ
/index.html๋ก ๋ฐํํ๋ SPA ์ค์ ์ ํ๋ฉด ๋ฐฐํฌ์๋ง ์ ์ฉํฉ๋๋ค. - API ์ค๋ฅ ์๋ต์ HTML๋ก ์นํํ์ง ์์ต๋๋ค. ์ ์ ํ์ผ ๋๋ฝ ์ค๋ฅ๊น์ง ์จ๊ฒจ์ง์ง ์๋์ง๋ ๋ฐฐํฌ ์ ํ์ธํฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค: Nginx ์ปจํ
์ด๋๋ฅผ Ingress
/๊ฒฝ๋ก๋ก ๋ ธ์ถํ๊ณ/api/*๋ ๋ฐฑ์๋๋ก ํ๋ก์ํฉ๋๋ค. SPA ๊ฒฝ๋ก๋/api/*๋ฅผ ์ ์ธํ๊ณindex.html๋ก ์ฐ๊ฒฐํฉ๋๋ค.
CI/CD
์ด์ ๋ฐฐํฌ ๊ณํ: main ๋ณ๊ฒฝ โ ํ ์คํธ โ ๋ฒ์ ๊ณ ์ ์ด๋ฏธ์ง ๋น๋ยท์ ์ฅ โ ์ด์ ์ฑ ๋ฐฐํฌ โ ํฌ์ค์ฒดํฌ. ์คํจ ์ ์ง์ ์ ์ ์ด๋ฏธ์ง๋ก ๋ณต๊ทํฉ๋๋ค. ๊ฐ๋ฐยท์ด์ ๋ถ๊ธฐ์ ์ด๋ฏธ์ง ์ ์ฅ์, ์คํ๊ธฐ ์์น, ์น์ธ ๊ท์น์ ๊ด๋ จ ๋ด๋น๊ณผ ํ์ ์์ ์ ๋๋ค.
๊ตฌํ ์ ์ฐจ๋ ๋ณ๋ ๋ฐฐํฌ ๊ฐ์ด๋์ ๊ธฐ๋กํฉ๋๋ค. ํ์ฌ ์๋ ๋ฐฐํฌ๊ฐ ๊ตฌ์ถ๋ ์ํ๋ ์๋๋๋ค.
์จํ๋ ๋ฏธ์ค (develop)
develop ๋ณ๊ฒฝ โ ํ
์คํธ โ ์ด๋ฏธ์ง ๋น๋ โ GHCR์ ์ปค๋ฐ SHA ํ๊ทธ๋ก push โ control plane VM์ self-hosted runner๊ฐ ํด๋ฌ์คํฐ์ ์ ์ฉ โ kubectl rollout status๋ก ํ์ธ, ์คํจ ์ ํ ์ฑ๋ ์๋ฆผ.
- ์จํ๋ ๋ฏธ์ค VM์ ์ธ๋ถ์์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก, ํด๋ฌ์คํฐ ์์ runner๊ฐ GitHub์์ ์์ ์ ๋ฐ์์ค๋ ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
- ๋ธ๋์นยท์น์ธยท๋กค๋ฐฑ ์ ์ฑ ์ ๋ฐฐํฌ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฆ ๋๋ค.
๋ฆฌ์์ค ํ๊ทธ
์ด๊ธฐ ํ๊ทธ ์ ์์ Project=likelion-team01, Owner=chaneee93, Environment=practice, ManagedBy=console์
๋๋ค. Owner๋ ์ค์ ๋ด๋น์, ManagedBy๋ ์ค์ ๊ด๋ฆฌ ๋ฐฉ์์ ๋ง์ถฅ๋๋ค. ํ ๊ณตํต ๊ฐ์ ์ ์ฉ ์ ์ ํ์ ํฉ๋๋ค. ๋น์ฉ ๋ถ๋ฅ์ ์ฌ์ฉํ ํ๊ทธ๋ ๋น์ฉ ํ ๋น ํ๊ทธ ํ์ฑํ ์ฌ๋ถ๋ ํ์ธํ๋ฉฐ, ํ๊ทธ๋ง์ผ๋ก ์ ๊ทผ ๊ถํ์ด ํต์ ๋๋ ๊ฒ์ ์๋๋๋ค.
IaC (Terraform)
์๋๋ 5์ฃผ์ฐจ ์ฝ๋ํ ๋์์ด๋ฉฐ ์ค์ ๋ชจ๋ ๊ตฌํ ์ ์ ๋๋ค.
| ๋ชจ๋(์ ์) | ์ญํ |
|---|---|
| network | VPC, ์๋ธ๋ท 6๊ฐ, IGW, AZ๋ณ NAT 2๊ฐ, ๋ผ์ฐํ |
| compute | EKS, ๊ด๋ฆฌํ ์์ ๋ ธ๋ ๊ทธ๋ฃน, ๊ด๋ จ ๋ณด์ ๊ทธ๋ฃน |
| data | RDS Multi-AZ, Redis ๋ณต์ ๊ทธ๋ฃน, ๋ฐ์ดํฐ ์ ๊ทผ ๊ท์น |
| identity | OIDC, ๋ฐฐํฌยท์ฑ ์คํ ์ญํ ๊ณผ ์ต์ ๊ถํ |
| frontend | S3ยทCloudFront, ํ๋ก ํธ ๋ด๋น๊ณผ ๊ด๋ฆฌ ๋ฒ์ ํ์ |
์ค์ต ์๊ฐ์ ์๋น์ค ์ด์์ ๊ณํํฉ๋๋ค. ์ข ๋ฃยท์ฌ์์ฑ ๋์๊ณผ ์๊ตฌ ๋ฐ์ดํฐยท๋ฐฑ์ ยทTerraform ์ํ ๋ณด๊ด ๋์์ ๋ถ๋ฆฌํ๊ณ , ์ค์ ์ข ๋ฃ ์ ์ฐจ๋ ๊ตฌ์ถ ํ ๊ฒ์ฆํฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค VM์ Terraform ๋์์ด ์๋๋ฉฐ, ์ค์น ์ ์ฐจ๋ฅผ ๋ฌธ์์ ์คํฌ๋ฆฝํธ๋ก ๊ด๋ฆฌํฉ๋๋ค. ์ฑ ๋ฐฐํฌ๋ 5์ฃผ์ฐจ๋ถํฐ ์จํ๋ ๋ฏธ์ค์ EKS๊ฐ ๊ฐ์ Helm ์ฐจํธ๋ฅผ values ํ์ผ๋ง ๋ฐ๊ฟ ์ฌ์ฉํฉ๋๋ค.
๋ชจ๋ํฐ๋ง
ํด๋ผ์ฐ๋ ์ธก ๊ด์ฐฐ ๋์์ ALB ์ ์ ๋์ยท์๋ต ์ค๋ฅ, ๋ ธ๋ยทํ๋ ์ํ, DB ์ฐ๊ฒฐยท์ฅ์ ์ ํ, Redis ๋ณต์ ยทํ ๊ธธ์ด, APIยท์์ปค ์ฒ๋ฆฌ ์๊ฐ์ ๋๋ค. ๋๊ตฌยท๋์๋ณด๋ยท์๋ฆผ ๊ตฌ์ฑ์ ์จํ๋ ๋ฏธ์ค ๋ฐ ๋ฐฑ์๋ ๋ด๋น๊ณผ ํ์ ์์ ์ ๋๋ค.
์จํ๋ ๋ฏธ์ค (develop)
- 4์ฃผ์ฐจ๋ถํฐ kube-prometheus-stack(Prometheus + Grafana)์ ์ค์นํฉ๋๋ค.
- ๊ด์ฐฐ ๋์: ๋
ธ๋ยทํ๋ ์์, ์ฑ ๋ฉํธ๋ฆญ(
/actuator/prometheus, ํด๋ฌ์คํฐ ๋ด๋ถ ์์ง), ์๋ต ์๊ฐยท5xx ์๋ฌ์จ, ์บ์ ์ ์ค๋ฅ , ๋๊ธฐ์ด ๊ธธ์ด, ๋ฐฑ์ ์ฑ๊ณต ์ฌ๋ถ. - ํด๋ผ์ฐ๋์ ๊ฐ์ ๋์๋ณด๋๋ฅผ ์ธ ์ ์๋๋ก ์งํ ์ด๋ฆ๊ณผ ํจ๋ ๊ตฌ์ฑ์ ๊ณต์ ํ๋ ๋ฐฉํฅ์ผ๋ก ํ์ํฉ๋๋ค.
์ค์ธก ๊ฒ์ฆ ๊ฒฐ๊ณผ ์์ฝ
์์ง ๊ตฌ์ถ ์ ์ด๋ฏ๋ก ์ค์ธก๊ฐ์ด ์์ต๋๋ค. 4์ฃผ์ฐจ ๊ธฐ์ค๊ฐ ๋ฐ 6์ฃผ์ฐจ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ธก์ ํ ๊ธฐ์ ํฉ๋๋ค.
| ์๋๋ฆฌ์ค | ๋ถํ | ์คํจ์จ | p95 ์๋ต์๊ฐ |
|---|---|---|---|
| ์ธก์ ํ ์์ฑ | ๋ฏธ์ธก์ | ๋ฏธ์ธก์ | ๋ฏธ์ธก์ |
์์ ๊ฒ์ฆ: A/B ์ฑ ๋ถ์ฐ, AZ ํ์ชฝ ์ฑ ์ค๋จ ์ ALBยท์์ฌ ์ฑ์ ์ธ๋ถ ํต์ , RDSยทRedis ์ฅ์ ์ ํ ํ ์ฌ์ฐ๊ฒฐ, ๋ฐฑ์ ๋ณต์, HPAยทKEDA ํ์ฅ. ์์ธ ์ ์ฐจ๋ ์ฅ์ ์๋๋ฆฌ์คยท์ฑ๋ฅ ํ ์คํธ ๋ฌธ์์์ ๊ด๋ฆฌํฉ๋๋ค.
์จํ๋ ๋ฏธ์ค ์์ ๊ฒ์ฆ: ์์ปค ๋ ธ๋ ๋ค์ด ์ ํ๋ ์ฌ๋ฐฐ์น, etcd ์ค๋ ์ท ๋ณต๊ตฌ, MySQL ๋ฐฑ์ ๋ณต์, ์จํ๋ ๋ฏธ์ค์ ํด๋ผ์ฐ๋ ๋ณต๊ตฌ ์๊ฐ ๋น๊ต.
์๋ ค์ง ํ๊ณ
- ํ ๊ฒํ ์ ์ค๊ณ์์ด๋ฉฐ ์ค์ ๊ณ์ ยท๋ฆฌ์ ยท๋ฒ์ ยท์๋ฒ ํฌ๊ธฐยท์ฐ๊ฒฐ ์์ธ๋ ๋ฏธ์ ์ ๋๋ค.
- 4์ฃผ์ฐจ kubeadm ์ ์ด ๋ ธ๋ 1๋๋ ๋จ์ผ ์ฅ์ ์ง์ ์ ๋๋ค. NATยท๋ฐ์ดํฐ ์ด์คํ๋ง์ผ๋ก ํด๋ฌ์คํฐ ์ ์ฒด ๊ณ ๊ฐ์ฉ์ฑ์ด ์์ฑ๋์ง๋ ์์ต๋๋ค.
- AZ ์ฅ์ ์ ๋จ์ ์ฑ ์ฉ๋๊ณผ ์ฌ์ฐ๊ฒฐ ๋์์ ๊ฒ์ฆํด์ผ ํฉ๋๋ค. ์ฅ์ ์ ํ ์ค ์ผ์ ์ค๋จ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
- Redis ๋ณต์ ๋ ๋น๋๊ธฐ์ด๋ฏ๋ก ์์ ์ ์คยท์ค๋ณต ์ฒ๋ฆฌ ๋ฐฉ์ง ์ค๊ณ๊ฐ ๋ณ๋๋ก ํ์ํฉ๋๋ค.
- ์ด ๋ฌธ์๋ ํด๋ผ์ฐ๋ ์ค๊ณ ์ค์ฌ์ด๋ฉฐ ์จํ๋ ๋ฏธ์ค ์์ธยท์ฑ ์ธ์ฆยทํ๋ฉด ์ค๊ณ๋ ๊ฐ ๋ด๋น์ด ๋ณด์ํฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค control plane๋ 1๋๋ผ ๋จ์ผ ์ฅ์ ์ง์ ์ ๋๋ค. control plane ์ฅ์ ์ ํด๋ฌ์คํฐ ๊ด๋ฆฌ๊ฐ ๋ฉ์ถ์ง๋ง ์คํ ์ค์ธ ํ๋๋ ์ ์ง๋ฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค๋ ๋ ธํธ๋ถ 1๋์์ ์คํ๋๋ฏ๋ก, ๋ ธํธ๋ถ์ด ๊บผ์ง๊ฑฐ๋ ์ ์ ์ ๋ค์ด๊ฐ๋ฉด ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ self-hosted runner๊ฐ ํจ๊ป ๋ฉ์ถฅ๋๋ค. ํธ์คํธ๋ ์ ์ ์ฐ๊ฒฐ ์ ์ ์ ์ ํด์ ํด ์ด์ํฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค์๋ ํด๋ผ์ฐ๋ ๋ก๋๋ฐธ๋ฐ์๊ฐ ์์ด Ingress๋ฅผ NodePort๋ก ๋ ธ์ถํฉ๋๋ค.
- ์จํ๋ ๋ฏธ์ค๋ HTTP๋ก ์๋น์คํ๋ฏ๋ก ์ด์๊ณผ ์ฟ ํค ๋ณด์ ์ค์ (
COOKIE_SECURE)์ด ๋ค๋ฆ ๋๋ค.
์ฐธ๊ณ ์๋ฃ
๊ณ์ ์ค์ ยท๋คํธ์ํฌ ์คํ ์ ์ฐจ ๋ฐ ์งํ ์ํ๋ ๊ณ์ ๋ณด์ยท์์ฐ ์ด์ #26๊ณผ ๋คํธ์ํฌ ๊ตฌ์ฑ ์ด์ #27์์ ๊ด๋ฆฌํฉ๋๋ค.