CI CD는 코드 작성 -> 빌드 -> 테스트 -> 릴리즈 -> 배포과정을 자동화 하는 과정이라고 했습니다. 당연히 100%자동화는 불가능 할 수도 있지만, 이를 최대한 쉽게 해보자는 취지입니다. 코드부터 빌드까지가 CI ( Continuous Integration )이고, 테스트 -> 배포과정을 CD (Continuous Deploy, Delivery)과정이라고 합니다.
이를 위해서 AWS Codebuild, CodeDeploy, Codepipleline을 활용하겠습니다.
CI/CD in AWS
일단 맨처음에 개발자가 Git에 Master로 커밋을 한겁니다. 그럼 순간에 커밋이 되었다는 액션에 트리거가 되어서, Code Build라는 대로 들어가게 됩니다. CodeBuild는 Build -> Test작업을 자동화 해주는 과정인데, 빌드 뿐만 아니라 테스팅도 가능하게 해줍니다. 테스트라는 것은 저희가 테스트 시나리오에 맞게, 데이터 Consistency를 유지를 했는지에 대한 테스트 코드를 미리 짜놓고 이를 실행시키는 방식으로 진행됩니다. 이를 위해서는 저희는 buildspec.yml이라는 파일을 작성하게 되는데, 여기에는 빌드하기 전에 어떠한 명령어를 쳐주어야 하는지, 그리고 빌드하면서는 어떤 걸 수행해야 하는지, 그리고 빌드 후에는...을 다 써줍니다.
빌드를 다 시키고, 테스트까지 이상없이 진행되었다고 가정한다면, CodeDeploy로 갑니다. 이는 이름 그대로 코드를 배포해주는 것인데, 우리는 AWS BeanStalk에 배포할겁니다. 이는 일반적으로 서비스 배포를 할 때, EC2, Fargate에 다가 했는데, 번거로움이 많았습니다. 하지만 BeanStalk을 사용하면 이를 매우 쉽게 클릭으로 관리해줍니다.
그리고 CodeCommit을 통해 개발자가 수정한 코드가 S3에 업로드되게 됩니다. 그리고 CodePipelion이라는 서비스 자체가 Codebuild와 CodeDeploy를 한번에 수행하게 해줄 수 있는 서비스라고 보시면 됩니다. 포함되어 있다고 생각하시면 됩니다.
그리고 수많은 로그들을 S3에다가 저장을 할겁니다.
다음시간에는 CodeCommit을 사용하지는 않을겁니다. 그리고 python 테스팅 코드를 작성하고 buildspec.yml을 작성한 후 여러가지 시나리오를 테스팅 할 수 있는 방법을 CodeBuild에서 알아보도록 하겠습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) Elastic Beanstalk를 활용한 배포 (0) | 2022.07.12 |
---|---|
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) 코드 테스트 파이프라인 구축 (0) | 2022.07.12 |
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) 마이크로 아키텍처 개발 시 문제점들 (0) | 2022.07.12 |
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - (인프라) 마이크로서비스 아키텍쳐 개발 시 고려해야 하는 사항들 (0) | 2022.07.12 |
[ DevOps ] - AWS 기반 대규모 아키텍트 설계 - 데이터복제 이벤트 처리 Internal HTTP (0) | 2022.07.12 |