CI/CD에 대해서 설명해주세요.
CI/CD는 "Continuous Integration"와 ".. Delivery" 또는 ".. Deployment"의 약어입니다. 지속적인 통합, 지속적인 서비스 제공, 지소적인 배포의 의미를 가지고 있습니다. 이는 소프트웨어 개발 프로세스를 자동화에 가장 큰 목적이 있습니다.
CI/CD로 자동화 프로세스를 구축하는 것을 CI/CD 파이프라인이 구축되었다라고 말합니다.
이 파이프라인을 통해 개발자들은 CI로 코드 변경 사항을 지속적으로 통합하고 테스트하여 안정성을 확보할 수 있습니다. CD를 통해서는 변경된 코드를 자동으로 프로덕션 환경으로 전달, 자동 배포 할 수 있게 됩니다. 이를 통해서 개발자 팀이 효율적으로 작업하고 사용자들에게 소프트웨어를 신속하게 제공할 수 있도록 도와주는 핵심 요소 중 하나입니다.
추가질문 :
현재 프로젝트는 어떻게 구성되어있나요?
CI:
•
GitHub Actions를 사용하여, 팀원들이 개발 작업한 코드 변경 브랜치가 main 브랜치에 병합하기 위한 PR이 작성되면, 변경된 코드는 빌드 및 테스트를 거쳐 안정성을 확인하는 CI 파이프라인을 통과합니다. 여기서 테스트에 성공해야 main 브랜치로 merge 할 수 있습니다.
CD:
•
main 브랜치로 빌드 및 테스트를 통과하고 안정적으로 병합되면, 코드는 AWS S3에 업로드됩니다.
•
AWS CodeDeploy를 사용하여 EC2 인스턴스에 코드를 배포하고, 이를 자동으로 EC2 인스턴스에서 재실행하는 CD 파이프라인이 실행되어 업데이트된 프로덕션 버전이 배포됩니다.
→ 사용자는 신규 기능이나 업데이트된 웹 서비스를 빠르게 이용할 수 있습니다.
추가질문 :
CI/CD는 주로 어떤 단계(과정)을 거치나요?
1.
통합 (Integration): 새로운 코드 변경 사항이 레포지토리에 통합되고, 이를 자동으로 감지해 빌드를 시작합니다.
2.
빌드 (Build): 소스 코드를 실행 가능한 소프트웨어로 변환하는 단계입니다. 이 때 컴파일, 의존성 관리, 패키징 등이 진행됩니다.
3.
테스트 (Test): 빌드된 소프트웨어에 대해 자동화된 테스트를 실행해 코드 변경이 안정적이며 기능적으로 정상 동작하는지 확인합니다.
4.
배포 (Deploy): 테스트를 통과한 코드를 실제 환경으로 배포해. 이때 프로덕션, 스테이징 등 여러 환경으로 배포합니다..
5.
모니터링 및 로깅 (Monitoring & Logging): 배포된 애플리케이션을 모니터링하고 로그를 수집하여 문제를 신속하게 탐지하고 해결할 수 있게 도와줍니다.