Category: Developer Tools


AWS CodeDeploy 서울 리전 서비스 출시

오늘 부터 AWS CodeDeploy가 Asia Pacific (Seoul) 리전에서 사용 가능합니다.

AWS CodeDeploy는 Amazon EC2 인스턴스 및 온프레미스에서 실행 중인 인스턴스 등에 코드 배포를 자동화하는 서비스입니다. AWS CodeDeploy를 사용하면 신규 코드를 더욱 빠르게 배포할 수 있고, 애플리케이션을 배포하는 동안 가동 중지 시간을 줄이는 데 도움이 될 뿐만 아니라 복잡한 애플리케이션 업데이트 작업을 처리할 수 있습니다.

AWS CodeDeploy로 소프트웨어 배포를 자동화하면 오류가 발생하기 쉬운 수동 작업을 할 필요가 없어지고 인프라에 따라 서비스가 확장되므로 하나 또는 수천 개의 인스턴스에 손쉽게 배포할 수 있습니다.

CodeDeploy는 AWS Management Console, CLI, SDK 또는 API를 통한 중앙 집중식 배포 제어를 제공하여 배포를 시작, 제어 및 모니터링할 수 있게 해줍니다. 각 인스턴스에서 실행되는 개별 설치 이벤트에 대한 배포 진행 상태를 볼 수 있습니다.

더 자세한 것은 제품 소개 페이지사용자 기술 문서(영문)을 참고하시기 바랍니다.

CodeDeploy, 온라인 세미나에서 만나보세요!
이번 6월 29일(수) 월간 웨비나에서는 AWS 클라우드를 통해 어떻게 손쉽게 소프트웨어를 개발하고, 배포하는 과정을 자동화 할 수 있는지를 알아 봅니다. 이를 위해 Amazon.com의 소프트웨어 개발 과정 상의 경험과 이를 토대로 만들어진 AWS CodeDeploy와 CodePipeline 서비스를 소개해 드리고, 이를 통해 EC2 인스턴스 뿐만 아니라 기존 서버에 손쉽게 배포하는 방법을 알려드립니다.

본 세션을 통해 클라우드를 통한 민첩하고 빠른 개발 및 배포를 통해 진화된 데브옵스(DevOps) 프로세스를 정립할 수 있는 방법을 안내해 드립니다.

■ 14:00-15:00 Amazon.com의 데브옵스와 CodeDeploy 및 CodePipeline 서비스 소개
■ 15:00-15:30 Q&A (질의 응답은 위 세션 중에도 가능합니다.)

지금 등록하기

– AWS 코리아 마케팅팀

AWS CodeCommit 이벤트 알림 신규 기능

AWS CodeCommit는 안전하고 확장성이 뛰어난 전용 Git 저장소를 쉽게 호스트 할 수 있는 매니지드 소스 관리 서비스입니다. 이번에 저장소 트리거를 추가하여 CodeCommit이 좀 더 유용한 서비스가 되었습니다. 트리거를 이용하여 단위 테스트 및 배포 도구 소스 코드 관리 워크 플로우에 통합할 수 있습니다. 트리거는 효율적이고 확장이므로 변경을 가져오도록 구축 된 모델보다 더 광범위하게 적용 가능합니다. 지속적인 통합지속적인 전달을 기반으로 한 개발 방법론을 위해 트리거 기능이 매우 유용합니다.

통지 기능 소개
CodeCommit 저장소마다 최대 10 개의 트리거를 만들 수 있습니다. 트리거는 코드 푸시/태그 생성/태그 삭제를 포함하는 저장소 동작에 대한 응답을 받습니다. 트리거는 저장소 특정 지점이나 모든 지점에 넣을 수 있습니다.

트리거를 통해 Amazon Simple Notification Service (SNS) 노티 항목을 보내거나 AWS Lambda 함수 호출이 가능합니다. 또한, 개별 트리거는 사용자 정의 데이터로 확장하는 것이 가능하고, 그 데이터에 의해 특정 트리거 같은 이벤트에서 실행되는 다른 트리거와 구별 할 수 있습니다. 저장소 이벤트를 이메일이나 SNS를 통해 구매하는 트리거를 사용할 수 있습니다. SNS에서 SQS에 쓰기 큐를 통해 CI/CD 도구에 작업을 올리거나 사용 도구가 제공하는 훅(webhook)에 SNS를 사용하여 활성화 할 수 있습니다. 특정 경우에는 CodeCommit 저장소 변경에 의해 지정된 작업이 시작됩니다. 또한, Lambda 기능을 이용하여 빌드 구문 확인, 코드의 복잡성 메트릭스 확인, 개발자 생산성 측정 등을 할 수 있습니다. 이 글 마지막에 몇 가지 특이한 아이디어를 생각해 보았습니다. (여러분도 한번 생각해 보시길!)

트리거는 AWS Management Console, AWS Command Line Interface (CLI)CodeCommit API를 통해 직접 관리 할 수 있습니다. 여기에서는 콘솔을 사용하도록 하겠습니다. 왼쪽 내비게이션 열에 Triggers 항목이 추가되어 있습니다 :

Create Trigger를 클릭하여 시작합니다. 하나의 이벤트 (또는 여러 이벤트)를 선택하고 단일 지점 (또는 여러 지점)을 선택하고 노티 발행과 Lambda 함수 호출에 필요한 정보를 입력합니다 :

대상 이벤트와 코드 지점을 선택했습니다.

 

SNS 토픽 또는 Lambda 함수를 지정하고 (적절한 권한이 지정되어 있는지 확인한 후) 예상대로 작동하는지 확인하기 위해 Test Trigger를 이용하고 Create 버튼을 클릭합니다.

예상대로 IAM 권한이 작동하는지 확인하기 위해 Test Trigger를 사용할 수 있습니다. 예를 들어, 아래에서는 일부러 오류를 발생시키고 있습니다:

이 문제는 How to Allow AWS CodeCommit to run the Function 문서에서 해결 방법을 찾을 수 있습니다.

정식 사용 가능
이 기능은 지금 바로 사용 가능하며, 더 자세한 정보는 Managing Triggers for an AWS CodeCommit Repository를 참고하시기 바랍니다.

Clare Liguori는 CodeCommit 트리거 기능을 활용한 몇 가지 아이디어를 만들었습니다. CI/CD를 통해 유용하게 진행 할 수 있습니다.

  • 동영상 배포 – 새로운 동영상 혹은 기존 동영상의 새 버전이 커밋되었는지 여부를 Lambda 함수로 체크하고 업데이트가 발생하면 동영상을 YouTube에 배포하기
  • 광고 배포 – 새로운 광고 자료가 준비 되면 Facebook에 자동으로 광고 생성, 실행, 소셜 미디어에 뉴스 등록하기

여러분이 개발 과정에서 이러한 트리거를 이용하여 창조적인 배포 방법이 있다면 꼭 공유해 주시기 바랍니다.

Jeff;

이 글은 New – Notifications for AWS CodeCommit의 한국어 번역입니다. AWS CodeCommit은 현재 미국 버지니아 리전에서만 제공되나, 소스 콘트롤 관리 서비스로 테스트해 보실 수 있습니다.

AWS CodePipeline 정식 출시

지난해 가을 AWS re:Invent에서 AWS CodePipeline를 발표했습니다 (Code Management and Deployment라는 글에 자세한 내용이 있습니다). 이 도구는 여러분의 소프트웨어 출시 프로세스를 모델링하고 자동화하는 것을 도와드립니다. CodePipeline에서는 자동화 및 출시 프로세스를 보다 안정적이고 효율적으로 디자인 되어 있습니다.

정식 출시
AWS CodePipeline을 오늘부터 사용하실 수 있습니다.

자세한 이야기​​에 들어가기 전에 이 제품의 배경에 대해 공유하고 싶습니다.

아마존 내부 이야기: Pipelines
AWS CodeDeploy가 Apollo로 알려진 Amazon 내부 도구에서 영감을 받은 것처럼(The Story of Apollo – Amazon’s Deployment Engine) CodePipeline도 Amazon의 내부 도구를 기반하고 있습니다.

아마존 내부에서는 일단 코드가 체크인 된 후, 프로덕션 환경에 배포 될 때까지 시간을 측정 한 후 지속적인 배포 서비스를 개발했습니다. 그 시간은 엄청 길고 개발 팀이 만든 기능이 고객이 직접 사용할 때까지 가능한 빠르게 하기 위해 도전적인 문제였습니다.

좀 더 깊이 조사해 보니, 대부분 시간이 실제 빌드와 테스트 및 배포 시간에 사용되지 않는다는 것을 알 수 있었습니다. 대신 수동으로 티켓을 만들고, 팀 간의 연계를 할 때 시간이 많이 걸린다는 알 수 있었습니다. 즉, 대기열에 티켓이 들어가면 누군가가 그것을 주의 깊게 보지 못하고, 빌드 및 테스트 결과를 검토 할 때까지 방치되어 있어서 이러한 프로세스를 진행하려면 사람에게 매뉴얼로 통보 해야했습니다.

Amazon 내부에서는 물류 센터에서 조차 자동화에 집중하고 로봇을 이용하여 상품의 물류 속도를 높히고 있는데, 우리가 소프트웨어 배포 프로세스에서 무형의 컴퓨터 프로그램을 이동하기 위하여 수작업으로 사람이 움직이는 프로세스에 의존하고 있다는 점은 심각한 것이었습니다.

그래서, 속도를 높이기 위해 우리는 Pipelines라고 부르는 내부 시스템을 개발했습니다. 이 시스템을 통해 각 팀은 출시 프로세스의 모든 부분을 연결할 수 있게 되었습니다. 여기에는 소스 코드 관리, 빌드 및 배포 및 실 적용 직전의 환경에서 테스트하고 배치하는 모든 과정이 포함되었습니다. 물론 이 도구는 코드 변경으로 부터 프로덕션 환경에 도달 할 때까지 시간을 획기적으로 절감했습니다.

더 빠르게 배포하는 것이 이 프로젝트의 주된 목적 이었지만, 그 외에도 여러 가지 장점이 있다는 것을 목격했습니다. 모든 코드 변경이 같은 품질의 프로세스를 통과함으로써 각 팀은 보다 신속하게 문제를 파악할 수 있는 질 높은 자료를 만들 수 있어 결과적으로 나쁜 코드가 실전에 배치되었을 경우, 롤백 해야하는 횟수를 줄일 수 있었습니다.

지금은 Pipelines을 Amazon 곳곳에서 사용되고 있습니다. 각 팀은 대시 보드로 이용하고 그들의 소프트웨어 출시 모니터링 및 관리에 사용되고 있습니다.

오늘의 CodePipeline를 통해 여러분도 우리의 개발자와 같은 기능을 사용하실 수 있게 되었습니다.

CodePipeline의 모든 것
CodePipeline은 소프트웨어의 지속적인 배포(continuous delivery) 서비스입니다. 여러분의 소프트웨어를 출시하는 데 필요한 단계를 모델링하고 시각화 및 자동화 할 수 있습니다. 코드가 체크인에서 빌드 테스트 및 배포 될 때까지 모든 단계를 정의하고 맞춤형으로 사용자가 정의 할 수 있습니다.

여러분의 조직은 다른 조직과 마찬가지로 빌드 프로세스의 일부로 다양한(오픈 소스 및 기타) 도구를 이용하고 있으실 것입니다. 내부 연계를 통해 우리의 파트너에서 제공하는 것 이외에 이러한 고도로 자동화된 워크 플로우 중심의 프로세스에 기존 도구도 통합 할 수 있습니다. 자신의 소스 관리 및 빌드, 테스트 및 배포 도구와 CodePipeline는 사용자 정의 액션 API를 통해 연결하는 수도 있습니다.

출시 프로세스를 자동화하여 보다 빠르고 일관성 있는 업무를 할 수 있습니다. 그 결과 작은 기능 및 코드 변화를 자주 프로덕션 환경에 적응할 수 있을 것입니다. CodePipeline 대시 보드를 사용하여 출시 파이프 라인의 흐름을 확인 하고 변화를 시각화하여 관리할 수 ​​있게 될 것입니다.

빠르게 사용해 보기
이제 CodePipeline을 한번 살펴 보겠습니다. 버전이 있는 S3 버킷 및 샘플 애플리케이션을 출시하기 위해 AWS CodeDeploy를 사용한 간단한 두 단계의 파이프 라인을 만들겠습니다.

먼저 새 버킷 (jbarr-code)를 만들고 버전 관리를 사용합니다:

코드를 배포하는 장소가 필요하기 때문에 CodeDeploy 콘솔을 열고 샘플 배포를 이용합니다. 이에 따라 세 개의 EC2 인스턴스와 하나의 Deployment Group을 시작합니다:

그 다음 CodePipeline 콘솔을 열고 Deployment Walkthrough Wizard를 사용하여 배포 리소스를 만듭니다. 이 Pipeline을 DeployMyCode라고 부르겠습니다:

여기에서 CodePipeline 코드를 어디에서 찾을 것인지 알려줍니다. Source Provider에서 S3 버킷 및 객체 이름(이 객체는 배포하고자하는 코드를 포함)을 참조하십시오:

Source Provider로서 GitHub의 저장소를 대신 사용할 수 있습니다.

다음 단계에서는 Build Provider를 지정하여 코드를 어떻게 작성할지 알려줍니다. 이번 코드는 스크립트이기 때문에 그대로 실행 가능하며, 빌드를 할 필요가 없습니다.

Build Provider로서 Jenkins를 사용할 수 있습니다.

(파이프 라인을 실행 할때) 코드를 빌드하지 않기 때문에 다음 단계는 배포 전에 테스트를 하는 것입니다. 조금 전에 설치한 CodeDeploy 설정(대상 EC2 인스턴스를 포함)을 사용합니다:

CodePipeline에 자신의 계정의 AWS 리소스를 사용 권한을주고, IAM 역할을 생성합니다:

이 단계가 끝나면 선택 사항을 확인하고 파이프라인을 만들 수 있습니다 :

파이프라인이 곧 실행 됩니다:

특정 단계의 설정에 대해 자세히 볼 때, “i”에 커서를 올려 정보를 보실 수 있습니다 :

코드를 수정하고 새 버전을 S3에 업로드하면 CodePipeline는 그 변화를 감지하고 자동으로 파이프 라인을 실행합니다. Release change 버튼을 클릭해도 됩니다.

각 단계 사이에 파이프 라인을 중단할 필요가 있는 경우 클릭 하셔도 됩니다.

나중에 클릭하면 다시 활성화 할 수 있습니다!

파이프 라인의 편집도 가능합니다. 기존 단계를 변경하거나 새로운 단계를 마지막으로 추가하거나 파이프 라인 중간에 삽입 할 수 있습니다:

예를 들어, 테스트 단계를 추가 할 수 있으며 (만약 테스트가 성공하면) 프로덕션 환경에 배포합니다. 만약 테스트 단계를 더하려면 Test Provider를 선택 연결 해야합니다.

연결 단계에서는 Provider의 Web 사이트가 사용됩니다:

지금까지 설명한 모든 기능들은 AWS Command Line Interface (CLI)을 통해서도 가능합니다.

CodePipeline 통합
앞서 언급 한 바와 같이 CodePipeline은 기존 소스 관리 및 빌드, 테스트, 배포 도구를 사용할 수 있습니다. 아래는 제가 알고 있는 것인데, 추가되면 업데이트 해드리겠습니다.

소스 콘트롤

빌드 및 지속적 통합

  • Jenkins – 클라우드와 온-프레미스에서 호스팅되는 Jenkins 서버에서 빌드 실행
  • CloudBees – CloudBees의 Jenkins 플랫폼에서 빌드 및 테스트 CI를 실행

테스트

  • Apica – Apica 부하 테스트 서비스에서 높은 부하 테스팅
  • BlazeMeter – BlazeMeter 부하 테스트 서비스에서 높은 부하 테스팅
  • Ghost Inspector – Ghost Inspector의 서비스에서 UI 자동화 테스트 실행
  • Runscope -Runscope 서비스에서 API 테스트 실행

배포

지금 사용 가능합니다!
CodePipeline 지금부터 사용할 수 있으며 오늘부터 US East (Northern Virginia) 리전에서 사용가능합니다. 또한 다른 리전으로의 확장도 지속해 나갈 예정입니다.

요금 정책은 사용 중인 파이프 라인 당 매월 $1가 부과됩니다 (첫 하나는 AWS Free Tier에서 사용 가능합니다.) 사용 중인 파이프 라인이라는 것은 1개월 사이에 적어도 한 번의 코드 변경이 있었던 것을 의미합니다.

Jeff;

이 글은 Now Available – AWS CodePipeline의 한국어 번역입니다.

AWS CodeCommit 정식 출시

지난해 11월 AWS re:Invent에서 AWS CodeCommit을 발표한 이후(참고: AWS 코드 개발 및 배포 도구), 오늘 누구나 사용할 수 있도록 오늘 정식 오픈을 하게되었습니다. 새로운 서비스를 돌려 보기 전에 CodeCommit의 기능을 한번 다시 살펴보겠습니다.

CodeCommit 소개

CodeCommit은 관리형 소스 콘트롤 서비스로서 Git 레포지터리를 지원하고 모든 Git 기반 개발도구와 호환됩니다. 레포지터리에 있는 모든 파일은 크기나 숫자에 제한 없이 사용 가능하며, 여러분의 Git 사용 지식 및 도구와 베스트 프랙티스를 그대로 활용할 수 있습니다.

나아가 CodeCommit은 Git을 확장 가능한 가용성 높도록 개선하였고 이를 통해 여러분의 코드와 자산을 좀 더 안전하게 접근할 수 있게 됩니다. CodeCommit은 여러분의 파일을 커밋 시 암호화 하며, 관리자가 개발자를 제어할 수 있게 IAM 역할을 사용합니다. 개발 환경에서 올라오는 모든 데이터는 HTTPS나 SSH 연결로 접근 가능합니다. CodeCommit은 AWS 클라우드에서 실행 되며, 여러분의 팀이 다양한 장소에서 함께 개발하거나 파트너 및 벤더 등과 협업을 할 때도 유용합니다.

미리 CodeCommit를 사용해 보신 사용자들의 이야기를 한번 들어보면:

“저희는 수십만개의 동영상을 제공하고 있으며 각 비디오 플레이어 코드를 저장할 소스 콘트롤 시스템을 찾고 있었습니다. AWS CodeCommit을 통해 많은 수의 레포지터리를 확장성 걱정없이 사용할 수 있고, 크기도 걱정하지 않게 되었습니다. 우리 개발자들은 이미 친숙한 Git 인터페이스와 개발 도구를 통해 쉽게 사용할 수 있었습니다. Brian Deitte, Architect, Brightcove”

“이전에는 저희는 기존 데이터 센터에 설치한 중앙 집중된 버전 콘트롤 시스템을 쓰고 있었습니다. AWS CodeCommit을 통해 확장 가능한 분산형 소스 콘트롤을 통해 잘 관리되어서, 더 이상 하드웨어 확장 비용을 고려할 피요 없고 오히려 사용한 만큼 내는 가격 정책으로 더 유연할 뿐만 아니라 라이선스 걱정 없이도 사용자 추가나 제거가 가능합니다. 저희는 멋진 앱을 만드는데만 집중하고 AWS CodeCommit이 멋진 버전 콘트롤 관리 서비스를 더 잘 만들것으로 생각합니다. Ajit Zadgaonkar, Executive Director, Software Engineering Operations, Edmunds”

CodeCommit 지금 사용하기

CodeCommit을 직접 사용해 보기 위해서 AWS SDK for PHP 레포지터리의 미러를 만들어 보기로 했습니다. 우선 작은 EC2 인스턴스를 하나 만들어 Amazon Linux AMI를 설치합니다. 그리고 최신 버전의 AWS 코멘드라인 도구(CLI)를 설치하고 아래와 같이 Git을 설정합니다.

$ sudo yum install git

Git 개인 설정을 진행합니다.

$ git config --global user.name "Jeff Barr"
$ git config --global user.email jbarr@amazon.com

AWS CLI를 기본값으로 IAM 사용자로 설정하고, AWSCodeCommitFullAccess를 추가하여 관리 권한을 줄 수 있습니다. 이 정책이 적용되면 모든 레포지터리에 대해 CodeCommit 기능을 실행시켜볼 수 있습니다. 예를 들어 다른 개발자에게 레포지터리를 추가하거나 삭제할 수 있는 권한을 줄수도 있습니다.

그리고 나서, CodeCommit 자체적으로 인증할 수 있도록 아래와 같이 설정합니다.

 
$ git config --global credential.helper '!aws codecommit credential-helper $@'
$ git config --global credential.UseHttpPath true

credential helper는 aws 코맨드에서 제공되기 때문에 Git 설정에는 CLI를 사용하기 위해 설정했던 어떤 프로필도 참고할 수 있습니다. 이러한 옵션은 각자의 크리덴셜을 가지고 각 레포지터를 활용하는 여러 개의 프로젝트에서 일할 때 매우 유용합니다. credential.helper를 설정하고 아래와 같이 레포지터리 마다 설정 가능합니다.

$ cd repo1
$ git config --local credential.helper '!aws codecommit --profile jb_repo1 credential-helper $@' 
$ cd ../repo2
$ git config --local credential.helper '!aws codecommit --profile jb_repo2 credential-helper $@' 

Git이 설정되면, 콘솔에서 레포지터리를 하나 만들어 보겠습니다. (물론 CLI를 통해 create-repogitory 명령도 사용 가능):

이제 레포지터리가 사용가능합니다. CodeCommit 대시보드에서 한번에 레포지터리 목록을 볼 수도 있습니다.

이제 AWS_PHP_SDK 레포지터리에 올릴 수 있는 상태가 되었고, URL 아이콘을 클릭해서 HTTPS URL을 복사합니다.

SDK 복사본을 다운로드하고 이를 내 레포지터리에 올립니다.

$ git push https://git-codecommit.us-east-1.amazonaws.com/v1/repos/AWS_PHP_SDK --all
Counting objects: 28690, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (9608/9608), done.
Writing objects: 100% (28690/28690), 12.91 MiB | 625.00 KiB/s, done.544.00 KiB/s
Total 28690 (delta 16604), reused 28686 (delta 16603)

To https://git-codecommit.us-east-1.amazonaws.com/v1/repos/AWS_PHP_SDK
* [new branch] 2.8 -> 2.8
* [new branch] master -> master

콘솔을 통해 더 자세한 사항을 볼 수 있습니다.

또한, 레포지터리명을 변경하거나 다른 설정값도 바꿀 수 있습니다.

지금 사용해 보기

CodeCommit은 지금 사용 가능합니다. 월 별로 활성 사용자(IAM 사용자, 통합 사용자 및 루트 계정)당 1달러의 사용료가 발생하며, 생성하는 레포지터리 갯수는 관계가 없습니다.

각 사용자는 월간 10GB의 스토리지와 2,000번의 Git 요청(레포지터리 파일이 이동하는 push 또는 pull)을 할 수 있으며 추가 스토리지 용량은 GB당 $0.06 그리고 1회 요청당 $0.001의 비용이 청구됩니다.

AWS 무료 이용 범위에 따라 5개 활성 사용자에 대해 매월 50GB의 스토리지와 10,000번의 Git 요청이 무료로 제공됩니다.

향후 계획

저희는 CodeCommit에 대해 많은 계획을 가지고 있고, 현재 한참 작업중입니다.

  • Post-Receive Hooks – 레포지터리로 푸시를 한 후 CodeCommit 호출을 외부 시스템에서 할 수 있습니다. 이것은 지속 통합(Continuous Integration, CI) 서버에 알려주어 빌드 및 테스트를 할 수 있게 됩니다
  • CloudTrail 지원 – CodeCommit으로의 모든 API 호출을 저장 및 감시할 수 있습니다.
  • 추가 리전 지원 – 오늘은 US East (Northern Virginia)에만 오픈하지만, 향후에 지원 지역을 계속 추가할 예정입니다.
  • 추가 유저인터페이스 요소 지원 – 향후 완벽한 웹 기반 소스 코드 레포지터리 유저 인터페이스를 지원할 예정입니다.

— Jeff;

본 글은 Now Available – AWS CodeCommit 한국어 번역입니다.