Please enable JavaScript.
Coggle requires JavaScript to display documents.
CI/CD로 Github Actions를 사용한 이유는 무엇인가요? - Coggle Diagram
CI/CD로 Github Actions를 사용한 이유는 무엇인가요?
CICD(Continuous Integration/Continuous Delivery 또는 Continuous Deployment)
애플리케이션 개발 단계를 자동화하여 짧은 주기로 소프트웨어를 사용자에게 제공하는 방법론
CI (Continuous Integration)
개발자들이 변경한 코드를 주기적으로 메인 브랜치에 통합하는 과정
코드가 통합될 때마다 자동으로 빌드 및 테스트를 수행하여 잠재적인 오류를 빠르게 발견하고 해결
CD (Continuous Delivery/Deployment)
CI를 통해 검증된 코드를 안정적으로 운영 환경에 배포하는 과정
Continuous Delivery는 수동 승인 후 배포
Continuous Deployment는 모든 단계를 자동화하여 코드가 메인 브랜치에 병합되면 자동으로 운영 환경에 배포
Github Action
비용 측면
Github Actions는 클라우드 기반의 서비스로, 자체 서버를 구축하고 유지보수할 필요가 없어 비용 효율적
서버리스(Serverless) 아키텍처
CI/CD 작업을 위한 별도의 서버를 구축하고 관리할 필요가 없습니다.
GitHub에서 제공하는 호스팅된 러너(Runner)를 사용하며, 사용한 만큼만 비용을 지불하는 방식
유지보수 비용 절감
서버 인프라 관리, OS 업데이트, 보안 패치 등 Jenkins와 같은 온프레미스(On-premise) 솔루션에서 발생하는 유지보수 비용과 시간을 절약할 수 있습니다.
무료 사용량 제공
오픈 소스 프로젝트나 개인 프로젝트의 경우 상당한 양의 무료 사용 시간을 제공
이는 소규모 프로젝트나 학습용으로 매우 매력적
개발 생산성
Git 저장소와 밀접하게 통합되어 있어 개발자들이 코드 변경 사항을 푸시하는 것만으로 CI/CD 워크플로우를 쉽게 트리거
쉬운 워크플로우 정의 (YAML)
YAML 기반으로 워크플로우를 정의하며, 직관적이고 가독성이 높아 학습 곡선이 낮습니다.
다양한 예제와 템플릿이 제공되어 빠르게 시작할 수 있습니다.
커뮤니티 기반의 풍부한 액션 마켓플레이스
다양한 개발자들이 공유하는 액션(Action)들을 마켓플레이스에서 찾아 재사용할 수 있습니다.
이는 빌드, 테스트, 배포 등 복잡한 작업을 위한 스크립트 작성 시간을 절약하고, 개발자들이 핵심 비즈니스 로직에 집중할 수 있도록 돕습니다.
Git과의 완벽한 통합
GitHub 저장소 내에서 직접 워크플로우를 관리하고 실행할 수 있어 컨텍스트 스위칭이 적습니다.
Pull Request, Issue 등 GitHub의 다른 기능들과의 연동도 매우 유연합니다.
배포 안정성
Github Actions는 강력한 기능과 통합을 통해 배포 안정성을 향상
병렬 실행 및 매트릭스 빌드
여러 환경에서 동시에 테스트를 실행하거나, 다양한 버전의 의존성 조합으로 빌드 및 테스트를 수행하여 광범위한 검증을 가능하게 합니다.
롤백 및 재시도 메커니즘
실패한 워크플로우를 자동으로 재시도하거나, 문제가 발생했을 때 이전 성공적인 배포 버전으로 롤백하는 기능을 구현
환경 설정 및 비밀 관리
Environments, Secrets 기능을 통해 민감한 정보(API 키, 자격 증명)를 안전하게 관리
특정 환경(예: Production)에 배포할 때 승인 절차를 강제
워크플로우 가시성 및 모니터링
GitHub UI에서 워크플로우의 실행 상태, 로그, 오류 등을 실시간으로 확인할 수 있어 문제 발생 시 빠른 진단 및 해결이 가능
Github Actions는 Git 기반의 프로젝트에 최적화된 CI/CD 솔루션으로, 특히 다음과 같은 경우에 강력한 이점을 제공
GitHub를 이미 사용하고 있는 경우
별도의 도구를 연동할 필요 없이 매끄러운 통합이 가능합니다.
빠른 시작과 쉬운 워크플로우 관리를 선호하는 경우
YAML 기반의 직관적인 워크플로우와 풍부한 마켓플레이스는 생산성을 높여줍니다.
클라우드 기반의 유지보수 없는 솔루션을 원하는 경우
서버 관리 부담 없이 비용 효율적으로 CI/CD를 구축할 수 있습니다.
Jenkins와의 비교
비용 측면
오픈 소스이므로 소프트웨어 자체는 무료
이를 호스팅할 서버 인프라(하드웨어, 클라우드 인스턴스) 비용과 운영 및 유지보수에 드는 인건비가 발생
특히 트래픽이 많거나 복잡한 빌드 환경에서는 이러한 비용이 크게 증가할 수 있습니다.
배포 안정성
안정적인 배포를 위한 다양한 플러그인과 설정을 제공
이러한 기능들을 직접 구성하고 관리해야 합니다.
특히 보안 취약점 관리나 비밀 정보 관리는 사용자의 책임이 크며, 대규모 환경에서는 복잡도가 높아질 수 있습니다.
개발 생산성
높은 유연성과 확장성을 제공
플러그인 관리, 마스터-에이전트 구성, 서버 관리 등 초기 설정 및 유지보수에 많은 시간과 노력이 필요
워크플로우 정의도 Groovy 스크립트 등으로 작성해야 하는 경우가 많아 상대적으로 러닝 커브가 높을 수 있습니다.