[AWS] AWS에서의 CI/CD 서비스

·2023년 5월 17일
1

AWS

목록 보기
11/11
post-thumbnail
post-custom-banner

1. CI(Continuous Integration)/ CD (Continuous Delivery)

  • 지속적인 통합 CI(Continuous Integration)
    - 모든 개발자가 개발한 코드를 공유 리포지토리에 하루에도 여러 번 코드를 커밋하고 병합하는 것
  • 지속적인 전달 CD (Continuous Delivery)
    - 개발팀이 짧은 주기로 소프트웨어를 개발하고 언제든지 운영 환경으로 안정적으로 배포하는 것


2. AWS에서의 CI/CD flow


3. AWS에서의 CI/CD를 위한 서비스

1. Code Commit

1) Code Commit이란?

  • 소스에 대한 형상 관리를 해 주는 서비스로 AWS에서의 깃허브와 같은 역할이라고 생각하면 된다.
  • 클라우드에서 자산을 비공개로 저장하여 관리하는 데 사용한다.
  • 기본적으로는 깃허브와 동일하게 push, pull, commit 등의 기능이 있고, git과 동일한 명령어를 사용한다.

2) Code Commit 특징

  • Code Commit높은 서비스 가용성과 내구성을 제공해서 하드웨어와 소프트웨어를 자체적으로 관리하는 부담을 줄여 준다.
  • 클라우드 내에서 서버가 자체적으로 운영되고 있다. -> git과의 차이
  • 코드를 안전하게 저장할 수 있다.
  • 코드에서 공동 작업이 가능하다.
  • 이메일을 통해서 자동 알림을 하고, 버전 관리 프로그램을 쉽게 확장할 수 있다.
  • AWS가 아니더라도 다른 서비스와 호환이 가능하다.
  • git 기반의 리포지토리여서 Code Commit으로 마이그레이션이 가능하다.
  • git의 도구를 모두 사용할 수 있다.

3) Code Commit 사용법

  • Code Commit으로 가 리포지토리를 선택해 주면 리포지토리 생성이라는 버튼이 뜬다.
  • 해당 버튼을 누르고 리포지토리의 정보를 입력해 준 후 생성하면 된다.
  • git의 리포지토리와 기능은 동일하지만 Private하다.

2. Code Build

1) Code Build이란?

  • 클라우드 상의 완전 관리형 빌드 서비스
  • 소스 코드를 컴파일하고 단위 테스트를 실행한다. 또한 배포 준비가 완료된 아티팩트를 생성한다.
  • 자체 빌드 서버를 프로비저닝하거나 관리 및 확장할 필요가 없다. 또한 널리 사용되는 프로그래밍 언어 및 빌드 도구에 맞게 사전 패키지된 빌드 환경을 제공한다.
  • 최대 빌드 요청 수에 맞게 자동으로 확장된다.

2) Code Build 작동 방식

  • Code Pipeline- Code Build - CloudWatch Logs 자동화가 된다.
  • 해당 목적지의 빌드 서버로 코드를 배포해 주는 역할을 Code Build가 하게 된다.

3) 빌드 프로젝트 생성

① 새 프로젝트 생성 및 프로젝트 이름 입력, 소스 선택

  • 다음과 같이 Code Build로 접속해 빌드 -> 프로젝트 빌드로 들어가 빌드 프로젝트 생성을 눌러 준다.
  • 상단에 먼저 프로젝트의 이름을 입력해 준다.
  • 소스에서는 소스의 공급자를 선택할 수 있는데 소스 공급자의 종류는 다음과 같다.
  • 이때 GitHub를 선택해 주면 Git 계정과 연동해 주어야 한다.
  • 다음과 같이 Git 계정과 연동해 주어야 Git 리포지토리를 가지고 올 수 있기 때문이다.

② 환경 설정

  • 다음과 같이 환경 이미지를 선택해 준다.
  • 운영 체제를 선택해 주면 그 운영 체제에 따른 런타임이미지, 이미지 버전이 뜨게 된다.

③ 서비스 설정

  • 서비스를 설정해 준다. 만약 기존 서비스가 있다면 기존 서비스 역할을 선택해 주고, 새로운 서비스 역할을 생성해 연결해 주고 싶다면 새 서비스 역할을 선택해 주면 된다.

④ Buildsped 추가

  • Build Script 추가가 필요하다.
  • 소스 파일에 BuildSpec이라는 파일을 넣어 Build Script를 만드는 경우 buildspec 파일 사용을 선택하면 된다.
  • 만약 직접 Build Script 입력을 할 시 빌드 명령 삽입을 선택해 준다.
  • 이때 편집기로 전환을 누르면 다음과 같이 빌드 명령 예시가 뜨게 된다.
  • 해당 위치에 Build Script를 넣어 주는데 만약 gradlew을 하게 되면 gradle 명령어를 해당 영역에 입력하면 된다.

⑤ 아티팩트(Artifact) 추가

  • 생성 후 추가해도 무관하다.
  • 빌드가 진행된 이후에 배포(Deployment)에서 알아야 될 파라미터라고 생각하면 된다.
  • AWS Artifact자신에게 해당되는 규정 준수와 관련된 정보를 제공하는 신뢰할 수 있는 중앙 리소스이다.

⑥ 프로젝트 생성

  • 이를 통해 프로젝트를 생성한다. 브런치 설정은 추후에 추가도 가능하나 빌드 프로젝트 생성 과정에서도 가능하다.

3. Code Deploy

  • EC2 인스턴스, 온프레미스 인스턴스, 서버리스 lambda 함수 또는 ECS로 애플리케이션 배포를 자동화하는 AWS에서 제공하는 배포 서비스이다.
  • 다양한 애플리케이션 콘텐츠(예: 코드, 서버리스 AWS Lambda 함수, 웹 및 구성 파일, 패키지, 스크립트, 멀티미디어 파일)를 무제한 배포가 가능하다.

4. Code Pipeline

1) Code Pipeline이란?

  • 1, 2, 3번에서 본 서비스들은 따로 동작하지 않는다. 다음 그림과 같이 CodeCommit, CodeBuild, CodeDeploy가 모두 배포를 위한 하나의 파이프라인이 되며 이것을 AWS Code Pipeline이라고 부른다.
  • 소프트웨어 릴리스 프로세스를 모델링하고 서버를 설정하거나 프로비저닝할 필요성을 줄일 수 있다.
  • AWS Management Console 또는 AWS command line interface(CLI)를 사용하여 소프트웨어 릴리스 프로세스 단계를 정의할 수 있다.
  • 피드백을 반복하고 각 코드 변경을 테스트해 버그를 포착하는 새로운 기능을 신속하게 릴리스할 수 있다.
  • 모든 단계에서 자체 플러그 또는 사전 구축된 플러그인을 사용하여 필요에 맞추어 조정할 수 있다.
  • 하나의 프로그램을 위해서는 총 두 개에서 세 개의 파이프라인이 필요하다. 개발을 위한 개발, 테스트를 위한 스테이징, 그리고 최종적으로 실제 사용자가 사용하는 프로덕션 파이프라인이 필요하다. (스테이징은 생략되기도 한다.)

2) Code Pipeline 생성

  • Code Pipeline 생성 단계는 다음과 같다.
  • 먼저 파이프라인의 이름 및 서비스, 역할을 설정하는 파이프라인 설정 단계를 거친다.
  • 이후 Code Commit에서 해 주었던 소스 스테이지를 설정해 준다.
  • Code Build 단계에서 해 주었던 빌드 스테이지를 설정해 준다.
  • 최종적으로 Code Deploy와 같이 배포 스테이지를 설정해 준다.
  • 이 모든 과정을 검토한 후 하나의 파이프라인을 생성할 수 있다.
profile
송의 개발 LOG
post-custom-banner

0개의 댓글