Programming

[AWS, Certified Developer Associate] CodeCommit, CodePipeline, CodeBuild, CodeDeploy

AWS CodeCommit

  • GitHub, GitLab, Bitbucket 등의 버전관리 툴과 달리 코드가 AWS 클라우드의 개인 VPC 내에 있음
    • 비공개 Git Repo
    • 사이즈 제한 없음 (코드를 GB 크기까지 확장가능)
    • 완전관리형, 고가용성
    • 코드는 AWS 클라우드 내에만 저장 -> 일관된 형식 / 높은 보안
    • 보안 강화 (암호화, IAM을 통한 액세스 제어)
    • 젠킨스, CodeBuild 등의 CI 툴과 통합 가능
  • 보안
    • 인증 (Authentication) : SSH Key / HTTPS
    • 인가 (Authorization) : IAM 정책
    • 암호화
      • AWS KMS를 통해 암호화
      • 코드 커밋 시 HTTPS or SSH를 통해서 암호화된 상태로만 전송됨
    • 교차 계정 접근 : IAM 역할 생성 & AWS STS (AssumeRole API) 통해 코드커밋 repo 액세스

 

 

AWS CodePipeline

  • AWS 안에서 CI/CD를 오케스트레이션 할 수 있는 시각적 워크플로 툴
  • 소스 - CodeCommit, ECR, S3, Bitbucket, GitHub
  • 빌드 - CodeBuild, Jenkins, CloudBees, TeamCity
  • 테스트 - CodeBuild, AWS Device Farm, 3rd party tools
  • 배포 - CodeDeploy, Elastic Beanstalk, CloudFormation, ECS, S3
  • 호출 - Lambda, Step Functions
  • 수동 승인 기능 제공
  • 각 단계마다 artifacts가 S3 버킷에 저장되고 다음 스테이지로 이동

 

 

 

AWS CodeBuild

  • CodeCommit 등의 소스코드 내에 설정 파일이 존재 (buildspec.yml, 코드의 루트에 존재해야함)
  • 출력 로그는 S3 & CloudWatch Logs에 적재될 수 있음
  • CloudWatch Metrics를 통해 빌드 통계를 모니터링 가능
  • EventBridge로 빌드 실패 / 트리거 알림 감지 가능
  • CloudWatch Alarm을 통해 다량의 실패에 대한 threshold 확인 가능
  • Build Projects는 CodePipeline이나 CodeBuild에서 정의될 수 있음
  • or 이미 존재하는 Build Projects 호출 가능
  • 빌드 시 S3에 진행상황을 캐싱하여 재시도 지원 (최적화)

 

 

 

AWS CodeDeploy

  • 애플리케이션 배포를 자동화해주는 배포 서비스
  • EC2 Instance, 온프레미스 서버, 람다 함수, ECS 서비스에 배포
  • CloudWatch Alarm 트리거 등의 이벤트에 대한 롤백도 가능
  • 배포 조절 가능 (한번에, 하나씩, 절반씩, 블루/그린)
    • AllAtOnce : 한번에 업데이트 (다운타임 높음)
    • HalfAtTime : 절반씩 업데이트
    • OneAtATime : 하나씩 업데이트 (가장 느림, 가용성 좋음)
    • 커스텀하게 % 정의 가능
  • 배포 방식을 통제하는 appspec.yml 파일
  • EC2 인스턴스 / 온프레미스 서버 플랫폼
    • in-place 배포 (현재 위치에 down / 배포)
    • blue/green 배포 (새로운 ASG 생성해 배포)
    • 타겟 인스턴스에 CodeDeploy Agent가 실행되어야 함
  • 람다 플랫폼
    • 람다 별칭에 대해 점진적으로 트래픽 신규 버전으로 이동 가능
      • Linear : 100% 도달까지 N분마다 트래픽 이동
      • Canary : X% 트래픽 이후 100% 트래픽 이동
      • AllAtOnce
  • ECS 플랫폼
    • 자동으로 새로운 ECS 태스크 정의
    • 블루/그린 배포에만 사용 가능
      • Linear : 100% 도달까지 N분마다 트래픽 이동
      • Canary : X% 트래픽 이후 100% 트래픽 이동
      • AllAtOnce

 

 


Reference

Udemy - AWS Certified Developer Associate 시험 합격을 위한 모든 것!