-
ECS๋ฅผ ์ด์ฉํ CI/CD ํ๊ฒฝ ๊ตฌ์ถ
- ECS๋ฅผ ์ฌ์ฉํด ์ปจํ ์ด๋ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฝ๊ฒ ๋ฐฐํฌํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- CI/CD ํ๊ฒฝ์ ํตํด ์๋ํ๋ ๋ฐฐํฌ ํ๋ก์ธ์ค ๊ตฌ์ถํฉ๋๋ค.
AWS ECS ์๋น์ค์ CI/CD
Docker ์ด๋ฏธ์ง ๋น๋ ๋ฐ ECR์ PUSH ์๋ํ ๊ตฌํ
-
fastify ํ๋ ์ ์ํฌ๋ฅผ ์ด์ฉํ WAS ์๋ฒ๋ฅผ ์์ฑํฉ๋๋ค.
-
WAS ๋ฐ MongoDB๋ฅผ Dockerfile ์์ฑํฉ๋๋ค.
-
Github Action์ ์ฌ์ฉํ๊ธฐ ์ํ AWS ECR ์ด๋ฏธ์ง ๋น๋ Workflow yaml ํ์ผ์ ์์ฑํฉ๋๋ค.
- push๋ฅผ ํตํด ECR์ ์๋ก์ด ํ๊ทธ๋ก ๋์ปค ์ด๋ฏธ์ง๊ฐ ์ค๋น
- AWS ํคํ์ด๋ฅผ ์์ฑ ํ Github ๋ ํฌ์งํ ๋ฆฌ Setting ํด๋ฆฝ Secrets and variables ํญ๋ชฉ์ ์ ์ฅ
- Configure AWS credentials์ ํค ํ์ด ๊ฐ์ ํ๊ฒฝ๋ณ์๋ก ์ค์
-
Private ECR ๋ ํฌ์งํ ๋ฆฌ ์์ฑ
- Docker ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ์ํด AWS CLI๋ฅผ ์ฌ์ฉํ์ฌ ํฐ๋ฏธ๋์ ์ธ์ฆ ํ ํฐ ์ธ์ฆํฉ๋๋ค.
- ํ๊ทธ๋ฅผ ์ง์ ํ์ฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ PUSHํฉ๋๋ค.
ECS ํด๋ฌ์คํฐ ์์ฑ ๋ฐ ์๋น์ค ๋ฐฐํฌ ์๋ํ ๊ตฌํ
- ECR์ ์ ์ฅ๋ ์๋ฒ ์ด๋ฏธ์ง๋ฅผ ECS๋ก ๋ฐฐํฌ
- Task Definition ์ค์ ํฉ๋๋ค.
- ECR์ ์ฌ๋ฆฐ ์ด๋ฏธ์ง์ URL์ ์ปจํ ์ด๋์ ๋ฑ๋ก
- ์ฌ์ฉํ ํฌํธ ์ค์
- MongoDB ์ด๋ฏธ์ง ๋ฐฐํฌ ์ AWS Secrets Manager๋ฅผ ์ด์ฉํ ํค ๊ฐ ํ์ด ์ค์ ํฉ๋๋ค. ECS์์ AWS Secrets Manager๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ ์ฑ ์ ์ถ๊ฐํจ.
- Task Definition ์ค์ ํฉ๋๋ค.
- ECS ํด๋ฌ์คํฐ ์์ฑ ๋ฐ WAS์ MongoDB ์๋น์ค ์์ฑํฉ๋๋ค.
- ํด๋ฌ์คํฐ ์์ฑ ์ ๋ณด์๊ทธ๋ฃน, ์๋ธ๋ท, ๋ก๋๋ฐธ๋ฐ์, ๋ฆฌ์ค๋, ํ๊ฒ ๊ทธ๋ฃน ์ค์
- ๋ฐฐํฌ ์๋ํ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํด ์ด๋ฏธ์ง ์
๋ฐ์ดํธ ๋ฐ ๋ฐฐํฌ ์๋ํ ๊ตฌํํฉ๋๋ค.
- Json ํ์์ Task Definition์ Git repository์ ์ถ๊ฐํจ
- ๊ธฐ์กด์ ECR yaml ํ์ผ์ ์ค๋ณต๋๋ฏ๋ก ์ญ์ ํจ.
- ์์ ์ ์ ํ์ผ์ ๋ฏผ๊ฐ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํจ.
์ ์ ์น ํธ์คํ ๋ฐฐํฌ ์๋ํ ๊ตฌํ
- aws Codebuild๋ฅผ ์ด์ฉํ ๋น๋ ์์
์ํ.
- buildspecํ์ผ์ ์์ฑํ๊ณ , GitHub ๋ฆฌํฌ์งํ ๋ฆฌ, ๋ฐฐํฌ ๊ณต๊ธ์, ๋น๋ ๊ณต๊ธ์ ์ค์ ํจ.
- CodeDeploy๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , AWS CodeBuild์ S3๋ง์ผ๋ก๋ ์ ์ ์น ํธ์คํ ์ ๊ตฌํํจ.
HTTPS ์ค์
- Route53, Cloudfront, ELB, ๋ฆฌ์ค๋, ํ๊ฒ ๊ทธ๋ฃน ๋ฑ์ ์ค์ ํ์ฌ HTTPS ํ๊ฒฝ์ ์ค์ ํฉ๋๋ค.
- fastiy ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํ ์ปจํ
์ด๋ ๋ฐฐํฌ ๋ฐฉ๋ฒ์ ์๊ฒ๋์ต๋๋ค.
- fastify ์๋ฒ๋ฅผ ์์ํ๋ฉด ๋ก์ปฌํธ์คํธ ์ฃผ์๋ก ๋์ํ๋ฏ๋ก AWS์ ์ปจํ ์ด๋๋ฅผ ๋์๋ ์ ์ํ ์ ์์.
- ๋ฐ๋ผ์, package.json์์ -a ์ต์ ์ผ๋ก 0.0.0.0 ์ฃผ์๋ก ์์ํ ์ ์๋๋ก ํด์ผํจ.
- GitHub Action์ ์ด์ฉํ ECS ์๋ํ ๋์ ์๋ฆฌ๋ฅผ ์๊ณ workflow ํ์ผ์ ์์ฑํ ์ ์์์ต๋๋ค.
- Task Definition์ Jsonํ์ผ์ ์ด์ฉํ ECS CI/CD๋ฅผ ์ ์ ์์์ต๋๋ค.
- ECR, ECS Workflowํ์ผ์ ๋ํด ๊ณต๋ถํ ์ ์์์.
- AWS Secrets Manager๋ฅผ ์ด์ฉํ ๋ฐ์ดํฐ๋ฒ ์ด์ค Task Definition์ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ ์ ์์์ต๋๋ค.
- AWS Secrets Manager๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ECS์ญํ ์ Secrets Manager ReadWrite์ ์ฑ ์ ์ถ๊ฐํด์ค์ผ ์ฌ์ฉํ ์ ์์.
- ์ ์ ์น ํธ์คํ
์ CI/CD๋ฅผ ๊ณต๋ถํ๋ฉฐ ํ๋กํผ์๋ ์๋ฒ์ ์ฌ์ฉํ ์ ์์์ต๋๋ค.
- codebuild ํ ๊ฒฐ๊ณผ๋ฌผ์ S3์ ์ ๋ก๋ํ๋ ์์ ์ ์ํํ๊ณ AWS CodeDeploy์ ๊ฐ์ ๋ฐฐํฌ ์๋ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ง ์์๋, S3์ ์ ์ ์น ์ฌ์ดํธ ํธ์คํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ์น์ ๋ฐ๋ก ๋ฐฐํฌํ ์ ์์.
ECS ๋ฐฐํฌ์ GitHub Action์์๋ ์ ์์ ์ผ๋ก ๋ฐฐํฌ๋์๋ค๋ ์๋ฆผ์ด ์๊ธฐ์ง๋ง ์คํ ์๊ฐ์ด 26๋ถ์ด์์ต๋๋ค.
๋ฐฐํฌ ๋ ์ด๋ฏธ์ง๋ ์๋ก์ด ์ด๋ฏธ์ง๊ฐ ์๋ ๊ธฐ์กด์ ์ด๋ฏธ์ง๊ฐ ๋ฐฐํฌ๋ ์ํ์์ต๋๋ค.
- ๋ฌธ์ ๊ฐ ๋ ์ ์๋ ๋ถ๋ถ์ ๋์ถํ์ต๋๋ค.
- ๊นํ๋ธ ์ก์
- ํด๋ฌ์คํฐ ์๋น์ค ์ค์
- task definition
- ๋จผ์ ๋ฐฐํฌ๊ฐ ์ ์์ ์ผ๋ก ๋๊ธฐ ๋๋ฌธ์ GitHub Action Workflow์์๋ ๋ฌธ์ ๊ฐ ์๋ค ํ๋จํ์ต๋๋ค.
- ํด๋ฌ์คํฐ ์๋น์ค์ Task Definition๋ฅผ ์ฌ์ค์ ํ์ง๋ง ๋๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ณ ์์์ต๋๋ค.
- ์ฒ์๋ถํฐ ํธ๋ํฝ ํ๋ฆ์ ์์ฐจ์ ์ผ๋ก ์๊ฐํ๋ฉฐ ๋ฌธ์ ๋ฅผ ์ฐพ์๊ณ , ECS์์ ECR๋ก ์๋ก์ด ์ด๋ฏธ์ง๋ฅผ ์ฐพ์ ์ ์์ด ์๊ธด ๋ฌธ์ ๋ก worlkfolwํ์ผ์ด ์๋ชป๋์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
- ์ฆ workflow ํ์ผ์ ์ค์ ์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ํ์ธํ์ต๋๋ค.
- ๋ฐฐํฌ๊ฐ ์ ์ญ์ ์ผ๋ก ๋๋ค๊ณ ๊ทธ ๋ถ๋ถ์ ๋ฐฐ์ฌํ๊ณ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ์ฐพ์๊ฒ ํธ๋ฌ๋ธ ์ํ ์ ์ค์ํ ๋ฌธ์ ์์.
- ๋จ๋ฉด์ ์ธ ์คํ ์ํ๋ฅผ ๋ณด๊ณ ํ๋จํ๋๊ฒ ์๋ ์์ฐจ์ ์ผ๋ก ํ๋ฆ์ ๋ฐ๋ผ ๋ฌธ์ ๋ฅผ ์ฐพ๊ณ ํด๊ฒฐํด์ผ ๋๋๊ฒ์ ์๊ฒ๋จ.
Workflowํ์ผ์ ECR_Registr๋ก ์ ํ ์์ด์ผ ํ์ง๋ง ์ ํ์ผ์๋ Registry๋ง ์ ํ ์์์ต๋๋ค. Workflow ๋ด์ฉ์ ๊ณต๋ถํ๋ฉด์ ์ง์ ์์ฑํ๋๊ฒ์ด ์๋ฌ๋ฅผ ๋ง๋ค์๋ ์์ธ์ด์๊ณ ECR_Registry๋ก ์์ ํ 3๋ถ ์ด๋ด๋ก ์๋ก์ด ์ด๋ฏธ์ง๊ฐ ๋ฐฐํฌ๋์์ต๋๋ค.
-
๋ธ๋ก๊น
-
๋ ํผ๋ฐ์ค