AWS Developer
AWS_Developer
AWS CodeBuild
- AWS CodeBuild는 소스 코드를 컴파일하는 단계부터 테스트 실행 후 소프트웨어 패키지를 개발하여 배포하는 단계까지 마칠 수 있는 완전관리형의 지속적 통합 서비스
- CodeBuild는 지속적으로 확장되며 여러 빌드를 동시에 처리
- 사전 패키징된 빌드 환경을 사용하면 신속하게 시작할 수 있으며 혹은 자체 빌드 도구를 사용하는 사용자 지정 빌드 환경제작 가능
- AWS CodeBuild는 코드를 실행하고 아티팩트를 Amazon S3 버킷에 저장
- CodeBuild에서는 사용한 컴퓨팅 리소스에 대한 분당 요금이 청구
AWS CodeCommit
- AWS CodeCommit은 안전한 Git 기반 리포지토리를 호스팅하는 완전관리형 소스 제어 서비스
- 뛰어난 확장성의 안전한 에코시스템에서 여러 팀이 협업하여 코드 작업을 수행가능
- CodeCommit을 사용하면 소스 코드에서 바이너리까지 모든 항목을 안전하게 저장할 수 있고 기존 Git 도구와 원활하게 연동
에코시스템
- 자연계의 생태계처럼 관련 기업이 협력하여 공생하는 시스템을 의미
- IT 분야의 여러 기업이 몇몇 리더 기업을 중심으로 경쟁과 협력을 통해 공생하고 함께 발전해 나가는 모습을 지칭
AWS CodeDeploy
- AWS에서 제공하는 배포 자동화 서비스
- EC2 인스턴스들에 코드를 배포하는 과정을 자동으로 진행시켜 줌
- 카피스트라노 ( Capistrano )나 젠킨스 ( Jenkins ) 같은 서드파티 배포 자동화도구 보다 AWS 내 다양한 서비스와 손쉽게 연동이 가능하다.
- CodeDeploy는 무중단 배포 기법들인 IDP/ BGD를 둘다 지원한다.
- CodeDeploy란 단순히 명령어를 적어두고 프로그램이 그 명령을 순차적으로 실행하는 것 뿐이다.
- 단순히 우리가 해주는 일을 대신 해주는 Auto Scaling과 같은 개념
- CodeDeploy로 배포하고자 한다면 EC2 인스턴스에 반드시 설치되어 있어야 하며 *.yml파일에 있는 절차를 따라서 배포를 진행한다.
CodeDeploy 구성요소
vesion: 0.0
os: linux
# 윈도우, 리눅스 등 어떤 OS를 위한 배포 파일인지를 명시한다.
# CodeDeploy Agent는 배포 명령을 받으면 코드 저장소에 있는 프로젝트 전체를 서버의 임시 결로로 내려 받는다.
# 내려받은 프로젝트를 서버 내 어느 경로로 이동시킬지 명시할 수 있다.
files:
- source: /
destination: /var/www
# AppSpec.yml에서는 배포 시 발생하는 다양한 생명주기마다 원하는 스크립트를 실행할 수 있게 후크를 제공해준다.
# 배포 시 사용하는 스크립트들은 훤하는 곳에 둬도 되며, 보통은 프로젝트에 AppSpec.yml 파일을 포함하듯이 함께 포함한다.
# 이 예시에서는 프로젝트 최상단에 scripts라는 디렉터리를 만들어 그 안에 스크립트들을 보관해 둔다.
hooks:
# 코드 저장소에서 프로젝트를 낼받은 뒤 인스턴스 내 배포를 원하느 경로에 파일들을 옮기기 전이며, 예시에서 사용한 스크립트의 이름을 보면 리소스 데이터 번들을 압축 해제하는 것으로 추축할 수 있다.
BeforeInstall:
- location: scripts/UnzipResourceBundle.sh
- location: scripts/UnzipDataBundle.sh
# 파일을 모두 이동한 후 실행되는 스크립트들이다.
# 파일 이름을 봐서 리소스 파일들이 제대로 존재하는 지 테스트하는 것으로 추측할 수 있다.
# 또한 Timeout 옵션을 두어 180초 이내에 스크립트가 완료되지 않으면 배포에 실패한 것으로 간주한다.
AfterInstall:
- location: scripts/RunResourceTests.sh
timeout: 180
# 애플리케이션을 시작할 때 사용하는 스크립트들이다.
# 예시에서는 서버를 재시작하고 최대 240초 동안 기다리는 것을 알 수 있다.
ApplicationStart:
- location: scripts/RestartServer.sh
timeout: 240
# 서비스를 재시작한 후 실제로 서비스가 올바르게 실행됐는 지 확인 할 때 사용한느 스크립트들이다.
# runas 옵션을 주어 기본 사용자인 ec2-user가 아닌 codedeployuser라는 다른 user로 실행하게 했다.
ValidateService:
- location: scripts/ValidateService.sh
timeout: 30
runas: codedeployuser
- 스크립트 파일들에 실행 권항을 추가해서 Git에 올리고 싶다면 다음과 같은 명령어를 이용하면 된다.
git update-index --chmod=+x <스크립트 파일 이름>
CodeDeploy 작동절차
- AppSpec.yml 파일을 추가한 후, 프로젝트를 코드 저장소인 GitHub 혹은 AWS S3에 업로드한다.
- CodeDeploy에 프로젝트의 특정 버전을 배포해 달라 요청한다.
- CodeDeploy는 배포를 진행할 EC2 인스턴스들에 설치되어 있는 CodeDeploy Agent들과 통신하며 Agent들에게 요청받은 버전을 배포해 달라고 요청한다.
- 요청을 받은 CodeDeploy Agent들은 코드 저장소에서 프로젝트 전체를 서버로 내려받는다. 그리고 내려받은 프로젝트에 있는 AppSpec.yml 파일을 읽고 해당 파일에 적힌 절차대로 배포를 진행한다.
- CodeDeploy Agent를 배포를 진행할 후 성공/ 실패 등 결과를 CodeDeploy에게 전달한다.
AWS CodePipeling
- AWS CodePipeline은 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는 데 도움이 되는 완전관리형 지속적 전달 서비스
- 코드 변경이 발생할 때마다 사용자가 정의한 릴리스 모델을 기반으로 릴리스 프로세스의 빌드, 테스트 및 배포 단계를 자동화
- AWS CodePipeline을 GitHub 또는 자체 사용자 지정 플러그인과 같은 타사 서비스와 손쉽게 통합가능
- 사용한 만큼만 비용을 지불합니다. 선결제 금액이나 장기 약정이 존재하지 않음
AWS X-Ray
- AWS X-Ray는 개발자가 마이크로 서비스 아키텍처를 사용해 구축된 애플리케이션과 같은 프로덕션 분산 애플리케이션을 분석하고 디버그하는 데 도움을 주는 서비스
- X-Ray를 사용해 자신이 개발한 애플리케이션과 기본 서비스가 성능 문제와 오류의 근본 원인 식별과 문제 해결을 올바로 수행하는지 파악가능
- X-Ray는 요청이 애플리케이션을 통과함에 따라 요청에 대한 엔드 투 엔드 뷰를 제공하고 애플리케이션의 기본 구성 요소를 맵으로 제시
- 3-티어 애플리케이션에서부터 수천 개의 서비스로 구성된 복잡한 마이크로 서비스 애플리케이션에 이르기까지 개발 중인 애플리케이션과 프로덕션에 적용된 애플리케이션 모두 분석가능
마지막 수정일자