AWS CodeCommit
사용 설명서 (API 버전 2015-04-13)

AWS CodeCommit란 무엇입니까?

AWS CodeCommit는 클라우드에서 자산(예: 문서, 소스 코드, 바이너리 파일)을 비공개로 저장하여 관리할 수 있도록 Amazon Web Services에서 호스팅되는 버전 관리 서비스입니다. CodeCommit의 요금에 대한 자세한 내용은 요금 단원을 참조하십시오.

참고

CodeCommit는 많은 규정 준수 프로그램의 범위 내에 있습니다. AWS 및 규정 준수 활동에 대한 자세한 내용은 규정 준수 프로그램 제공 AWS 범위 내 서비스 단원을 참조하십시오.

이것은 HIPAA 적격 서비스입니다. AWS, 미국 HIPAA(Health Insurance Portability and Accountability Act of 1996), AWS 서비스를 이용한 보호 대상 건강 정보(PHI)의 처리, 저장, 전송에 대한 자세한 정보는 HIPAA 개요를 확인하십시오.

이 서비스, 그리고 보안 관리 모범 사례를 규정한 보안 관리 표준인 ISO 27001에 대한 자세한 내용은 ISO 27001 개요를 참조하십시오.

이 서비스와 PCI DSS(Payment Card Industry Data Security Standard)에 대한 자세한 내용은 PCI DSS 개요 단원을 참조하십시오.

이 서비스에 대한 자세한 내용 및 기밀 정보를 보호하는 암호 모듈의 보안 요건을 규정하고 있는 Federal Information Processing Standard(FIPS) Publication 140-2 US 정부 표준에 대한 정보는 Federal Information Processing Standard(FIPS) 140-2 개요Git 연결 엔드포인트 단원을 참조하십시오.

CodeCommit 소개

CodeCommit는 프라이빗 Git 리포지토리를 호스팅하는 안전하고 확장성이 뛰어난 관리형 소스 제어 서비스입니다. CodeCommit는 자체 소스 제어 시스템을 관리하거나 인프라 확장을 걱정할 필요가 없습니다. CodeCommit을 사용하여 코드와 바이너리 등을 저장할 수 있습니다. 또한 Git의 표준 기능을 지원하므로 기존 Git 기반 도구와도 원활하게 연동됩니다.

CodeCommit 사용의 이점은 다음과 같습니다.

  • AWS가 호스팅하는 종합 관리형 서비스의 이점. CodeCommit는 높은 서비스 가용성과 내구성을 제공하며 하드웨어와 소프트웨어를 자체적으로 관리해야 하는 부담을 덜어 줍니다. 하드웨어를 프로비저닝 및 확장하고 서버 소프트웨어를 설치, 구성, 업데이트할 필요가 없습니다.

  • 안전하게 코드 저장. CodeCommit 리포지토리는 유휴 상태는 물론 전송 중에도 암호화됩니다.

  • 코드 공동 작업 CodeCommit 리포지토리는 브랜치에 병합하기 전에 사용자들이 서로 코드 변경 내용을 검토하고 그에 대한 설명을 추가할 수 있는 풀 요청 기능과 풀 요청 및 설명에 대한 이메일을 사용자에게 자동으로 전송하는 알림 기능 등을 지원합니다.

  • 버전 관리 프로젝트를 쉽게 확장. CodeCommit 리포지토리는 개발 요구에 맞춰 확장이 가능합니다. 서비스를 통해 대량 파일 또는 브랜치, 대용량 파일 크기 및 긴 개정 기록을 포함하는 리포지토리를 처리할 수 있습니다.

  • 언제든 무엇이건 저장. CodeCommit는 저장할 수 있는 리포지토리 크기 또는 파일 형식에 대한 제한이 없습니다.

  • 다른 AWS 및 타사 서비스와 통합. CodeCommit는 리포지토리를 AWS 클라우드의 다른 프로덕션 리소스와 밀접하게 유지하여 개발 수명 주기의 속도와 빈도를 높이는 데 도움이 됩니다. IAM과 통합되고 다른 AWS 서비스 및 다른 리포지토리와 함께 사용할 수 있습니다. 자세한 내용은 AWS CodeCommit와 제품 및 서비스 통합 단원을 참조하십시오.

  • 다른 원격 리포지토리에서 파일을 쉽게 마이그레이션할 수 있습니다. Git 기반 리포지토리에서 CodeCommit을 마이그레이션할 수 있습니다.

  • 이미 알고 있는 Git 도구 사용. CodeCommit는 Git 명령뿐 아니라 자체 AWS CLI 명령 및 API를 지원합니다.

CodeCommit, Git 및 필요에 맞는 올바른 AWS 서비스의 선택

CodeCommit는 Git 기반 서비스로서 대부분의 버전 관리 필요에 적합합니다. 파일 크기, 파일 형식 및 리포지토리 크기에 대한 임의적인 제한은 없습니다. 그러나 특정 종류의 작업 수행, 특히 시간에 따른 작업 수행에 부정적인 영향을 미칠 수 있는 Git에 대해서는 내재된 제약이 있습니다. 다른 AWS 서비스가 해당 작업에 더 적합한 사용 사례에 CodeCommit 리포지토리 수행을 사용하지 않게 함으로써 리포지토리 수행의 잠재적인 악화를 방지할 수 있습니다. 또한 복잡한 리포지토리에 대한 Git 성능을 최적화할 수 있습니다. 일부 사용 사례에서는 Git, 즉 CodeCommit가 최상의 솔루션이 아닐 수 있으며 Git를 최적화하기 위해 추가적인 조치를 취해야 할 수 있습니다.

사용 사례 설명 고려해야 할 다른 서비스
자주 변경되는 대용량 파일 Git는 Delta 인코딩을 사용하여 파일 버전 사이의 차이를 저장합니다. 예를 들어 문서의 몇 단어만을 변경하는 경우, Git는 이러한 변경된 단어만을 저장합니다. 변경이 많이 가해진 5MB 이상의 파일 또는 객체가 있는 경우 Git가 Delta 차이의 상당한 체인을 다시 구성해야 할 수 있습니다. 이러한 파일이 시간의 경과에 따라 증가함에 따라 로컬 컴퓨터와 CodeCommit 모두의 컴퓨팅 리소스의 소비량이 갈수록 늘어날 수 있습니다. 용량이 큰 파일 버전에 대해서는 Amazon Simple Storage Service(Amazon S3)를 고려합니다. 자세한 내용은 Amazon Simple Storage Service 개발자 가이드버전 관리 사용 단원을 참조하십시오.
데이터베이스 Git 리포지토리의 크기는 시간이 흐를수록 증가합니다. 버전 관리 트랙은 모두 변경되므로 모든 변경 사항이 리포지토리 크기를 증가시킵니다. 다시 말해 데이터를 커밋할 때 커밋에서 데이터를 삭제하더라도 데이터는 리포지토리에 추가됩니다. 처리하고 시간의 경과에 따라 전송해야 할 더 많은 데이터가 있으므로 Git의 속도가 느려집니다. 이러한 현상은 특히 데이터베이스 사용 사례에 불리한 영향을 줍니다. Git는 데이터베이스로서 설계되지 않았습니다. 크기와 상관 없이 일관된 성능을 지닌 데이터베이스를 생성해 사용하려면 Amazon DynamoDB를 고려하십시오. 자세한 내용은 Amazon DynamoDB 시작 안내서 단원을 참조하십시오.
감사 추적 일반적으로 감사 추적은 긴 시간 동안 유지되며 빈도가 매우 높은 케이던스로 시스템 프로세스에 의해 지속적으로 생성됩니다. Git는 개발 주기에서 개발자 그룹에 의해 생성된 소스 코드를 안전하게 저장하도록 설계되었습니다. 프로그래밍 방식으로 생성된 시스템 변경을 지속적으로 저장하는 리포지토리를 빠르게 변경하면 시간이 흐름에 따라 성능 저하를 초래하게 됩니다. 감사 추적을 저장하려면 Amazon Simple Storage Service(Amazon S3)를 고려하십시오.

사용 사례에 따라 AWS 활동을 감사하려면 AWS CloudTrail, AWS Config 또는 Amazon CloudWatch의 사용을 고려하십시오.

백업 Git는 개발자가 작성한 소스 코드 버전에 맞추어 설계되었습니다. 커밋을 CodeCommit 리포지토리 등 2개의 원격 리포지토리로 백업 전략으로서 푸시할 수 있습니다. 그러나 Git는 컴퓨터 파일 시스템, 데이터베이스 덤프 또는 유사한 백업 콘텐츠의 백업을 처리하도록 설계되지 않았습니다. 그렇게 하면 시스템의 속도를 둔화시키고 리포지토리를 복제하고 푸시하는 데 소요되는 시간이 증가할 수 있습니다. AWS 클라우드로의 백업에 대한 자세한 내용은 백업 및 복원 단원을 참조하십시오.
다수의 브랜치 또는 참조 Git 클라이언트가 리포지토리 데이터를 푸시하거나 가져올 때 단일 브랜치에만 관심이 있더라도, 원격 서버는 모든 브랜치와 태그 등의 참조를 전송해야 합니다. 수천 개의 브랜치와 참조가 있는 경우, 이를 처리하고 전송하는 데(팩 협상) 시간이 소요될 수 있으며 명백히 느린 리포지토리 응답을 초래할 수 있습니다. 브랜치와 태그가 많을수록 이러한 프로세스가 오래 걸릴 수 있습니다. CodeCommit를 사용하는 좋지만, 더 이상 필요하지 않은 브랜치와 태그는 삭제하시기 바랍니다. 필요치 않은 브랜치와 태그를 확인하기 위해 CodeCommit 리포지토리의 참조 수를 분석하려면 다음 명령 중 하나를 사용할 수 있습니다.
  • Linux, macOS, or Unix 또는 Windows의 Bash 에뮬레이터

    git ls-remote | wc-l
  • Powershell:

    git ls-remote | Measure-Object -line

CodeCommit 작동 방식

Git 기반 리포지토리 사용자는 CodeCommit에 익숙하지만 그렇지 않은 사용자도 비교적 쉽게 CodeCommit로 전환할 수 있습니다. CodeCommit는 쉽게 리포지토리를 생성하고 기존 리포지토리와 브랜치를 나열할 수 있는 콘솔을 제공합니다. 로컬 리포지토리를 생성하여 간단한 몇 단계로 리포지토리에 대한 정보를 찾아서 컴퓨터에 복제할 수 있습니다. 로컬 리포지토리에서 원하는 항목을 변경한 다음 변경 내용을 CodeCommit 리포지토리로 푸시할 수 있습니다. 로컬 컴퓨터의 명령줄에서 작업하거나 GUI 기반 편집기를 사용할 수 있습니다.

다음 그림에서는 개발 시스템, AWS CLI 또는 CodeCommit 콘솔, CodeCommit 서비스를 사용하여 리포지토리를 생성 및 관리하는 방법을 보여 줍니다.


        일반적 CodeCommit 워크플로우
  1. AWS CLI 또는 CodeCommit 콘솔을 사용하여 CodeCommit 리포지토리를 생성합니다.

  2. 개발 시스템에서 Git을 통해 git clone을 실행하여 CodeCommit 리포지토리의 이름을 지정합니다. 그러면 CodeCommit 리포지토리에 연결되는 로컬 repo가 생성됩니다.

  3. 개발 시스템에서 로컬 repo를 사용하여 파일을 수정(추가, 편집, 삭제)한 다음 git add를 실행하여 수정된 파일을 로컬로 스테이징합니다. git commit을 실행하여 파일을 로컬로 커밋한 다음 git push를 실행하여 파일을 CodeCommit 리포지토리로 전송합니다.

  4. 다른 사용자가 변경한 내용을 다운로드합니다. git pull을 실행하여 CodeCommit 리포지토리의 파일을 로컬 repo와 동기화합니다. 그러면 최신 버전의 파일을 사용하여 작업할 수 있습니다.

AWS CLI또는 CodeCommit 콘솔을 사용하여 리포지토리를 추적 및 관리할 수 있습니다.

CodeCommit과 Amazon S3의 파일 버전 관리의 차이

CodeCommit는 팀 소프트웨어 개발용으로 최적화되었습니다. 다른 개발자의 변경과 함께 발생할 수 있는 여러 파일의 일괄 변경을 관리합니다. Amazon S3 버전 관리는 파일의 과거 버전 복구를 지원하지만 소프트웨어 개발 팀에 필요한 공동 파일 추적 기능이 중심은 아닙니다.

CodeCommit을 시작하는 방법

CodeCommit을 시작하려면

  1. 설정 의 단계에 따라 개발 시스템을 준비합니다.

  2. 시작하기의 자습서 하나 이상에 나오는 단계를 따르십시오.

  3. CodeCommit에서 버전 관리 프로젝트를 생성하거나 버전 관리 프로젝트를 CodeCommit로 마이그레이션합니다.

Git을 배우려면?

아직도 잘 모르겠다면 Git 사용 방법 배우기를 참조하십시오. 다음과 같은 몇 가지 유용한 자료가 있습니다.

  • Pro Git(Pro Git 서적의 온라인 버전). 작성자: Scott Chacon. 발행: Apress

  • Git Immersion(Git 사용에 대한 기초 정보를 안내하는 자습서). 발행: Neo Innovation, Inc.

  • Git Reference(상세한 Git 자습서로도 사용 가능한 온라인 빠른 참조). 발행: GitHub 팀

  • Git Cheat Sheet(기본 Git 명령 구문). 발행: GitHub 팀

  • Git Pocket Guide. 작성자: Richard E. Silverman 발행: O'Reilly Media, Inc.