AWS Developer

AWS_Developer


AWS CodeBuild


AWS

  • AWS CodeBuild는 소스 코드를 컴파일하는 단계부터 테스트 실행 후 소프트웨어 패키지를 개발하여 배포하는 단계까지 마칠 수 있는 완전관리형의 지속적 통합 서비스
  • CodeBuild는 지속적으로 확장되며 여러 빌드를 동시에 처리
  • 사전 패키징된 빌드 환경을 사용하면 신속하게 시작할 수 있으며 혹은 자체 빌드 도구를 사용하는 사용자 지정 빌드 환경제작 가능
  • AWS CodeBuild는 코드를 실행하고 아티팩트를 Amazon S3 버킷에 저장
  • CodeBuild에서는 사용한 컴퓨팅 리소스에 대한 분당 요금이 청구

 

AWS CodeCommit


AWS

  • AWS CodeCommit은 안전한 Git 기반 리포지토리를 호스팅하는 완전관리형 소스 제어 서비스
  • 뛰어난 확장성의 안전한 에코시스템에서 여러 팀이 협업하여 코드 작업을 수행가능
  • CodeCommit을 사용하면 소스 코드에서 바이너리까지 모든 항목을 안전하게 저장할 수 있고 기존 Git 도구와 원활하게 연동

    에코시스템

  • 자연계의 생태계처럼 관련 기업이 협력하여 공생하는 시스템을 의미
  • IT 분야의 여러 기업이 몇몇 리더 기업을 중심으로 경쟁과 협력을 통해 공생하고 함께 발전해 나가는 모습을 지칭

 

AWS CodeDeploy


AWS

  • 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 작동절차


  1. AppSpec.yml 파일을 추가한 후, 프로젝트를 코드 저장소인 GitHub 혹은 AWS S3에 업로드한다.

  1. CodeDeploy에 프로젝트의 특정 버전을 배포해 달라 요청한다.

  1. CodeDeploy는 배포를 진행할 EC2 인스턴스들에 설치되어 있는 CodeDeploy Agent들과 통신하며 Agent들에게 요청받은 버전을 배포해 달라고 요청한다.

  1. 요청을 받은 CodeDeploy Agent들은 코드 저장소에서 프로젝트 전체를 서버로 내려받는다. 그리고 내려받은 프로젝트에 있는 AppSpec.yml 파일을 읽고 해당 파일에 적힌 절차대로 배포를 진행한다.

  1. CodeDeploy Agent를 배포를 진행할 후 성공/ 실패 등 결과를 CodeDeploy에게 전달한다.

AWS CodePipeling


AWS

  • AWS CodePipeline은 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는 데 도움이 되는 완전관리형 지속적 전달 서비스
  • 코드 변경이 발생할 때마다 사용자가 정의한 릴리스 모델을 기반으로 릴리스 프로세스의 빌드, 테스트 및 배포 단계를 자동화
  • AWS CodePipeline을 GitHub 또는 자체 사용자 지정 플러그인과 같은 타사 서비스와 손쉽게 통합가능
  • 사용한 만큼만 비용을 지불합니다. 선결제 금액이나 장기 약정이 존재하지 않음

 

AWS X-Ray


AWS

  • AWS X-Ray는 개발자가 마이크로 서비스 아키텍처를 사용해 구축된 애플리케이션과 같은 프로덕션 분산 애플리케이션을 분석하고 디버그하는 데 도움을 주는 서비스
  • X-Ray를 사용해 자신이 개발한 애플리케이션과 기본 서비스가 성능 문제와 오류의 근본 원인 식별과 문제 해결을 올바로 수행하는지 파악가능
  • X-Ray는 요청이 애플리케이션을 통과함에 따라 요청에 대한 엔드 투 엔드 뷰를 제공하고 애플리케이션의 기본 구성 요소를 맵으로 제시
  • 3-티어 애플리케이션에서부터 수천 개의 서비스로 구성된 복잡한 마이크로 서비스 애플리케이션에 이르기까지 개발 중인 애플리케이션과 프로덕션에 적용된 애플리케이션 모두 분석가능
RSS Feed
마지막 수정일자