만자의 개발일지

[AWS] CI/CD란? 본문

AWS

[AWS] CI/CD란?

박만자 2021. 11. 16. 16:02

CI/CD

 

CI(Continuous Integration)/CD(Continuous Delivery/Continuous Deployment)란, 어플리케이션 개발에 필요한 여러 단계에 대한 자동화를 통해 어플리케이션을 보다 빠르고 짧은 주기로 고객에게 제공하는 방법입니다. CI/CD의 개념은 지속적인 통합(Continuous Integration), 지속적인 서비스 제공(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)를 통해 새로운 코드의 통합, 테스트, 릴리스, 배포 등의 어플리케이션 라이프사이클 전체에 대한 자동화 과정을 모니터링 가능하도록 하는 것을 말합니다.

 

CI(Continuous Integration)

CI는 Continuous Integration의 약자로 지속적인 통합을 의미합니다. 개발자를 위한 자동화 프로세스를 통해 새로운 코드 개발과, 코드의 변경 사항이 정기적으로 빌드 및 테스트되고 공유 레포지토리에 병합되어 여러 명의 개발자가 동시에 어플리케이션 개발과 관련된 코드를 작업할 경우에도 서로 충돌없이 원하는 개발 작업을 수행하고 문제를 해결할 수 있습니다.

 

일반적인 경우 어플리케이션에 대해 수정/변경된 내용을 반영하는 경우 다른 개발자가 동시에 적용하는 변경 사항과 충돌할 가능성이 있습니다. 하지만 CI를 통해 자동화된 프로세스를 구현한다면, 개발자들이 코드 변경 사항을 메인 레포지토리를 통해 업로드를 수행하면 이를 통해 코드를 병합하는 작업을 더욱 수월하게 자주 수행할 수 있습니다. 개발자가 어플리케이션에 적용한 변경 사항이 병합되면 이러한 변경 사항이 다른 개발자가 수정한 내역이나 프로그램에 영향을 주지 않으며, 어플리켕션에 문제가 발생하지 않도록 병합 작업을 수행합니다. 그리고 각기 다른 레벨의 자동화 테스트(보통 단위테스트 및 통합 테스트) 실행을 통해 변경 사항이 어플리케이션에 제대로 적용되었는지를 확인합니다.

 

다시 말해, 클래스와 기능에서부터 전체 어플리케이션을 구성하는 서로 다른 모듈에 이르기까지 모든 것에 대한 테스트를 수행합니다. 자동화된 테스트에서 기존 코드와 신규 코드 간의 충돌이 발견되면 CI를 통해 이러한 버그를 더욱 빠르게 확인할 수 있고, 이렇게 확인된 소스를 수정하여 원활하게 배포할 수 있습니다.

 

CD(Continuous Delivery/Continuous Deployment)

CD는 지속적인 전달(Continuous Delivery) 및 지속적인 배포(Continuous Deployment)의 의미를 가지고 있는데, 두가지 용어를 혼용하여 사용합니다. 개발자가 지속적인 서비스 전달과 배포를 통해 새로운 코드에 대한 배포를 자동화할 수 있으며, 이로써 신속한 어플리케이션을 제공할 수 있도록 도움을 주는 역할을 합니다.

 

CI 를 통한 빌드의 자동화 및 유닛의 통합 테스트 수행 이후 이어지는 CD 프로세스는 유효한 소스코드를 레포지토리에 자동으로 전달합니다. 따라서 효과적인 CD의 프로세스를 실현하기 위해서는 개발 파이프라인 CI가 먼저 구축되어야 합니다. 이러한 지속적 제공의 목표는 운영 환경으로 배포할 준비가 되어 있는 코드베이스를 확보하는 것에 있습니다.

이러한 CD 프로세스를 수행하면 보다 빠르고 손쉽게 어플리케이션을 운영 환경으로 배포할 수 있습니다.

 

지속적 배포인 Continuous Deployment 는 파이프라인의 마지막 단계로, 운영 환경으로 배포 준비가 완료된 빌드를 레포지토리에 자동으로 릴리스하는 Continuous Deployment는 어플리케이션을 운영 환경으로 릴리스하는 작업을 자동화합니다. 운영환경으로 빌드를 배포하기 이전의 파이프라인 단계에는 수작업이 없기 떄문에 지속적인 배포는 자동화된 테스트에 많은 부분 의존하게 됩니다.


AWS는 성공적인 DevOps 수행을 위해 필요한 매우 강력한 소프트웨어와 인프라 환경을 제공합니다. 이를 통해 소프트웨어와 제품을 안정적이고 신속하게 구축할 수 있는 일련의 유연한 서비스를 사용하여 이를 제공합니다.

 

AWS DevOps Tools
Service Solution Description
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 CLI 명령 인터페이스 Command를 기반으로 AWS 리소스 관리
AWS Cloud9 개발 툴 웹 브라우저를 기반으로 Cloud IDE를 활요한 개발 및 실행, 디버그를 위한 개발 툴

 

'AWS' 카테고리의 다른 글

[AWS] S3 파일 전체 복사  (0) 2021.12.20
[AWS] CodeCommit이란  (0) 2021.11.16
[AWS] IAM이란  (0) 2021.11.12
[AWS] AWS 스토리지 서비스  (0) 2021.10.26
[AWS] 엔드포인트(EndPoint)란  (7) 2021.09.18
Comments