지속적인 통합(CI)과 지속적인 배포(CD) 란?
개발 환경에서 지속적인 통합(CI)과 지속적인 배포(CD)는 코드의 품질을 유지하면서 빠르고 안정적인 배포를 가능하게 하는 핵심 요소들입니다.
지속적인 통합 (CI)
•
*지속적인 통합 (Continuous Integration, CI)**은 개발 팀이 자주 코드 변경사항을 중앙 리포지토리에 통합하는 프로세스를 말한다. 이러한 접근 방식의 주요 이점은 다음과 같습니다.
•
버그 감소: 자주 코드를 통합함으로써 발생할 수 있는 문제를 조기에 발견하고 해결할 수 있다.
•
비용 절감: 버그를 조기에 발견함으로써, 문제 해결에 드는 비용을 줄일 수 있습니다.
•
시간 절약: 개발자들은 시스템이나 애플리케이션의 더 나은 구조에 집중할 수 있으며, 코드 통합에 드는 시간을 절약할 수 있습니다.
지속적인 배포 (CD)
•
*지속적인 배포 (Continuous Delivery, CD)**는 CI 프로세스를 확장하여, 새로운 변경사항을 사용자에게 빠르고 안정적으로 제공하는 방법을 포함한다. 지속적인 배포의 핵심 요소들은 아래와 같습니다.
•
자동화된 테스트: 코드가 통합된 후 자동화된 테스트 스위트를 실행하여 버그 및 회귀를 식별합니다.
•
자동화된 배포: 변경사항이 성공적으로 테스트된 후, 변경사항은 자동으로 스테이징 또는 프로덕션 환경에 배포됩니다.
GitHub Action을 선택한 이유
GitHub 리포지토리와의 긴밀한 통합으로 이벤트 기반 워크플로를 쉽게 설정할 수 있습니다.
코드 소스와 CI/CD 파이프라인이 동일한 장소에서 관리되므로 개발자는 별도의 CI 도구로 전환할 필요 없이 편리하게 작업할 수 있습니다
Jenkins를 선택하지 않은 이유
Jenkins는 별도의 서버를 준비하고 유지보수해야 하는 비용과 노력이 필요하며, AWS CI/CD에 특화된 도구들과의 통합을 위해 추가적인 플러그인이나 설정이 요구됩니다.
Jenkins가 강력한 커스터마이징을 제공하지만, GitHub Actions는 AWS와의 통합 및 관리 측면에서 더 간편하고 효율적인 솔루션을 제공합니다.
AWS를 선택한 이유
AWS S3
AWS의 클라우드 인프라에 완벽하게 통합되어 있으며, 높은 가용성과 내구성을 제공합니다. 대용량 데이터를 안정적으로 저장하고 관리할 수 있는 기능이 장점입니다.
다른 클라우드 스토리지 솔루션과 비교할 때 AWS 생태계 밖에서는 통합이 복잡하거나 비용이 더 발생할 수 있지만 현재 저희 프로젝트는 AWS 생태계 내에서 구성되기에 해당 단점은 상쇄 됩니다.
AWS CodeDeploy
AWS 서비스와의 원활한 통합으로, EC2, AWS EC2 등 다양한 AWS 컴퓨팅 서비스에 대해 배포를 자동화합니다.
또한 세부적인 배포 설정과 롤백 옵션을 제공하여 안정적인 배포를 돕습니다.
AWS 외부의 환경에서는 다른 도구에 비해 통합이 어렵거나 기능이 제한적일 수 있습니다만 현재 저희 프로젝트는 AWS 생태계 내에서 진행되기에 문제 없습니다.
AWS EC2
EC2는 AWS 클라우드 서비스와의 긴밀한 통합을 바탕으로 다양한 옵션과 유연성을 제공합니다.
이는 서버 환경을 세밀하게 통제하고, 확장성 있는 인프라를 구축하는 데 있어서 이점을 제공합니다.