[AWS] Part7. CI/CD

MINJI·2024년 10월 29일

☁️ AWS 클라우드

목록 보기
7/14
post-thumbnail

⭐ CI/CD

1. CI (Continuous Integration)

지속적 통합
모든 개발자가 개발한 코드를 공유 리포지토리에 하루에도 여러번 코드를 커밋하고 병합하는 것

2. CD (Continuous Delivery)

지속적 전달
개발팀이 짧은 주기로 소프트웨어를 개발하고 언제든지 운영환경으로 안정적으로 배포하는 것


⭐ CodeCommit

1. CodeCommit이란?

클라우드에서 자산을 비공개로 저장하여 관리하는데 사용할 수 있도록 AWS에서 호스팅되는 버전 관리 서비스

  • Git의 원리랑 비슷함

2. CodeCommit 특징

  • 완전 관리형 서비스 (데이터 손실 없이 안전하게 코드 저장이 가능)
  • 리포지토리 수와 파일크기에 제한이 없음
  • AWS IAM과 연동하여 세분화된 권한 관리가 가능(읽기/쓰기 권한 등)
  • Git과 완전히 호환
  • CloudWatch와 통합되어 리포지토리 활동을 모니터링할 수 있음
  • Amazon SNS와 연동하여 푸시 알림을 설정할 수 있음

3. CodeCommit 실습

1) CodeCommit 대시보드의 리포지토리 클릭 -> 리포지토리 생성 버튼 클릭

2) 리포지토리 이름 설정 후 생성 버튼 클릭

3) HTTPS(GRC) 탭에서 리포지토리 복제 URL을 복사하여 사용가능


⭐ CodeBuild

1. CodeBuild란?

클라우드상의 완전 관리형 빌드 서비스

2. CodeBuild 특징

  • 소스 코드를 컴파일하고 단위 테스트를 실행하며 배포 준비가 완료된 아티팩트 생성
  • 자체 빌드 서버를 프로비저닝, 관리 및 확장할 필요 없음
  • Apache Maven, Gradle 등과 같은 널리 사용되는 프로그래밍 언어 및 빌드 도구에 맞게 사전 패키지된 빌드 환경 제공
    빌드 환경을 사용자 지정하여 사용자 고유의 빌드 도구를 사용
    최대 빌드 요청 수에 맞게 자동으로 확장

3. CodeBuild 작동방식

4. CodeBuild 실습

1) CodeBuild 대시보드에서 프로젝트 생성 버튼 클릭

2) 프로젝트 이름, 소스 공급자, 리포지토리 설정

  • 먼저 소스 공급자를 선택하고 해당 소스에 저장된 리포지토리들의 리스트가 자동으로 뜨기 때문에 그 후에 리포지토리에서 선택하면 됨
  • 소스 공급자를 Git으로 선택하면, 내 Git에 저장된 repo들을 고를 수 있음
  • 지금은 CodeCommit을 활용하고자 함

3) 서비스 역할 선택(없으면 새로 만들기)

4) Buildspec에 명령 삽입 -> 빌드 프로젝트 생성 버튼 클릭

5) 빌드 프로젝트 생성 완료!

6) 브랜치 생성하는 법 -> 빌드 프로젝트 생성시 브랜치를 설정할 수 있는 상태가 되었음

  • CodeCommit에서 리포지토리를 선택하고 파일 생성 or 기존파일이 있다면 파일 업로드를 클릭하여 repo에 파일을 추가해준다

  • 코드를 입력해주고 파일 이름, 작성자 이름, 이메일 주소, 커밋 메시지를 채워주고 변경 사항 커밋 클릭

  • 리포지토리에 파일이 커밋된 것을 확인한다.

  • 해당 리포지토리의 브랜치에 들어가서 브랜치 생성 버튼 클릭

    • CodeCommit은 첫 커밋이 있어야 브랜치를 생성할 수 있습니다.
    • 첫 커밋으로 main이라는 브랜치가 생성되어 있습니다.


  • 브랜치 이름과 main 브랜치를 설정하고 브랜치 생성 버튼 클릭

  • main 브랜치 외에 새로 생성한 브랜치 확인!


⭐ CodeDeploy

1. CodeDeploy란?

Amazon EC2 인스턴스, 온프레미스 인스턴스, 서버리스 Lambda 함수 or Amazon ECS 서비스로 애플리케이션 배포를 자동화하는 배포 서비스

2. CodeDeploy 실습

우선 CodeDeploy 배포 그룹 생성시 서비스 역할에 ARN이 표시되지 않는다면, IAM 역할을 올바르게 생성하는 과정을 먼저 수행하면 됩니다.

IAM 역할 생성

1) IAM 대시보드에서 역할 생성 버튼 클릭 후 AWS 서비스 선택

  • CodeDeploy 선택

2) 정책 연결

  • AWSCodeDeployRole
  • AmazonEC2RoleforAWSCodeDeploy (EC2 인스턴스에 배포할 경우)

3) 역할 이름 입력 후 역할 생성 버튼 클릭


CodeDeploy 배포 그룹 생성시 로드 밸런서나 타겟 그룹을 반드시 지정해야하므로 미리 설정하고 하는 것을 추천

로드 밸런서 생성 (ELB)

1) EC2 대시보드에서 로드 밸런서 생성 버튼 클릭

2) 로드 밸런서 유형 선택

  • ALB or NLB (나는 대충 ALB로 선택했음)

3) 로드 밸런서 이름 설정

4) VPC 설정 및 가용영역(최소 2개 이상이 안정적임)

5) 설정한 내용 한번 더 확인하고 로드 밸런서 생성 버튼 클릭하면 완료

타겟 그룹 생성시 EC2 인스턴스가 있어야함!!(이것도 미리 세팅,, 아니면 타겟 그룹 생성하다가 '대상 그룹 생성' 누르고 만들어도 되고)

타겟 그룹(대상 그룹) 생성

1) EC2 대시보드에서 대상 그룹 생성 버튼 클릭 -> 대상 유형 선택, 대상 그룹 이름 설정 -> 대상 그룹 생성 버튼 클릭

2) 생성된 대상 그룹에서 대상 등록 버튼 클릭

CodeDeploy 애플리케이션 생성 및 배포 그룹 생성

1) CodeDeploy 대시보드에서 애플리케이션 생성 버튼 클릭

2) 애플리케이션 이름, 컴퓨팅 플랫폼 설정 후 애플리케이션 생성 버튼 클릭

3) 애플리케이션 생성 완료! -> 배포 그룹 생성 버튼 클릭

4) 배포 그룹 이름, 서비스 역할, 환경 구성 등 설정

  • 환경 구성 시 Amazon EC2 인스턴스 선택, 키와 값 설정


⭐ CodePipeline

1. CodePipeline이란?

빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는데 도움이 되는 완전 관리형의 지속적 전달 서비스

2. CodePipeline 특징

  • 소프트웨어 릴리스 프로세스를 모델링하고, 서버를 설정하거나 프로비저닝할 필요성을 줄일 수 있음
  • AWS Management Console or CLI를 사용하여 소프트웨어 릴리스 프로세스 단계를 정의할 수 있음
  • 피드백을 반복하고 각 코드 변경을 테스트하여 버그를 포착하는 새로운 기능을 신속하게 릴리스할 수 있음
  • 릴리스 프로세스의 모든 단계에서 자체 플러그 or 사전 구축된 플러그인을 사용하여 필요에 맞추어 조정할 수 있음

3. CodePipeline 실습

1) CodePipeline 대시보드에서 파이프라인 생성 버튼 클릭

2) 생성옵션 선택

3) 파이프라인 설정 선택(파이프라인 이름, 서비스 역할 등)

4) 소스 스테이지 추가(소스 공급자, 리포지토리 이름, 브랜치 이름 등)

5) 빌드 스테이지 추가(빌드 공급자, 프로젝트 이름, 환경변수 등)

6) 배포 스테이지 추가(배포 공급자, 애플리케이션 이름, 환경 이름 등)

7) CodePipeline 생성 완료!

0개의 댓글