Amazon Web Services 한국 블로그

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 한국어 번역입니다.