현재 작성중인 포스트 입니다.
나는 아래의 블로그 글을 참고하여 큰 도움을 받았다.
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에 저장을 하는데, 배포가 완료된 이후 자동적으로 해당 파일들을 제거해주지 않아 불필요한 비용이 청구될 수 있다.
이 이슈는 고도화작업에서 해결해보도록 하자.
'서버 > AWS' 카테고리의 다른 글
AWS EC2 스토리지 용량 추가하기(EBS Volume) (0) | 2022.11.12 |
---|---|
Ubuntu 22에 CodeDeploy 에이전트 설치 문제 해결하기(Ruby 3) (0) | 2022.11.05 |
개꿀 Lightsail과 EC2와의 Private ip로 내부 통신하기(VPC peering) (0) | 2022.11.05 |
Iwinv 에서 AWS Lightsail 과 EC2로 서버이전하기2 (0) | 2022.11.05 |
Iwinv 에서 AWS Lightsail 과 EC2로 서버이전하기1 (0) | 2022.11.05 |
댓글