개발/AWS

AWS Codepipeline-Elasticbeanstalk-free tier 자동 배포(1)

모플로 2022. 2. 22. 23:57
반응형

목차

  1. 설명하기에앞서 CICD를 위해 시도한 것들
  2. project에 필요한 files
  3. Elastic Beanstalk 생성
  4. CodePipeline 생성

1.설명하기에앞서 CICD를 위해 시도한 것들

  1. githubaction
  2. ECR - ECS(EC2) - ALB

Github Action은 사용하기 편했습니다.
marketplace가 존재하여 원하는 flow는 쉽게 찾을 수 있었습니다.
ECR - ECS(EC2)를 활용하여 배포를 했는데 t2-micro(프리티어용) 인스턴스로는 CD를 할 수 없었습니다.
ENI가 최소 3개가 필요한데 t2-micro는 2개만 지원하기 때문에 아무리 soft memory를 줄여도 이를 해결할 수 없었습니다.
fargate를 사용한다면 쉽게 해결할 수 있겠지만 사이드 프로젝트라서 비용부분을 줄이고 싶었습니다.

그래서 요즘 많이 사용한다는 codepipeline을 사용해봤습니다.
AWS의 codepipeline은 github뿐 아니라 다른 repository에서도 코드를 참조할 수 있었습니다.

elasticbeanstalk는 Paas로 생각보다 좋았습니다.
제가 코드에 집중할 수 있는 환경을 만들어주었습니다.

2. project에 필요한 files

1) Procfile
프로젝트 root에 Procfile을 만들어주세요

web: npm run deploy

2) buildspec.yml
프로젝트 root에 buildspec.yml을 만들어주세요

version: 0.2
phases:
  install:
    commands:
      - 'npm ci'
  build:
    commands:
      - 'npm run build'
artifacts:
  files:
    - '**/*'

3) package.json
package.json의 scripts부분에 해당 deploy명령어를 추가해주세요

"scripts": {
...
"deploy": "npm ci && npm run build && npm run start:prod"
}
반응형