ํผ๋๋ก ๋์๊ฐ๊ธฐ
Dev.toInfrastructure
์๋ฌธ ์ฝ๊ธฐ
Terraform๊ณผ OIDC ๊ธฐ๋ฐ์ Serverless ์ธํ๋ผ ํ๋ํ ๋ฐ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
๐ฆ Modernizing Wild Rydes with modern technologies
AI ์์ฝ
Context
AWS Console ๊ธฐ๋ฐ์ ์๋ ์ค์ ๊ณผ Amplify ์์กด์ ์ธ ๋ ๊ฑฐ์ Serverless ์ํคํ ์ฒ์ ํ๊ณ์ ๋ถ์. ํ๋์ฝ๋ฉ๋ ์๊ฒฉ ์ฆ๋ช ๊ณผ ๋ฎ์ ์ธํ๋ผ ์ ์ด๊ถ์ผ๋ก ์ธํ ๋ฐ๋ณต ๊ฐ๋ฅ์ฑ ๋ฐ ๋ณด์ ์ทจ์ฝ์ ์๋ณ.
Technical Solution
- S3 ๋ฐ CloudFront ์กฐํฉ์ ์ ์ ์น ํธ์คํ ์ ํ์ ํตํ ์ธํ๋ผ ์ ์ด๊ถ ํ๋ณด ๋ฐ ๋ฐฐํฌ ์ต์ ํ
- Terraform ๋์ ์ ํตํ Infrastructure as Code(IaC) ๊ตฌํ์ผ๋ก ๋ฆฌ์์ค ๋ณ๊ฒฝ ์ด๋ ฅ ์ถ์ ๋ฐ ์ฌํ ๊ฐ๋ฅ์ฑ ํ๋ณด
- S3 Backend ์ค์ ์ ํตํ Terraform State ํ์ผ์ ์๊ฒฉ ์ ์ฅ ๋ฐ Versioning๊ณผ Encryption ๊ธฐ๋ฐ์ ์ํ ๊ด๋ฆฌ ๋ณด์ ๊ฐํ
- GitHub Actions์ OpenID Connect(OIDC) ์ฐ๋์ ํตํ ๋จ๊ธฐ ํ ํฐ ๊ธฐ๋ฐ ์ธ์ฆ ์ฒด๊ณ ๊ตฌ์ถ ๋ฐ AWS Access Key ์ ๊ฑฐ
- Vite ๋น๋ ๋๊ตฌ ๋์ ๊ณผ .env ํ์ผ ๊ด๋ฆฌ๋ฅผ ํตํ Frontend ํ๊ฒฝ ๋ณ์ ๋ถ๋ฆฌ ๋ฐ ๋ณด์์ฑ ํฅ์
- ์ต์ Map Library ๋ง์ด๊ทธ๋ ์ด์ ์ ํตํ Frontend ๋ ๋๋ง ์ฑ๋ฅ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ ๊ฐ์
์ค์ฒ ํฌ์ธํธ
- ์ธํ๋ผ ๋ณ๊ฒฝ ์ด๋ ฅ ๊ด๋ฆฌ๋ฅผ ์ํ IaC ๋๊ตฌ(Terraform ๋ฑ) ๋์ ์ฌ๋ถ ๊ฒํ - CI/CD ํ์ดํ๋ผ์ธ ๋ด ์ ์ ์๊ฒฉ ์ฆ๋ช ์ ๊ฑฐ๋ฅผ ์ํ OIDC ์ธ์ฆ ๋ฐฉ์ ์ ์ฉ ๊ณ ๋ ค - Terraform State ํ์ผ์ ์์ ํ ๊ณต์ ์ ๊ด๋ฆฌ๋ฅผ ์ํ Remote Backend ๊ตฌ์ฑ ํ์ธ - Frontend ๋น๋ ์ต์ ํ ๋ฐ ํ๊ฒฝ ๋ณ์ ๊ด๋ฆฌ๋ฅผ ์ํ ์ต์ ๋ฒ๋ค๋ฌ(Vite ๋ฑ) ํ์ฉ ๊ฒํ