본문 바로가기
서버/AWS

[NestJS]AWS CodePipeline CodeBuild CodeDeploy 를 활용하여 CI/CD 구축하기(작성중)

by for2gles 2022. 11. 6.
반응형

 

현재 작성중인 포스트 입니다.

나는 아래의 블로그 글을 참고하여 큰 도움을 받았다.

AWS CodePipeLine, CodeBuild, CodeDeploy를 통해 EC2에 배포하기, AWS CI/CD 구축하기 - 1

AWS CodePipeLine, CodeBuild, CodeDeploy를 통해 EC2에 배포하기, AWS CI/CD 구축하기 - 2

위 블로그 글을 참고하였고, 제 환경에 맞게 코드를 일부 변경하여 재 작성된 포스트입니다.

 

내가 Iwinv에서 AWS로 서버를 이전한 이유중 하나가 간편한 CI/CD 구축이었다.

지금까지 CI/CD를 직접 구축해본적은 없지만(현재 재직중인 회사에서는 DevOps분이 구현을 해두었다.), 사이드 프로젝트에서 자동화 배포를 구현하여 불필요한 작업을 줄일 수 있을 것 같아 도전 해 보게 되었다.

 

결론부터 얘기하자면 AWS는 정말 스톡홀롬 신드롬이다.

처음에 배울때는 어려운 것 같지만, 구현을 해내고 나면 빅팬이 되고만다..

 


AWS CI/CD 기본 원리

내가 이애한 CodePipeline의 구조는 아래 이미지와 같다.

이론은 너무 단순했고, 구현도 이론처럼 굉장히 쉬웠다.

다만 어려울 수 있는것은 AWS가 친절하지는 않다는점이다.

아는사람들에게만 보이는 미지의 세계와 같은 것 이랄까..

 

순서는 위 이미지처럼 CodePipeline을 통해

1. Github 소스 변경을 감지

2. 설정에 따른 Build를 진행 후 s3에 저장

3. Build된 데이터를 s3로부터 목표한 EC2인스턴스에 다운로드받아 설정에 따라 실행

 

이렇게 진행되는것 으로 보인다.

그럼 CI/CD를 한번 직접 구현해 보도록 하자.

 

순서

1. CodeDeploy Agent 설치하기

2. Pipeline 생성

3. Source - Github 설정

4. Build 설정

5. Deploy 설정

6. 고도화 작업

  - package.lock.json 파일이 변경되지 않으면, npm ci 스킵하기

  - 배포 완료된 Build 파일 자동으로 삭제하기

  - 훅을 활용하여 디렉토리 및 파일의 소유자, 권한 설정하기

  - Build에 Cache 활용하기

 

 

1. Pipeline 생성

 

2. Source - Github 설정

 

3. Build 설정

이때 주의해야할 점은 Build 후 해당 데이터를 s3에 저장을 하는데, 배포가 완료된 이후 자동적으로 해당 파일들을 제거해주지 않아 불필요한 비용이 청구될 수 있다.

이 이슈는 고도화작업에서 해결해보도록 하자.

 

반응형

댓글