Continuous Integration
- 지속적 통합
- 개발자들은 보통 코드를 작성할 때 코드를 GiHub이나 Bitbucket과 같은 리포지토리에 두게 되며
AWS에서는 CodeCommit을 사용 - 개발자들이 코드를 푸시하자마자 체크하고 테스트를 할 테스팅 서버나 빌드 서버가 존재해야 함
이에 쓰이는 유명한 도구에는 Jenkins가 있고, AWS는 CodeBuild를 사용하며 이들은 코드를 받아 빌드하고 테스트하는 도구 - 이 후 개발자들은 테스트에서 피드백을 얻고 테스트 통과 여부를 알 수 있으며 버그를 빠르게 찾아내 고칠 수 있음
- 또한 콛가 테스트되는 대로 빠르게 전달하고 자주 배포할수록 개발자들은 워크플로우에서 막히지 않을 수 있음
Continuous Delivery
- 지속적 전달
- 생성되고 빌드 된 소프트웨어가 안정적으로 릴리스 되도록 확실히 하는 것으로 자동 배포가 가능하도록 함
- 이를 위한 AWS 내 기술은 CodeDeploy, Jenkins CD Spinnaker 등
- 개발자가 코드를 리포지토리에 자주 푸시하면 빌드 서버(예 : CodeBuild)가 이 코드를 빌드, 테스트하고
빌드가 성공할 때마다 배포 서버(예 : CodePloy)를 통해 코드를 배포하면 애플리케이션 서버가 생성됨 - 애플리케이션이 업데이트 됨에 따라 v1이 v2가 되며 이를 지속적 전달이라고 함
Technology Stack for CICD
- 코드 확인, 빌드, 테스트, 배포 및 프로비저닝 단계
- 코드를 저장하기 위해서는 GiHub, AWS CodeCommit 사용
- 코드의 빌드와 테스트를 위해서는 AWS CodeBuild, Jenkins CI 사용
- 배포 및 프로비저닝을 위해서는 Beantalk는 둘 다 가능하므로 인프라를 프로비저닝할 수 있고 자주 배포하기 위한 API도 존재,
또는 CloudFormation 등을 사용해 본인만의 EC2 플릿을 관리하고 EC2 플릿으로 배포하기 위해 AWS CodePloy 사용 - 이 모든 도구들을 차례대로 오케스트레이션 해야 하기 때문에 파이프라인 오케스트레이터 등이 필요하며
이를 AWS CodePipeline이라고 부름
'Cloud > AWS' 카테고리의 다른 글
[SAA] Step Function 및 SWF (0) | 2022.05.06 |
---|---|
[SAA] CloudFormation 소개 (0) | 2022.05.06 |
[SAA] 기타 서비스 (0) | 2022.05.03 |
[SAA] Bastion 호스트 고가용성 (0) | 2022.05.03 |
[SAA] EC2 인스턴스 고가용성 (0) | 2022.05.03 |