V1 - 100-hours-a-week/9-team-Devths-WIKI GitHub Wiki
๋ชฉ์ฐจ (ํผ์น๊ธฐ/์ ๊ธฐ)
* 1. V1 ๋ชฉํ ์ ์* 2. ํ์ฌ ์ํคํ ์ฒ ์์ฝ(V1 ์งํ์ํฉ ๊ธฐ์ค)
* 3. EC2 ๋ด๋ถ ์๋น์ค ๊ตฌ์ฑ(Prod / NonProd ๊ณตํต)
* 4. ์ด์ ์ ๊ทผ ๋ฐ ๊ฐ์ฌ ๋ก๊ทธ(SSM ์ธ์ ๋ก๊ทธ + ๋ก๊ทธ ๊ทธ๋ฃน ๋ถ๋ฆฌ)
* 5. ๋น์์ด ํ์งยท์ฒ๋ฆฌ ๋ฐ ๋ณด์ ๋ชจ๋ํฐ๋ง(CloudWatch โ SNS/Lambda โ Discord)
* 6. ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๋ฐ ๋ฐฐํฌ ์ด๋ ฅ ๊ธฐ๋ก(GitHub Actions โ S3 Artifact โ CodeDeploy)
* 7. ์ด์(Prod) ์๋ ํธ๋ฆฌ๊ฑฐ ๋ฐฐํฌ ํ๋ฆ ์ถ๊ฐ
* 8. ์คํ ๋ฆฌ์ง ๋ฐ ์ํฐํฉํธ ๊ด๋ฆฌ(S3)
* 9. V1 ๊ธฐ์ค ๋ฌ์ฑ ํญ๋ชฉ ์ ๋ฆฌ(์งํ์ํฉ)
* 10. ๋ค์ ๋จ๊ณ ์ ์(V2 ์ ํ ๋ฐฉํฅ)
V1์์๋ ๊ธฐ๋ฅ ๊ฐ๋ฐ ์๋์ ์ด์ ๋จ์์ฑ์ ์ฐ์ ํ์ฌ **โ๋ฐฐํฌ ๊ฐ๋ฅํ ์๋น์ค ํํ + ์ด์ ๊ด์ฐฐ ๊ฐ๋ฅ์ฑ(Observability)์ ์ต์ ๊ธฐ์คโ**์ ๋ฌ์ฑํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ.
์๋น์ค๋ ๊ฐ์ธ ํฌํธํด๋ฆฌ์ค/์ด๋ ฅ์ ๊ธฐ๋ฐ ์ฑ์ฉ ๋น์ AI์ด๋ฉฐ, ์ปค๋ฎค๋ํฐยท์ฑํ
ยท์ฑ๋ดยท์บ๋ฆฐ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํจ.
๊ตฌ์ฑ์์๋ Next.js(ํ๋ฐํธ), Spring Boot(๋ฐฑ์๋), FastAPI(vLLM ๊ธฐ๋ฐ AI)๋ก ๋ถ๋ฆฌํ์ฌ ์ด์ํจ.
ํ์ฌ๋ Prod_VPC / NonProd_VPC๋ฅผ ๋ถ๋ฆฌํ์ฌ ํ๊ฒฝ ๊ฐ ๊ฒฉ๋ฆฌ๋ฅผ ๋ฌ์ฑํจ.
๊ฐ VPC๋ Public Subnet 1๊ฐ + EC2 1๋๋ก ๊ตฌ์ฑ๋์ด ๋จ์ผ ๋
ธ๋์์ ์๋น์ค ์ปดํฌ๋ํธ๋ฅผ ์ด์ํจ.
์ธ๋ถ ํธ๋ํฝ์ Route 53 โ (๊ฐ VPC์ Internet Gateway) โ EC2(Nginx) ํ๋ฆ์ผ๋ก ์ ์
๋จ.
์ด์ ๊ด์ ์์๋ SSM ๊ธฐ๋ฐ ์ ๊ทผ ํต์ + CloudWatch ์ค์ฌ ๋ชจ๋ํฐ๋ง + Discord ์๋ฆผ + ๋ฐฐํฌ ์ด๋ ฅ ๊ธฐ๋ก์ ํตํด โ์ฌ๋์ด ์ง์ ๋ค์ด๊ฐ์ ํ์ธํ๋ ์ด์โ์ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ๊ตฌ์ฑํจ.
๊ฐ ํ๊ฒฝ์ EC2์๋ ์๋ ๊ตฌ์ฑ์์๊ฐ ๋ฐฐ์น๋จ.
-
Nginx(80, 443): ์ธ๋ถ ํธ๋ํฝ ๋จ์ผ ์ง์
์ ์ญํ ์ ์ํํจ.
-
Next.js(3000): ์ฌ์ฉ์ ์น UI๋ฅผ ์ ๊ณตํจ.
-
Spring Boot(8080): API ์๋ฒ๋ก์ ์ธ์ฆ/๋น์ฆ๋์ค ๋ก์ง/์ปค๋ฎค๋ํฐยท์ฑํ
ยท์บ๋ฆฐ๋์ ์ฝ์ด ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํจ.
-
Spring Boot Blue/Green(8080): ๋ฌด์ค๋จ ๋ฐฐํฌ ์ ํ์ ์ํด Blue/Green ๊ตฌ์ฑ์ ์ ์ฉํจ.
-
FastAPI(8000): AI ๊ธฐ๋ฅ(vLLM ๊ธฐ๋ฐ ์ถ๋ก ํฌํจ) ๋ฐ ์ฑ๋ด ์ฐ๋ ๊ธฐ๋ฅ์ ์ฒ๋ฆฌํจ.
-
PostgreSQL(5432): ์๋น์ค ๋ฐ์ดํฐ ์ ์ฅ์๋ก ์ฌ์ฉํจ(ํ์ฌ ๋์ผ ์ธ์คํด์ค ๋ด ๊ตฌ์ฑ์).
-
ChromaDB: AI ๊ธฐ๋ฅ์ ๋ฒกํฐ ์ ์ฅ์๋ก ์ฌ์ฉํ๋ฉฐ FastAPI์ ์ฐ๋๋จ.
๋๋ฉ์ธ ๋ผ์ฐํ
์ Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก ๋ถ๊ธฐํ์ฌ ์๋น์ค URL์ ๋ถ๋ฆฌํจ.
(์: www.* โ Next.js, api.* โ Spring Boot, ai.* โ FastAPI ํํ๋ก ๊ตฌ์ฑํจ.)
์ด์ ์ ๊ทผ์ SSH ์ง์ ์ ๊ทผ๋ณด๋ค SSM(Session Manager) ์ค์ฌ์ผ๋ก ์ ํํ์ฌ ์ ๊ทผ ๊ฒฝ๋ก๋ฅผ ํต์ ํ๊ณ ๊ธฐ๋ก์ด ๋จ๋๋ก ์ค๊ณํจ.
SSM ์ธ์
๋ก๊ทธ๋ CloudWatch Logs์ SSM ์ ์ฉ Log Group์ ์ ์ฅ๋๋ฉฐ, ์ด๋ฅผ ํตํด โ๋๊ฐ/์ธ์ /์ด๋ค ๋ช
๋ น์ ์
๋ ฅํ๋์งโ๋ฅผ ์ฌํ ์ถ์ ๊ฐ๋ฅํ๊ฒ ํจ.
Dev/Prod ํ๊ฒฝ์ ๋ก๊ทธ ๊ทธ๋ฃน์ ๋ถ๋ฆฌํ๊ฑฐ๋, ํ๋์ ๋ก๊ทธ ๊ทธ๋ฃน์์ Stream Prefix๋ก ํ๊ฒฝ/์ธ์คํด์ค๋ฅผ ๊ตฌ๋ถํ๋ ๋ฐฉ์์ผ๋ก ์กฐํ์ฑ์ ํ๋ณดํจ.
SSM ์ธ์
๋ก๊ทธ์ ์ด์ ๋ก๊ทธ๋ ๋จ์ ์ ์ฅ์์ ๋๋ด์ง ์๊ณ ์ํ ์ ํธ๋ฅผ ์๋ ํ์งํ๋๋ก ๊ตฌ์ฑํจ.
- CloudWatch Logs์์ ๋น์์ด/์ํ ๋ช
๋ น ํจํด/๊ธ์น์ด ๋ฑ์ Metric Filter๋ก ์ถ์ถํจ.
- ํน์ ์๊ณ์น ์กฐ๊ฑด์์ CloudWatch Alarm์ ๋ฐ์์ํด.
- ์๋์ SNS๋ก ์ ๋ฌ๋๋ฉฐ, ํ์ ์ Lambda๊ฐ ๋ฉ์์ง๋ฅผ ๊ฐ๊ณตํจ.
- ์ต์ข
์ ์ผ๋ก Discord ์ฑ๋๋ก ์๋ฆผ์ด ์ ์ก๋์ด ์ด์์๊ฐ ์ฆ์ ์ธ์งํ ์ ์๋๋ก ํจ.
์ด ๊ตฌ์กฐ๋ โ๋ก๊ทธ๋ฅผ ๋์ค์ ํ์ธโ์ด ์๋๋ผ โ์ด์ ์งํ๊ฐ ์ด์์์๊ฒ ๋จผ์ ๋๋ฌโํ๋ ์ด์์ ๊ฐ๋ฅํ๊ฒ ํจ.
V1์์๋ ๋ฐฐํฌ ์๋ํ๋ฅผ ์ต์ ๋น์ฉ/์ต์ ๋ณต์ก๋๋ก ๊ตฌ์ฑํ๋, ๋ฐฐํฌ ์ด๋ ฅ์ ์ถ์ ๊ฐ๋ฅ์ฑ์ ํจ๊ป ํ๋ณดํจ.
ํ์ฌ ๋ฐฐํฌ ํ๋ฆ์ ์๋์ ๊ฐ์.
- ๊ฐ๋ฐ์๊ฐ GitHub์ ํธ์ํจ
- GitHub Actions์์ ๋น๋/ํจํค์ง์ ์ํํจ
- ์ฐ์ถ๋ฌผ์ S3(Artifact_Prod/Dev)์ ์
๋ก๋ํจ
- CodeDeploy๊ฐ ํด๋น ์ํฐํฉํธ๋ฅผ EC2๋ก ๋ฐฐํฌํจ
์ด ๊ณผ์ ์ ์ํฐํฉํธ(๋ฒ์ ) ๋จ์๋ก ์ ์ฅยท๊ด๋ฆฌ๋๋ฉฐ, S3 ์ํฐํฉํธ + CodeDeploy ๊ธฐ๋ก์ ํตํด โ์ธ์ ์ด๋ค ๋ฒ์ ์ด ๋ฐฐํฌ๋์๋์งโ๋ฅผ ์ถ์ ๊ฐ๋ฅํ๊ฒ ํจ.
์ด์ ํ๊ฒฝ(Prod)์ ์๋น์ค ์์ ์ฑ์ด ์ต์ฐ์ ์ด๋ฏ๋ก, ๋จ์ํ ํธ์ ์ด๋ฒคํธ๋ก ์๋ ๋ฐฐํฌ๋์ง ์๋๋ก ์๋ ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ ๋ฐฐํฌ ํ๋ฆ์ ์ถ๊ฐํจ.
์ฆ, NonProd๋ ๊ฐ๋ฐ ํธ์์ฑ์ ์ํด ์๋ ๋ฐฐํฌ ์ค์ฌ์ผ๋ก ์ด์ํ๋, Prod๋ โ์ด์์ ์น์ธ ํ ๋ฐฐํฌโ๊ฐ ๋๋๋ก ๋ถ๊ธฐํจ.
- ์ด์ ๋ฐฐํฌ๋ GitHub Actions์์ workflow_dispatch(์๋ ์คํ) ๋๋ ์น์ธ ๋จ๊ณ๊ฐ ํฌํจ๋ ์๋ ํธ๋ฆฌ๊ฑฐ๋ก ์ํํจ.
- ์๋ ํธ๋ฆฌ๊ฑฐ ๋ฐฉ์์ ๋ฐฐํฌ ํ์ด๋ฐ์ ์ด์์๊ฐ ํต์ ํ ์ ์์ด, ํผํฌ ํ์ ํํผ ๋ฐ ์ ๊ฒ ์ฐฝ ์ด์์ด ๊ฐ๋ฅํด์ง.
- ์ฅ์ ๋ฐ์ ์ โ์๋ ๋ฐฐํฌ๋ก ์ธํ ์ฐ์ ์ํฅโ์ ์ค์ด๊ณ , ๋ฐฐํฌ ์ ์ต์ข
์ฒดํฌ(ํฌ์ค/๋ก๊ทธ/์งํ ํ์ธ)๋ฅผ ๊ฐ์ ํ๋ ํจ๊ณผ๊ฐ ์์.
- ์๋ ํธ๋ฆฌ๊ฑฐ๋ก ์คํ๋ ๋ฐฐํฌ ์ญ์ S3 ์ํฐํฉํธ ๋ฐ CodeDeploy ์ด๋ ฅ์ ๊ธฐ๋ก๋์ด, ์๋ ๋ฐฐํฌ์ ๋์ผํ ์์ค์ ์ถ์ ์ฑ์ ์ ์งํจ.
๊ฒฐ๊ณผ์ ์ผ๋ก V1 ๋จ๊ณ์์๋ Prod๋ โ์๋๋ ๋ฐฐํฌ๋ง ๋ฐ์๋๋ ์ด์ ์ฒด๊ณโ๋ก ์ ๋ฆฌํจ.
S3๋ ๋ ๋ชฉ์ ์ ๋ฒํท ์ฒด๊ณ๋ก ์ฌ์ฉํจ.
-
S3(Prod/Dev): ์๋น์ค ๊ธฐ๋ฅ ๊ด์ ์์ ์
๋ก๋ ํ์ผ/์ ์ ๋ฆฌ์์ค ์ ์ฅ์ ์ญํ ์ ์ํํจ.
-
Artifact_Prod/Dev: ๋ฐฐํฌ ๊ด์ ์์ CodeDeploy๊ฐ ์ฐธ์กฐํ๋ ์ํฐํฉํธ ์ ์ฅ์๋ก ์ฌ์ฉํจ.
์๋น์ค ๋ฐ์ดํฐ์ ๋ฐฐํฌ ์ฐ์ถ๋ฌผ์ ๋ถ๋ฆฌํ์ฌ ์ด์ ๋ฆฌ์คํฌ๋ฅผ ์ค์ด๋ ๊ตฌ์กฐ์.
- Prod/NonProd VPC ๋ถ๋ฆฌ ์๋ฃํจ.
- ๊ฐ ํ๊ฒฝ์ EC2 ๊ธฐ๋ฐ ์๋น์ค ์คํ(Next.js/Spring Boot Blue/Green/FastAPI/PostgreSQL/ChromaDB/Nginx) ๋ฐฐ์น ์๋ฃํจ.
- Route 53 ๊ธฐ๋ฐ ๋๋ฉ์ธ ์ง์
๋ฐ Nginx ๋ฆฌ๋ฒ์ค ํ๋ก์ ๋ถ๊ธฐ ๊ตฌ์ฑ ์๋ฃํจ.
- GitHub Actions โ S3 Artifact โ CodeDeploy ๋ฐฐํฌ ํ๋ฆ ๊ตฌ์ฑ ์๋ฃํจ.
- Prod ๋ฐฐํฌ๋ ์๋ ํธ๋ฆฌ๊ฑฐ ๊ธฐ๋ฐ์ผ๋ก ํต์ ๊ฐ๋ฅํ๋๋ก ๊ตฌ์ฑ ์๋ฃํจ.
- SSM ๊ธฐ๋ฐ ์ด์ ์ ๊ทผ ํต์ ๋ฐ ์ธ์
๋ก๊ทธ ๊ธฐ๋ก ๊ตฌ์กฐ ๊ตฌ์ฑ ์๋ฃํจ.
- CloudWatch ๊ธฐ๋ฐ ๋ชจ๋ํฐ๋ง/๊ฒฝ๋ณด ๋ฐ Discord ์๋ฆผ ์ฐ๋ ๊ตฌ์ฑ ์๋ฃํจ.
- SSM ๋ก๊ทธ ๊ทธ๋ฃน ๊ธฐ๋ฐ ๋น์์ด/์ํ ํจํด ํ์ง(ํํฐ โ ์๋ โ ์๋ฆผ) ๊ตฌ์ฑ ์๋ฃํจ.
- ๋จ์ผ EC2 ๋ด DB ๋๊ฑฐ ๊ตฌ์กฐ๋ก ์ฅ์ ๋๋ฉ์ธ์ด ํผ.
- ๋จ์ผ ๋
ธ๋ ๊ตฌ์กฐ์ด๋ฏ๋ก ์คํ ์ค์ผ์ผ/์๊ฐ๋ณต๊ตฌ๊ฐ ์ ํ์ ์.
- Public Subnet ๊ธฐ๋ฐ์ด๋ฏ๋ก ์ธ๋ถ ๋
ธ์ถ๋ฉด ์ต์ํ ์ ์ฑ
์ด ์ง์์ ์ผ๋ก ํ์ํจ.
- AI ์ํฌ๋ก๋(vLLM)์ ๋ฆฌ์์ค ๋ณ๋์ด ์ปค์ ์ฑ๋ฅ/๋น์ฉ ํ๋๊ณผ ๊ฒฉ๋ฆฌ๊ฐ ํ์ํจ.
V1์ โ๋ฐฐํฌ ๊ฐ๋ฅํ ์๋น์ค + ์ต์ ์ด์ ์๋ํโ๋ฅผ ํ๋ณดํ๋ ๋จ๊ณ์์.
V2์์๋ โ์๋น์ค ์ค์ฌ ์ด์โ์ ์ํด ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ๋ ์ผ๋ฐํํ๊ณ , ์ฅ์ ๋์์ ์๋ํํ๋ฉฐ, ํ์ฅ์ฑ์ ํ๋ณดํ๋ ๋ฐฉํฅ์ด ํ์ํจ.
ํธ๋ํฝ ์ฆ๊ฐ์ ๊ธฐ๋ฅ ํ์ฅ(์ฑํ
/AI/์บ๋ฆฐ๋ ๋์ ์ฌ์ฉ)์ด ๋ณธ๊ฒฉํ๋๋ฉด, ๋ฉํฐ ๋
ธ๋ ๊ธฐ๋ฐ ์ค์ผ์คํธ๋ ์ด์
(kubeadm ํฌํจ) ์ ํ์ด ์์ฐ์ค๋ฌ์ด ๋ค์ ๋จ๊ณ๊ฐ ๋จ.