Wisdom’s Cloud
[AWS] 30. 클라우드 용어 정리(12) 본문
CI/CD란?
- Continuous Integration/Continuous Delivery의 약자로, 애플리케이션 개발에 필요한 여러 단계에 대한 자동화를 통해 애플리케이션을 보다 빠르고 짧은 주기로 고객에게 제공하는 방법을 말한다.
- 즉, 지속적인 통합, 지속적인 서비스 제공 및 지속적인 배포를 통해 새로운 코드의 통합, 테스트, 릴리스, 배포 등의 애플리케이션 라이프사이클 전체에 대한 자동화 과정을 모니터링 가능하도록 하는 것을 말한다.
- CI/CI의 도구들
구분 | 내용 |
소스 코드 관리 도구 | Git, Bitbucket, Subversion |
빌드 자동화 도구 | Maven, Ant, Gradle |
테스트 자동화 도구 | Selenium, JUnit, Cucumber |
CI 도구 | Jenkins, Bamboo, Hudson |
구성 관리 도구 | Puppet, Chef, Ansible |
모니터링 도구 | Nagios, Ganglia, Sensu |
CI(Continuous Integration)
- CI는 지속적인 통합을 의미한다. 개발자를 위한 자동화 프로세스를 통해 새로운 코드 개발과 코드의 변경 사항이 정기적으로 빌드 및 테스트되고, 공유 리포지토리에 병합되어 여러 명의 개발자가 동시에 애플리케이션 개발과 관련된 코드를 작업할 경우에도 서로 충돌없이 원하는 개발 작업을 수행하고 문제를 해결할 수 있다.
- CI의 구성 요소
구분 | 내용 |
리포지토리 관리 | - 소스 코드 및 마스터 리포지토리 관리를 위한 버전 관리 솔루션 필요 - 다양한 파일의 버전 관리를 통해 소스 코드의 개발 내역 관리 - 체크아웃 기능을 통해 빌드 가능한 코드 확인 가능 - 현재 사용 중인 소스의 버전 관리 및 모든 변경 사항을 리포지토리에 저장 - 빌드 서버를 추가로 배치하여 원하는 시점에 코드 변경의 모니터링 수행 |
빌드 자동화 | - 한 번의 빌드 실행으로 전체 시스템에 대한 빌드 작업 수행 - 팀은 빌드 스크립트 또는 표준화된 빌드 도구를 활용하여 빌드 수행 - 빌드 자동화에는 소스 코드 통합, 코드 컴파일, 유닛 및 통합 테스트, 프로덕션과 같은 환경 배포 포함 - 버전 제어 시스템에서도 이전 빌드의 백업본 유지 - 빌드 중 오류 발생 시 이전 버전으로 복구 수행 및 소스 코드 비교를 통해 원인 분석 작업 수행 |
셀프 테스트 (Self-Test) |
- 오류/버그의 신속하고 효과적인 빌드를 위해 테스트 자동화 포함 필요 - 자동화된 테스트 시스템을 통해 실패한 테스트 정보 확인 및 대응 수행 - 자체 테스트 실패 시 전체 테스트도 실패로 처리 |
반영(Commit)을 통한 빌드 |
- 소스 반영의 정기적인 수행 시 개발자 간 이슈의 최소화 가능 - 1일 1회 이상의 소스 변경 반영 권장 - 테스트 상황과 애플리케이션의 상태 확인 가능 - 팀은 빈번한 반영을 통해 더 많은 테스트된 빌드 취득 - 메인 저장소의 소스 상태 확인 및 유지 체크 가능 |
- CI의 기대 효과
구분 | 내용 |
개발자 생산성 향상 | - 개발자의 수동 작업에 대한 부담 감소 - 고객에게 제공되는 오류 및 버그 수를 줄이는 데 도움이 되는 도구 활용 가능 - 팀의 생산성 향상 기대 |
버그를 더 빠르게 발견하고 해결 |
- 테스트를 보다 빈번하게 수행할 수 있음 - 버그가 더 큰 문제로 발전하기 전 조기 해결 가능 |
업데이트를 빠르게 제공 | - 팀이 좀 더 빠르고 빈번하게 고객에게 업데이트 제공 가능 |
CD(Continuous Delivery/Continouse Deployment)
- CD는 지속적인 전달 및 지속적인 배포의 의미를 가지고 있는데, 두 가지 용어를 혼용하여 사용한다. 개발자가 지속적인 서비스 전달과 배포를 통해 최소한의 노력으로 새로운 코드에 대한 배포를 자동화할 수 있으며, 이로써 신속한 애플리케이션 제공의 속도 저하를 유발하는 수동 프로세스로 인한 운영팀의 프로세스에 대한 과부하 문제를 해결할 수 있도록 도움을 주는 역할을 한다.
- CD의 프로세스
구분 | 구성 요소 | 내용 |
Continuous Delivery |
빌드 자동화 | - 운영 환경 배포에 필요한 빌드는 자동화 도구 활용 |
지속적인 통합 | - 개발자가 공유 리포지토리에 코드 체크인 - 빌드 자동화 도구가 체크인을 확인하고, 오류, 버그, 발급자 정보를 확인하며, 팀에게 진행 결과에 대한 Report 수행 - 반복적이며, 지속적인 S/W의 Delivery 수행 |
|
테스트 자동화 | - 새로운 버전의 응용 프로그램 품질과 기능에 대해 점검 - 파이프라인을 통한 보안, 성능, 컴플라이언스 검증 - 다양한 자동화된 활동 수행 |
|
배포 자동화 | - 고객에게 새로운 기능을 수분 이내에 신뢰성 있게 제공 | |
Continuous Deployment |
리포지토리 체크인 | - 개발 작업 완료 후 리포지토리에 체크인 수행 |
통합 테스트 | - CI 서버에서 변경 사항을 선택하여 소스 통합 - Unit 테스트 결과를 통해 스테이징 환경에 반영 후 QA 테스트 수행 |
|
운영 환경 배포 | - QA 테스트 통과 시 빌드가 운영 환경으로 전달 - CI 서버에서 운영 환경에 빌드 병합 여부 최종 확정 및 배포 |
- CD의 기대 효과
구분 | 구성 요소 | 내용 |
Continuous Delivery |
배포 위험 최소화 | - 변경 사항을 작은 조각으로 배포함으로써 배포 위험의 최소화 - 문제 발생 시 빠르고 손쉽게 복원 가능 |
프로세스 모니터링 | - 진행 절차나 프로세스 모니터링 가능 - 운영 환경과 동일 환경에서 전체 프로세스 사전 점검 가능 |
|
사용자 피드백 | - 작게 구성하여 빠르게 사용자 피드백 확보 - 실사용자로부터 애플리케이션의 유용성에 대한 빠른 피드백 |
|
Continuous Deployment |
생산정 및 품질 향상 | - 제품에 대한 집중도가 높아지며, 업무 효율 및 생산성 향상 - 테스트에 집중하고, 반복 작업 자동화를 통한 품질 향상 |
업무 프로세스 개선 | - 통합 파이프라인을 통해 팀과 프로세스 간 통합 - 개발, 테스트 및 운영 환경 전반에서 워크플로우 생성 - 기존 툴과의 연동을 통해 간단하게 작업 수행 가능 |
DevOps를 위한 AWS의 도구들
AWS 서비스명 | 솔루션 | 내용 |
AWS CodeCommit | 버전 관리 | 소스 코드를 개인 Git 저장소에 안전하게 저장 |
AWS CodeBuild | CI/CD | 연속적인 스케일링으로 코드 빌드 및 테스트에 적용 |
AWS CodeDeploy | CI/CD | 소스 코드의 자동 배포 |
AWS CodePipeline | CI/CD | 지속적인 통합/지속적인 전달(CI/CD) 서비스 |
AWS CodeStar | CI/CD | 템플릿 기반의 신속한 애플리케이션 개발, 구축 및 배포 |
AWs X-Ray | 모니터링 | 애플리케이션의 디버그 및 분석, 모니터링 수행 |
AWS Command Line Interface | 명령 인터페이스 | Command를 기반으로 AWS 리소스 관리 |
AWS Cloud9 | 개발 툴 | 웹 브라우저를 기반으로 Cloud IDE를 활용한 개발 및 실행, 디버그를 위한 개발 툴 |
'AWS > Beginner' 카테고리의 다른 글
[AWS] 32. AWS CodeCommit (0) | 2022.03.29 |
---|---|
[AWS] 31. AWS Cloud9 (0) | 2022.03.27 |
[AWS] 29. Amazon CloudWatch (0) | 2022.03.24 |
[AWS] 28. AWS Lambda (0) | 2022.03.22 |
[AWS] 27. AWS OpsWorks (0) | 2022.03.21 |