-
클라우드 환경에서 CI/CD 기술 선택 기준Study 2022. 11. 23. 17:13
CI/CD 뭔가 자동문 같지 않나요?
AWS 환경에서 자동 배포를 처음 구축할 때 어떤 기술을 사용해야 할 지 많은 고민이 생깁니다.
작은 규모의 사이드 프로젝트를 진행하면서 해결한 방식으로 이야기를 풀어보고자 합니다.📌Jenkins vs Github Actions
✔ 작은 프로젝트에서 고려할 부분 위주로 작성되었으니 참고 부탁드립니다.
Jenkins
Github Actions
서버 설치 필요 클라우드에서 동작 작업이 동기적으로 일어나므로, 제품을 시장까지 배포하는 데에 더 많은 시간이 소요 비동기 CI/CD 가능 계정과 트리거에 기반하고 있으며 GitHub 이벤트를 처리불가 모든 GitHub 이벤트에 대해 GitHub Actions를 제공 환경 호환성을 위해 Docker 이미지에서 동작 필요 모든 환경에 호환 캐싱 메커니즘을 지원하는 플러그인을 제공 캐싱 메커니즘을 수동 작성 공유 기능 X ( 자료는 많음 ) GitHub 마켓플레이스를 통해 공유 무료 Public Repository 프로젝트 무료 - Jenkins
1. 비용에 문제가 발생하지 않습니다.
2. Jenkins 서버 설치, 설정, 호스팅 모두 직접 관리해야합니다.
3. CI/CD 파이프라인 통제가 필요합니다.
4. Github 이벤트(ex. PR) 처리가 불가능합니다. - Github Actions
1. 비용에 문제가 발생하지 않습니다. (Public Repository)
2. 클라우드에서 동작하므로 서버 설치가 필요하지 않습니다.
3. 설정이 간편합니다. ( YML 파일로 작성 )
4. GitHub의 완전 관리 서비스이기에 편리합니다.
( 인프라를 확장+운영하는데 있어 많은 지식이 필요하지 않습니다. )
5. Github 이벤트(ex. PR) 처리가 가능합니다.
즉 데드라인이 있는 작은 규모의 프로젝트에선 Github Actions이 유리하다고 생각합니다.
( 물론 정답은 없습니다. 이 포스트는 백엔드 개발자가 작은 사이드 프로젝트를 진행할 때의 시선으로 작성중입니다. )
📌CodeDeploy vs Elastic Beanstalk
- 표를 보기 전 간단하게 알고 가야 할 부분은 CodeDeploy는 "서비스에서의 배포" 범주의 도구로 분류될 수 있는 반면 Beanstalk은 "코드 협업 및 버전 제어" 로 분류된다는 것 입니다.
CodeDeploy
Elastic Beanstalk
무료 (On-premise 제외) 무료 코드 배포의 자동화 코드 배포의 자동화
( FTP 배포 )GitHub에서 통합 GitHub에서 통합 가동 중지 최대화
( EC2 인스턴스에서 롤링 업데이트를 수행 )가동 중지 최대화
( EC2 인스턴스에서 롤링 업데이트를 수행 )중앙 집중식 제어
( AWS Management Console이나 AWS CLI를 통해
배포 상태를 시작/추적 가능)애플리케이션 상태 모니터링 제공 로드 밸런싱 제공 용량 프로비저닝 제공 오토스케일링 트리거 작성 간편함 각종 협업 서비스 제공 ✔ 표를 간단하게 사진으로 보면 이렇습니다.
- CodeDeploy는 배포의 자동화에 최적화된 도구입니다. 단순히 자동 배포만 필요하거나
혹은 각종 서비스를 결합해야 한다면 CodeDeploy 사용을 고려할 수 있습니다. - Elastic Beanstalk은 다양한 인프라 서비스와 협업에 필요한 도구가 존재합니다.
규모가 크지 않은 프로젝트에서 인프라에 대한 코스트를 낮추고 싶다면 Beanstalk의 사용을 추천드립니다.
'Study' 카테고리의 다른 글
Security Filter Chain (0) 2023.03.16 GitHub Action :: Gradle Build 캐싱 (0) 2022.11.24 Elastic Beanstalk 정리 (0) 2022.11.22 Redis :: 테스트 환경 구축 (0) 2022.11.22 Redis :: 통계 데이터 배치처리 (0) 2022.11.22 - Jenkins