애매한 오각형의 블로그

AWS CodeDeploy & CodeBuild 내용 정리 본문

DevOps

AWS CodeDeploy & CodeBuild 내용 정리

애매한 오각형 2024. 4. 4. 08:54
반응형

Cloud Infra 세팅

 

vpc 세팅

  • public subnet(DMZ)
    • ALB : user 가 domain(route53 and ACM) 으로 트래픽 전송 시 ALB의 target group 에 속한 private subnet 내 인스턴스로 전송
    • bastion : developer 들이 private subnet 에 있는 콘솔에 접근하기 위함
  • private subnet
    • ALB : internal 또는 내부적인 트래픽을 분산하는 역할을 합니다. <- private subnet 에 있는 서버들 사이에 로드 밸런싱 수행
    • ec2 인스턴스
    • rds, elastic cache, document db 등
  • 해당 vpc 세팅 이유
    • 인터넷 트래픽은 DMZ 에 있는 ALB에게 전송하여 ALB 는 해당 트래픽을 private subnet 내에 있는 instance 에 전송
    • 해당 방법은 내부 네트워크 리소스를 인터넷으로 부터 격리하여 보안을 강화할 수 있다.
    • 또한, 고가용성 및 확장성을 높일 수 있다.
    • 이는 AWS 에서 권장하는 보안 및 아키텍쳐 best practice 중 하나
    • SSM 과 Bastion 호스트(터널링) 을 같이 사용하는 이유
      • ssm role 을 부여하지 못하는 manage service(rds, documentdb 등 ) 접근하기 위한 터널링 세팅

 

AWS CodeBuild & CodeDeploy

CodeDeploy 란?

  • EC2 / on-premises 인스턴스,ECS,serverless lambda function 등 여러 서비스 애플리케이션 배포 자동화 서비스

CodeDeploy 장점

  1. 배포 진행 사항 모니터링
  2. 저렴한 요금 (ec2/lambda 에서 codeDeploy 사용 시 무료, 온프레미스를 사용 시 인스턴스 업데이트당 0.02 USD)
  3. 가동 중지 시간을 최소화(blue/green 배포)
  4. 동시배포 진행 가능 (하나 이상의 EC2 애플리케이션에 배포 가능)

Blue-Green Deployment 배포전략

  • blue : 라이브 환경
  • green: 신규 환경
    새로운 배포는 green 환경에서 수행되며 에러 검출이 되지 않을 경우 traffic 을 blue 에서 green 으로 이전 하므로 downtime이 거의 없다.

무중단 배포를 위해서는 로드밸런서 또는 다른방법을 사용해야 하는데 설정해야 할게 많다

무중단 배포 방식

  • Auto Scaling 활용
    1. 로드밸런서 설정 ( target group 세팅, 고급 상태검사설정( 값을 작게 하여 AllowTraffic 구간 빠르게 진행 설정)
    2. ec2 인스턴스 AMI 생성
    3. ec2 시작 템플릿 생성 (IAM 으로 codeDeploy 권한 생성 후 작업 진행 -> 고급 세부 정보>IAM 인스턴스 프로파일)
      3-1. 사용자 데이터 입력 (jar 실행 명령어)
      3-2. rc.local 파일 수정
       1) sudo vi /etc/rc.d/rc.local
       2) jar 실행 명령어 입력
       3) chomd +x /etc/rc.d/rc.local 입력
    4. AutoScaling 그룹 생성
      1) 시작 템플릿 설정
      2) 로드밸런서 연결 (기존)
      3) 기존 타겟그룹 연결
      4) 인스턴스 2개 고정
    5. CodeDeploy 설정
      5-1 배포 그룹 세팅
      1) 서비스 역할 설정 (CodeDepoly Role)
         - 정책 추가 
         {
             "Version": "2012-10-17",
             "Statement": [
                 {
                     "Action": [
                         "s3:Get*",
                         "s3:List*"
                     ],
                     "Effect": "Allow",
                     "Resource": "*"
                 }
             ]
         }
         - Blue-Green 정책 추가
         {
             "Version": "2012-10-17",
             "Statement": [
                 {
                     "Sid": "VisualEditor0",
                     "Effect": "Allow",
                     "Action": [
                         "iam:PassRole",
                         "ec2:CreateTags",
                         "ec2:RunInstances"
                     ],
                     "Resource": "*"
                 }
             ]
         }
      2) 배포 유형 선택 (블루/그린)
      3) 환경 구성 설정
         - Amazon EC2 Auto Scaling 그룹 자동 복사 (기존에 존재하던 Auto-Scaling Group)
      4) 배포 설정 내 배포 그룹의 원본 인스턴스 종료 설정
      5) 로드밸런서 연결 (로드밸런서의 타겟 그룹)

CodeBuild 란?

  • 소프트웨어 개발에 필요한 소스코드를 컴파일 하는 단계부터 테스트 후 소프트웨어 배포까지의 단계를 지원

CodeBuild 장점

  1. 빌드를 수행할 볼륨에 따라 인프라가 자동으로 확장 및 축소 지원
  2. 자체 빌드 서버가 필요하지 않으며, 빌드 서버를 프로비저닝 하거나, 운영/관리 및 확장을 수행할 필요가 없음
  3. AWS KMS(Key Management Service)을 이용하여 빌드 아티팩트가 암호화되며, AWS IAM 을 통해 권한 관리 가능

CodeBuild 주요 기능

  • 코드에 대한 빌드와 테스트
    • 사전에 구성된 빌드환경에서 작업을 수행(소스코드 위치와 빌드를위한 설정 세팅)
    • AWS CodeBuild는 코드 build 후 아티팩트를 S3 버킷에 저장하거나 아티팩트 저장소에 업로드
    • Java,Node.js, Python, Go, Ruby, Android 및 Docker를 위한 사전 구성된 빌드환 경 제공
    • Docker 이미지 또는 퍼블릭 Docker Hub에 업로드하거나 AWS ECR(EC2 Container Registry)를 관리하기 위해 런타임 도구를 패키징 하여 자신만의 빌드환경 구축
반응형