문제 상황
기존의 수동 배포 과정은 속도 저하와 반복적인 작업으로 인한 비효율성을 초래했습니다. 이를 개선하기 위해 자동화된 CI/CD 프로세스를 도입하여 배포 과정을 최적화할 필요가 있었습니다.
도입 이유 및 해결 방안
선택지
- Jenkins
- GitHub Actions
배경 당시 EC2 프리 티어 인스턴스(메모리 1GB)를 사용 중이며, Docker와 Jenkins를 동시에 구동하려 했으나 메모리 부족으로 성능이 크게 저하되는 문제가 발생했습니다. Jenkins는 일반적으로 2GB 이상의 메모리를 요구하며 Docker로 실행할 때에도 메모리가 더 필요하여, 현재 인스턴스에서는 Docker와 Jenkins를 동시에 운영하기 어려웠습니다. 결과적으로 CI/CD 작업을 안정적으로 수행하려면 최소 4GB 이상의 메모리가 필요할 것으로 예상되었습니다.
문제 해결 EC2 인스턴스를 업그레이드하거나 Jenkins를 로컬에서 실행하는 방법도 검토했지만, GitHub Actions를 사용하기로 결정했습니다. GitHub Actions는 Jenkins와 달리 추가 서버 설정 없이 EC2 환경에서 CI/CD를 구축할 수 있는 효율적인 대안이었습니다.
Jenkins 대신 GitHub Actions 사용의 이점
GitHub Actions는 Jenkins와 비교해 다음과 같은 장점이 있습니다:
- 간편한 통합: GitHub Actions는 GitHub 리포지토리와 즉시 통합되며, 별도의 설정 없이 CI/CD 파이프라인을 간편하게 구성할 수 있습니다. 반면, Jenkins는 GitHub과의 통합을 위해 웹훅이나 플러그인 설정이 필요합니다.
- 비용 절감: GitHub Actions는 퍼블릭 리포지토리에서는 무료로 제공되며, 기본 요금제에서도 일정량의 워크플로우 사용이 가능해 추가 비용을 절감할 수 있습니다. Jenkins는 서버 운영과 클라우드 리소스에 따른 비용이 발생할 수 있습니다.
- 관리 편의성과 유연한 확장성: GitHub Actions는 서버리스로 제공되어 추가 서버 관리가 필요 없으며, 확장 시에도 별도의 관리 부담이 없습니다. Jenkins는 확장 시 별도 서버 관리가 필요할 수 있습니다.
- YAML 기반 구성: GitHub Actions는 .yml 파일 형식으로 워크플로우를 설정하여 버전 관리와 코드 리뷰에 용이해 협업을 강화할 수 있습니다.
- 병렬 실행 지원: GitHub Actions는 여러 작업을 병렬로 쉽게 실행할 수 있으며, 자체 호스팅 러너로 특정 작업을 분산 처리할 수 있습니다. Jenkins도 병렬 빌드를 지원하지만, 설정이 더 복잡할 수 있습니다.
위와 같은 이유로 EC2 프리 티어 환경에서도 손쉽게 CI/CD 파이프라인을 구현할 수 있는 GitHub Actions를 선택하여 도입했습니다.
'PORTFOLIO > TECHNICAL DECISION-MAKING' 카테고리의 다른 글
[ACE Hand Wash - 기술적 의사 결정]코드 정리 대작전: 권한 확인 로직, 어디까지 분리해봤니? (0) | 2025.01.08 |
---|---|
[CodeChef - 기술적 의사 결정] Redis Sentinel 도입이 필요한 이유 (0) | 2025.01.06 |
[CodeChef - 기술적 의사 결정] Redis 도입이 필요한 이유 (0) | 2025.01.06 |
[CodeChef - 기술적 의사 결정] Docker Hub? AWS ECR? (0) | 2025.01.06 |
[CodeChef - 기술적 의사 결정]이벤트 동시성 제어 (0) | 2025.01.06 |