[AWS] 개발자 도구

개발자 도구

AWS CodeCommit

팀의 코드 협업을 수월하게 하는 안전하고 확장성이 뛰어난 관리형 소스 제어 서비스

Git

오픈 소스 배포 버전 제어 시스템

적합한 사용자
Git 기반 소스 제어 시스템과의 차이점
버전 관리되는 S3 버킷 비교

:office: S3

:couple_with_heart_man_man: CodeCommit

AWS CodeCommit 사용

시작
리포지토리 생성
리포지토리 업데이트
기존 리포지토리를 AWS CodeCommit으로 가져오기
지원되는 Git
저장되는 단일 파일 최대 크기: 2GB
리포지토리 백업
리포지토리 복원
코드 검토 관리
CI(지속적 통합) 시스템 :heavy_plus_sign: CodeCommit
Webhook
Git 작업 및 API 호출 기록

보안

IAM으로 CodeCommit 액세스 관리
CodeCommit이 지원하는 통신 프로토콜
CodeCoimmit에 액세스하기 위해 개방해야할 포트
리포지토리 암호화
리포지토리 교차 계정 액세스 활성화

결제

사용료
활성 사용자

AWS CodeBuild

클라우드에서 제공되는 완전관리형의 지속적 통합 서비스

이유
릴리스 프로세스 자동 실행

사용

:globe_with_meridians: 빌드 프로젝트

CodeBuild에서 빌드를 실행하는 방법 정의에 사용

소스 코드를 가져올 위치, 사용할 빌드 환경, 실행할 빌드 명령 및 빌드 출력을 저장할 위치와 같은 정보 포함

구성

소스 리포지토리 위치, 실행 시간 환경, 빌드 명령, 컨테이너가 담당하는 IAM 역할 및 빌드 실행에 필요한 컴퓨팅 클래스 지정

buildspec.yml 파일 빌드 명령 지정

레파지토리
프레임워크
Windows 빌드 런타임
빌드 실행
첫 번째 빌드
이전 빌드 결과
이전 빌드 실패 디버깅
이베트에 대한 알림 또는 경고 수신

AWS CloudFormation

일반

:globe_with_meridians: CloudFormation

개발자와 기업이 손쉽게 관련 AWS 및 타사 리소스의 모음을 쉽게 생성

순서에 따라 예측 가능한 방식으로 프로비저닝할 수 있는 방법 제공

기존 엔터프라이즈 애플리케이션, 레거시, 다양한 AWS 리소스 및 컨테이너 기반 솔루션 사용

:point_right: 구축된 애플리케이션 인프라 요구 지원

Elastic Beanstalk 애플리케이션 환경 지원

애플리케이션 데이터 저장하는 RDS 데이터 베이스와 함께 AWS Elastic Beanstalk에 호스팅되는 애플리케이션을 생성하고 관리

가능한 작업

:globe_with_meridians: Elastic Beanstalk

클라우드에서 손쉽게 애플리케이션을 배포하고 실행하는 환경 제공

개발자 도구와 통합

애플리케이션 수명 주기 한 곳에서 관리

새로운 개념
CloudFormation 스택의 일부인 개별 AWS 리소스 관리
템플릿 요소
리소스 이름 선택
모든 리소스에 이름 지정 :x:
스택 생성 시 소프트웨어 설치
Chef/Puppet
EC2 태그 지정 지원
EC2 인스턴스 또는 Auto Scaling 시작 구성 사용자 데이터 필드 액세스
스택의 리소스 중 하나가 성공적으로 생성되지 않은 경우
스택이 삭제된 경우 데이터 저장
스택 생성 후 업데이트
VPC 스택 생성

AWS CodeDeploy

일반

:globe_with_meridians: CodeDeploy

EC2 인스턴스 및 온프레미스에서 실행 중인 인스턴스를 비롯하여 모든 인스턴스에 대한 코드 배포 자동화 서비스

사용
배포 유형
기존 도구 체인과 연동
Elastic Beanstalk, OpsWorks와 다른 AWS 배포 및 관리 서비스

개념

:globe_with_meridians: ​애플리케이션

인스턴스 그룹에 배포할 소프트웨어와 구성의 모음

:globe_with_meridians: 수정 버전

AppSpec 파일과 함께 배포할 수 있는 콘텐츠(소스코드, 빌드 후 아티팩트, 웹 페이지, 실행 파일, 배포 스크립트)의 특정 버전

:globe_with_meridians: 배포 그룹

EC2 인스턴스, AWS Lambda 함수를 CodeDeploy 배포에 그룹화하기 위한 CodeDeploy 엔터티

EC2 배포의 경우 :point_right: 배포 대상인 애플리케이션과 관련된 인스턴스 집합

:globe_with_meridians: 배포
배포 구성

배포 장애 처리 방법을 비롯하여 배포 그룹을 통해 배포가 진행되는 방식

배포 파라미터 지정
  1. 수정 버전: 배포할 것 지정
  2. 배포 그룹: 배포 위치 지정
  3. 배포 구성: 배포할 방법 지정 (선택)
:globe_with_meridians: AppSpec 파일

복사할 파일과 실행할 스크립트 지정하는 구성 파일

version: 0.0

os: linux

files: 

# You can specify one or more mappings in the files section.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # The lifecycle hooks sections allows you to specify deployment scripts.

ApplicationStop: 

# Step 1: Stop Apache and MySQL if running.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Step 2: Install Apache and MySQL.

# You can specify one or more scripts per deployment lifecycle event.

    - location: deploy_hooks/puppet-apply-apache.sh

    - location: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Step 3: Set permissions.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Step 4: Start the server.

    - location: helper_scripts/start_server.sh

      timeout: 30

      runas: root
배포 수명 주기 이벤트

배포의 일부로 코드를 실행할 수 있음

:speech_balloon: 같이 사용 할 수 있는 시기 관련 예제 & 함께 지원되는 다른 배포 수명 주기 이벤트

AWS CodePipeline

소프트웨어를 릴리스하는 데 필요한 단계를 모델링 시각화 자동화 해주는 지속적 전달 서비스

지속적 전달

프로덕션에 릴리스하기 위한 코드 변경이 자동으로 빌드, 테스트, 준비되는 소프트웨어 개발 방식

개념

image-20201007093635221

:globe_with_meridians: 파이프라인

소프트웨어 변경 사항이 릴리스 프로세스에 적용되는 방법을 설명하는 워크플로우 구성

단계 및 자업 시퀀스로 워크플로우 정의

:globe_with_meridians: 수정 버전

파이프라인에서 정의한 소스 위치에 이루어진 변경 사항

:globe_with_meridians: 스테이지

하나 이상의 작업으로 이루어진 그룹

:globe_with_meridians: 작업

수정 버전에서 수행한 일

:globe_with_meridians: 아티팩트

작업이 파일 또는 파일 세트에 실행될 때 파일

파이프라인 이후 작업에 따라 작동

:globe_with_meridians: 전환

파이프라인의 시트에지는 전환을 거쳐 연결 :point_right: CodePipeline 콘솔에서 화살표로 표시