Wisdom’s Cloud

[AWS] 30. 클라우드 용어 정리(12) 본문

AWS/Beginner

[AWS] 30. 클라우드 용어 정리(12)

지혜로운지혜쓰 2022. 3. 27. 01:03

[출처 : https://de.parasoft.com/blog/implementing-qa-in-a-ci-cd-pipeline/]

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