- Sopt Official NestJS ๊ณตํ API ์๋ฒ ์ ๋๋ค.
- Package Manager๋
Yarn Package Manager
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Getting Started
- [Project Structure](#Project Structure)
- Deploy_Pipeline
- Node v16
# Local
npm run start:local
# Dev
npm run start:dev
- env์ ๋ช ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ๊ฒฐ๋์ด ์๋ฒ๋ฅผ ์คํํฉ๋๋ค.
env ๊ณผ๊ฐ์ ํ๊ฒฝ ๋ณ์๋ ๋ด๋น์์๊ฒ ๊ณต์ ๋ฐ์ผ์ธ์.
/api-docs
์ํคํ ์ฒ๋ ๋ค์๊ณผ ๊ฐ์ด ํ์ฑ๋์ด์์ต๋๋ค.
- ์ธ์คํด์ค๋ EC2 ๋ด๋ถ์์ ๋์ํฉ๋๋ค.
- EC2 ๋ด๋ถ์ Docker container๊ฐ ์กด์ฌํฉ๋๋ค.
- NestJS ์ ๊ฒฝ์ฐ, 3000:3000์ผ๋ก ํฌ์๋ฉ ๋ฐ / route ์ ๋งคํ๋์ด ์์ต๋๋ค.
- Spring Boot ์ ๊ฒฝ์ฐ, 8080:8080์ผ๋ก ํฌ์๋ฉ ๋ฐ /v2 route ์ ๋งคํ๋์ด ์์ต๋๋ค.
- Docker image๋ AWS Public ECR ์์ ๊ด๋ฆฌํ๊ณ ์๊ณ , ์ธ์์ธ๊ณ ์ AWS ๊ณ์ ์ PublicECR ๊ด๋ จ IAM Role ์ ๋ถ์ฌ๋ฐ์์ผ ํฉ๋๋ค.
Dev, Prod ๋ชจ๋ ๋์ผํ ๊ตฌ์กฐ๋ฅผ ํ์ฑํ๊ณ ์๊ณ , ๋ฆฌ์์ค ์ฐจ์ด๋ฐ์ ์์ต๋๋ค.
- deploy pipeline์ github action์ ์ด์ฉํ์ฌ ๊ตฌ์ฑ๋์ด์์ต๋๋ค.
- github action์
./github/workflows
์์ ํ์ธํ ์ ์์ต๋๋ค. - workflow ํ์ผ์ ์ด 3๊ฐ์ง๊ฐ ์๊ณ , ๊ฐ๊ฐ ๋ค์๊ณผ ๊ฐ์ ์ญํ ์ ํฉ๋๋ค.
ci.deploy.yml
: develop ๋ธ๋์น์ PR์ด ์์ฑ๋ ๋๋ง๋ค ์คํ๋ฉ๋๋ค. ํ ์คํธ๋ฅผ ์ํํฉ๋๋ค.cd.develop.yml
: develop ๋ธ๋์น์ ํธ์(๋๋ ๋จธ์ง)๊ฐ ๋์์๋๋ง๋ค ์ํํฉ๋๋ค. develop ์๋ฒ์ ๋ฐฐํฌ๊ฐ ๋ฉ๋๋ค.cd.prod.yml
: main ๋ธ๋์น์ ํธ์(๋๋ ๋จธ์ง)๊ฐ ๋์์๋๋ง๋ค ์ํํฉ๋๋ค. production ์๋ฒ์ ๋ฐฐํฌ๊ฐ ๋ฉ๋๋ค.
cd.***.yml
workflow๋ ๋ค์๊ณผ ๊ฐ์ ๋์์ ํฉ๋๋ค.- docker image๋ฅผ ๋น๋ํฉ๋๋ค.
- docker image๋ฅผ ECR ์ pushํฉ๋๋ค.
- EC2์ ssh๋ก ์ ์ํ์ฌ ECR ์์ ์ด๋ฏธ์ง๋ฅผ pullํฉ๋๋ค.
- EC2์์ ์คํ์ค์ธ container๋ฅผ ์ข ๋ฃํฉ๋๋ค.
- docker container ๋ฅผ ์คํํฉ๋๋ค.
GitAction ๊ด๋ จ Secret์, GitHub ๊ด๋ฆฌ์์๊ฒ ๋ฌธ์ํ์ฌ Owner๊ถํ์ ํ๋ ํ, Repository secret์์ ์ค์ ํ์๊ธฐ ๋ฐ๋๋๋ค. ์์ธํ ์ค๋ช ์ ๋ณ๋๋ก ๊ณต์ ๋๋ฆฐ ๋ฌธ์์์ ํ์ธ ํ์ค ์ ์์ต๋๋ค.