๐ FinDeploy: 1์ฃผ MVP ์คํ๋ฆฐํธ ๊ฐ๋ฐ ๊ณํ (์ค์ ์ํคํ ์ฒ Ver.)
ํต์ฌ ์ ๋ต: 2-Phase ์ ๊ทผ๋ฒ. 4์ผ ์ฐจ๊น์ง '๊ฐ์ง ๋ฐ์ดํฐ(Mock)'๋ก ํต์ฌ ํ๋ฆ(E2E)์ ๋ฌด์กฐ๊ฑด ์์ฑํ๊ณ , ๋จ์ 3์ผ๊ฐ '์ง์ง ๋ฐ์ดํฐ(AI + Infracost)'๋ก ์์ง์ ๊ต์ฒดํฉ๋๋ค.
Phase 1: ํต์ฌ PoC ๋ฐ ํ๋ก์ ํธ ์ค์ (Day 1 ~ Day 2)
๋ชฉํ: ๊ฐ์ฅ ํฐ ์ํ(Risk)์ธ AI ๋ถ์ PoC๋ฅผ 2์ผ ์์ ๋๋
๋๋ค.
โข [๊ณตํต / Day 1 ์ค์ ] API ํค ๋ฐ๊ธ
โฆ ํ์ ๋ชจ๋ OpenAI(GPT-4o) ๋๋ Gemini API ํค ๋ฐ๊ธ
โฆ Infracost API ํค (๋ฌด๋ฃ) ๋ฐ๊ธ ๋ฐ ๊ณต์
โข [AI PoC / Day 1-2] AI ๋ถ์ ์คํฌ๋ฆฝํธ ๊ฒ์ฆ (๊ฐ์ฅ ์ค์! โ
โ
โ
)
โฆ UI, ์๋ฒ ์์ด test.py ์คํฌ๋ฆฝํธ ํ๋๋ก ์์
โฆ ์ํ '์ค์ ์ํคํ
์ฒ ๋ค์ด์ด๊ทธ๋จ' ์ด๋ฏธ์ง 3์ฅ ์ค๋น (AWS, GCP, Azure)
โฆ Task 1 (MVP์ฉ): AI Vision ํ๋กฌํํธ ํ๋ $\rightarrow$ "์ด ๋ค์ด์ด๊ทธ๋จ์ ๋ณด๊ณ ๋ฆฌ์์ค ๊ฐ์๋ฅผ ๊ฐ๋จํ JSON์ผ๋ก ์์ฝํด ์ค." (์: {"aws_instance": 3, "aws_db_instance": 1})
โฆ Task 2 (๋ณธ์ ์ฉ): AI Vision ํ๋กฌํํธ ํ๋ $\rightarrow$ "์ด ๋ค์ด์ด๊ทธ๋จ์ ๋ณด๊ณ 3๋ ํด๋ผ์ฐ๋๋ณ Terraform ์ฝ๋๋ฅผ ์์ฑํด ์ค."
โฆ (๊ฒฐ๊ณผ ํ์ธ: ์๊ทธ๋ฆผ๋ณด๋ค ํจ์ฌ ๋ ์์ ์ ์ผ๋ก JSON๊ณผ ์ฝ๋๊ฐ ์์ฑ๋๋ ๊ฒ์ ํ์ธ)
โข [FE / BE / Day 1-2] ํ๋ก์ ํธ ์ธํ
โฆ React (FE) + Node.js/Python (BE) ๊ธฐ๋ณธ ํ๋ก์ ํธ ์์ฑ ๋ฐ Git ์ฐ๋
โฆ FE: Chart.js ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น
Phase 2: '๊ฐ์ง MVP' ์์ฑ (Day 3 ~ Day 4)
๋ชฉํ: "๋ค์ด์ด๊ทธ๋จ์ ์ฌ๋ฆฌ๋ฉด (๊ฐ์ง) ๋น์ฉ์ด ๊ณ์ฐ๋์ด ์ฐจํธ๊ฐ ๋์จ๋ค."
โข [BE / Day 3] Mock API ๊ฐ๋ฐ
โฆ mockPrices.json ํ์ผ ํ๋์ฝ๋ฉ (์: {"aws_instance": {"aws": 50, "gcp": 40, "azure": 55}, ...})
โฆ /api/analyze-mock ์๋ํฌ์ธํธ ์์ฑ: Phase 1์ **'๊ฐ๋จํ JSON'**์ ์
๋ ฅ๋ฐ์, Mock ๊ฐ๊ฒฉํ์ ๊ณฑ์
ํ์ฌ ์ต์ข
๋น์ฉ JSON ({"aws": 270, "gcp": 220, ...})์ ๋ฐํ
โข [FE / Day 3] UI ๊ฐ๋ฐ (์
๋ก๋ & ์ฐจํธ)
โฆ ์ด๋ฏธ์ง ์
๋ก๋ ์ปดํฌ๋ํธ ๊ฐ๋ฐ
โฆ Chart.js ์์ญ ์์ฑ
โข [ํตํฉ / Day 4] Mock E2E ์ฐ๋
โฆ FE์์ ์ด๋ฏธ์ง ์
๋ก๋ $\rightarrow$ (์ง๊ธ์ AI ๋ถ์์ ์๋ต)
โฆ FE๊ฐ '๊ฐ๋จํ JSON' (Phase 1 ์ฑ๊ณต ์ํ)์ BE๋ก ์ ์ก
โฆ BE๊ฐ Mock ๋น์ฉ์ ๊ณ์ฐํ์ฌ FE๋ก ๋ฐํ
โฆ FE๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ Chart.js ๋ง๋๊ทธ๋ํ๋ฅผ ๊ทธ๋ฆฐ๋ค.
โฆ (Day 4 ์ ๋
๊น์ง '๊ฐ์ง'์ง๋ง ์๋ฒฝํ๊ฒ ์๋ํ๋ ํต์ฌ ๋ฐ๋ชจ ์์ฑ)
Phase 3: '์ง์ง ์์ง' ๊ต์ฒด (Day 5 ~ Day 6)
๋ชฉํ: 'Mock API'๋ฅผ '์ค์ AI + Infracost API'๋ก ๊ต์ฒดํฉ๋๋ค.
โข [BE / Day 5] '์ง์ง' API ๊ฐ๋ฐ (/api/analyze-real)
โฆ Infracost CLI๋ฅผ ๋ฐฑ์๋ ์๋ฒ ํ๊ฒฝ์ ์ค์น
โฆ (FE์์ ์ด๋ฏธ์ง๋ฅผ ๋ฐ์)
โฆ
1. AI Vision API ํธ์ถ (Phase 1์ 'Task 2' ํ๋กฌํํธ ์ฌ์ฉ) $\rightarrow$ Terraform ์ฝ๋ ํ
์คํธ ํ๋
โฆ
1. ์ด ํ
์คํธ๋ฅผ ์๋ฒ์ ์์ .tf ํ์ผ๋ก ์ ์ฅ
โฆ
1. infracost breakdown ... --format json ์
ธ(shell) ๋ช
๋ น์ด ์คํ
โฆ
1. Infracost๊ฐ ์ถ๋ ฅํ '์ค์ ๋น์ฉ JSON' ์บก์ฒ
โฆ
1. (์ ํ) AI LLM API ์ฌํธ์ถ: ๋น์ฉ JSON์ผ๋ก '์ต์ ํ ํ' ์์ฑ
โฆ
1. ์์ ํ์ผ ์ญ์
โฆ
1. ๋ชจ๋ ๊ฒฐ๊ณผ(๋น์ฉ JSON, .tf ์ฝ๋, AI ํ)๋ฅผ FE๋ก ์ ์ก
โข [FE / Day 6] '์ง์ง' UI ์ฐ๋
โฆ FE๊ฐ ํธ์ถํ๋ API๋ฅผ /api/analyze-mock $\rightarrow$ /api/analyze-real๋ก ๋ณ๊ฒฝ
โฆ ๋ฐฑ์๋๊ฐ ๋ณด๋ธ '์ค์ ๋น์ฉ JSON'์ผ๋ก ์ฐจํธ ๋ ๋๋ง
โฆ AI๊ฐ ์์ฑํ .tf ์ฝ๋์ 'AI ํ'์ UI์ ์์๊ฒ ํ์ (UX/UI ์์
)
Phase 4: ์๊ฐํ(Gamification) ๋ฐ ๋ฐ๋ชจ ์ค๋น (Day 7)
๋ชฉํ: ๋ฐ๋ชจ ์์ฑ๋ ํฅ์ ๋ฐ ๋ฒ๊ทธ ์์ โข [FE/UX] ์ํธ ๋์ด ์ ์ํ "๋ฐฐํฌ ์ฌ์ " ์๊ฐํ UI ์ ์ฉ โฆ (์: 1. ์ํคํ ์ฒ ๋ถ์ ์ค... 2. ๋น์ฉ ๊ณ์ฐ ์ค... 3. ์ต์ ํ ์ ์... 4. ์๋ฃ!) โข [๊ณตํต] ์ต์ข ๋ฐ๋ชจ ์๋๋ฆฌ์ค ํ์ ๋ฐ ๋ฆฌํ์ค โข [๊ณตํต] ๋ฒ๊ทธ ์์ ๋ฐ ์์ธ ์ฒ๋ฆฌ (์: AI๊ฐ ๋ถ์ ์คํจ ์ "๋ถ์ํ ์ ์๋ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค." ๋ฉ์์ง) โข [๋ฐฐํฌ] (์ ํ) Amplify(FE) + Beanstalk(BE) ๋ฑ์ ํ์ฉํด ์ค์ ์๋น์ค๋ก ๋ฐฐํฌ