본문 바로가기

AWS DevOps/AWS CICD 서비스

AWS CodeCommit

AWS CodeCommit이란 안전한 Git 기반의 Repository를 클라우드 기반으로 제공하는 완전 관리형 소스 제어 서비스로 일반적인 애플리케이션 개발을 진행하면서 개발된 소스를 저장하고 제어할 수 있는 기능을 제공

 

CodeCommit은 관리형 클라우드 서비스이므로 소스코드를 저장하기 위한 리포지토리를 생성만 하면 되며, 프로비저니이 및 확장할 하드웨어나 설치, 구성, 운영할 소프트웨어가 필요 없다.

 

또한 AWS CodeCommit의 가져오기 요청, 분기 및 병합 기능을 활용하면 팀에서 다른 개발자나 구성원과 협업을 할 수 있으며, 이를 통해 보다 효율적으로 소스코드를 관리할 수 있다.

AWS CodeCommit은 협업자를 수행하는 내부 구성원에게 코드에 대한 검토를 요청하고 이에 대한 Feedback을 받을 수 있으며 AWS CLI 또는 AWS SDK를 활용하여 리포지토리를 생성하고 Git을 통해 해당 리포지토리를 사용할 수 있다.

 

AWS CodeCommit은 HTTPS, SSH를 활용하여, 파일을 송수신할 수 있으며 ,소스 저장에 사용되는 레포지토리는 KMS(Key Management Service)를 통해 저장 중 자동으로 데이터를 암호화 한다. AWS IAM과 CloudTrail, CloudWatch와 연동을 통해 누가 데이터에 엑세스 할 수 있는지, 액세스 방법, 시기 및 위치까지 제어하고 모니터링 할 수 있어 데이터에 대한 보안과 접근을 제어할 수 있다.

 

 

구분 내용
서비스명 AWS CodeCommit
설명 뛰어난 확장성의 프라이빗 Git 리포지토리를 안전하게 호스팅하며 협업 방식으로 코드 작업 수행
주요 특징 - 안전한 Git 기반 리포지토리를 호스팅하는 완전 관리형 소스 제어 서비스
- 뛰어난 확장성의 안전한 에코 시스템으로 여러팀이 협업하여 코드 작업 수행
- 자체 소스 제어 시스템 운영이나 인프라 확대/축소 불필요
- 소스코드에서 바이너리까지 모든 항목 안전하게 저장
- 기존 Git 도구와 원할하게 연동 가능
프리티어(Free Tier) - 최초 5명의 활성 사용자에 대해 무제한 리포지토리, 매달 50GB의 스토리지, 매달 10,000건의 Git 요청 제공
- 최초 12개월 이후에도 Free Tier 사용 가능

 

ㅁ 소스 관리 시스템 Git

 

 ㅇ Git이란 리누스 토발즈가 2005년 개발한 오픈 소스 기반의 소스관리 툴

 ㅇ Git은 작업 폴더에서 일어나는 모든 기록들과 각각의 기록을 추적할 수 있는 정보를 포함하고 있는 저장소 역할을 수행하는 프로그램.

 ㅇ 온라인에 저장된 소스파일을 본인 컴퓨터로 모두 다운로드 받는 작업인 Clone을 수행하여 필요한 파일을 수정하고, 모든 작업이 완료되면 Git의 원격 저장소로 다시 발행(Push)하는 작업을 수행한다.

 

이 때 메인 저장소에 있는 파일과 하볓지기 전에 메인 저장소와 격리된 별도의 저장소인 Branch를 만들어, 기존 소스에 영향을 주지 않으며, 개발을 진행, 최종적인 작업이 마무리된 후 병합(Merge) 작업을 통해 소스를 병합하여 소스에 대한 마무리를 수행할 수 있으며, 이 진행 과정에 대한 내용을 태깅(Tagging)을 통해 개발 이력을 남기고 History를 관리할 수 있또록 구성할 수 있다.

 

ㅁ AWS CodeCommit의 이점

 

CodeCommit은 앞서 살펴본 Git 리포지토리를 호스팅하는 관리형 소스 관리 서비스입니다. CodeCommit은 다음과 같은 이점이 있다.

 

구분 내용
관리형 서비스 - H/W, S/W 관리 부담 없이 H/W 프로비저닝 및 확장하고 서버 S/W 설치, 구성, 업데이트 필요 없음
높은 보안 수준 - CodeCommit 리포지토리는 유휴 상태에서도 데이터를 암호화하며, IAM과 통합되어 리포지토리에 사용자별 권한 할당 가능
공동 작업 - 브런치 병합 전 코드 변경 사항 검토 및 설명 추가 기능
- 입력된 설명 내용을 이메일로 전송하는 알림 기능 사용 가능
손쉬운 확장 - 저장 가능한 리포지토리의 크기 및 파일 형식 제한 없음
- 대용량 파일 또는 브런치 및 장기간의 변경 사항을 포함하여 처리 가능
타 서비스 통합 - 타 AWS 서비스와 다른 리포지토리와 함께 사용 가능
순쉬운 이전 - 타 Git 기반 리포지토리에서 CodeCommit으로 마이그레이션 가능

 

ㅁ AWS CodeCommit 주요 기능

 

구분 내용
리포지토리
(Repository)
CodeCommit의 기본 버전 관리를 위한 객체이며, 프로젝트에 대한 코드 및 파일을 저장하는 저장소
리포지토리의 좋은 점은 파일의 버전 관리를 통해 소스의 변경 사항에 대한 이력을 관리할 수 있다는 점이다.
또한 리포지토리를 다른 사용자와 공유할 수 있으므로 프로젝트에 대해 공동 작업할 수 있다.
푸시
(Push)
로컬 저장소에서 원격 저장소로 업로드하는 작업을 푸시(Push)라고 한다
내 PC의 로컬 저장소에서 변경된 내역을 원격의 저장소로 공유하려면, 로컬 저장소에서 원격 저장소로 업로드해야 한다.
Push를 수행하면 원격 저장소와 로컬 저장소의 파일이 동기화 된다.

(Pull)
원격 저장소의 파일을 로컬 저장소로 동기화 하는 작업을 풀(Pull)이라고 한다.
원격 저장소를 여러 사람이 공유하는 경우 원격 저장소에 저장된 내역을 저장소로 적용할 필요가 있다.
풀(Pull)을 실행하면 원격 저장소에서 최신 변경 이력을 다운로드하여 내 로컬 저장소에 그 내용이 적용된다.
복제
(Clone)
다른 사람이 작성한 이력이 저장된 원격 저장소가 있다면, 저장소를 통째로 복제하여 내 PC에서 작업할 수 있다.
복제(Clone)란 원격 저장소를 통째로 다운로드 하여 로컬에서 개발을 수행할 수 있다.
커밋
(Commit)
파일 및 폴더의 변경 사항을 저장소에 기록하기 원하면 커밋(Commit)을 수행해야 합니다.
커밋은 변경 사항에 대해 시간 순으로 저장,
수정된 이력이 변경 사항으로 저장된다. 이 때 변경 사항에 대한 이력을 남길 수 있다.
브랜치
(Branch)
브랜치는 독립적으로 어떤 작업을 진행하기 위한 개념으로 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있도록 해준다.
이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있다. 
여러 명이 동시에 작업할 때 다른 사람의 작업에 영향을 주거나 받지 않도록, 메인 브랜치에서 자신의 작업 전용 브랜치를 만든다. 그리고 각자 작업을 진행한 후, 작업이 끝난 사람은 메인 브랜치에 자신의 브랜치 변경 사항을 적용한다.

 

ㅁ CodeCommit 동작 방식

 

  1. AWS CLI 또는 CodeCommit 콘솔을 사용하여 CodeCommit 리포지토리를 생성

  2. 로컬 저장소에서 Git을 통해 git clone을 실행하여 CodeCommit 리포지토리의 이름을 지정, 이를 통해 CodeCommit 리포지토리에. 연결되는 로컬 Repo가 생성됨

  3-1. 로컬 저장소에서 로컬 Repo를 사용하여 파일을 수정(추가, 편집, 삭제)한 다음 git add를 실행하여 수정된 파일을 로컬로 스테이징한다.

  3-2. git commit을 실행하여 파일을 로컬로 커밋한 다음 git push를 실행하여 파일을 CodeCommit 리포지토리로 전송

  4-1. 다른 사용자가 변경한 내용을 다운로드

  4-2. git pull을 실행하여 CodeCommit 리포지토리의 파일을 로컬 Repo와 동기화한후 최신 버전의 파일을 사용하여 작업

 

ㅁ Git 자격 증명을 사용한 AWS CodeCommit 설정

 

AWS CodeCommit은 콘솔에서 파일 업로드, 추가, 편집을 수행할 수 있다. 

여러 파일이나 브랜치 전반의 파일에 대해 직접적인 작업을 수행하기 위해서 로컬컴퓨터에서 AWS CodeCommit에 접속할 수 있도록 인증을 위한 설정을 수행하는 것이 필요하다. 이를 위해 Git 자격 증명을 사용하여 AWS CodeCommit을 연결 할 수 있도록 설정할 수 있다.

 

구분 내용
Git 자격 증명을 사용한 HTTPS 사용자 AWS CodeCommit 리포지토리에 대한 접속을 설정하는 가장 간단한 방법은 IAM 콘솔에서 CodeCommit에 사용할 Git 자격 증명을 구성한 후 이 자격 증명을 HTTPS 접속에 사용하는 것
https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-gc.html

개발 도구(IDE)에서 연결 IAM 콘솔에서 AWS CodeCommit에 대한 Git 자격 증명을 구성한 후 Git 자격증명을 지원하는 개발 도구에서 해당 자격 증명을 사용할 수 있다.
https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ide.html

 

Git 자격 증명을 사용하지 않고, AWS CodeCommit에 접속하기 원한다면 다음과 같은 방법을 사용하여 AWS CodeCommit에 연결하도록 설정할 수 있다.

 

구분 내용
AWS CLI를 사용하지 않는 SSH 사용자 리포지토리에 SSH 연결을 사용하려는 경우에는 AWS CLI를 설치하지 않고도 AWS CodeCommit에 연결할 수 있다.
https://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/setting-up-without-cli.html

Linux, macOS, or Unix에서 AWS CodeCommit 리포지토리 SSH 연결 Linux, macOS, or Unix에서 CodeCommit에 연결하기 위해 다음 설정에 대한 구성이 필요
https://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/setting-up-ssh-unixes.html

Windows에서 AWS CodeCommit 리포지토리 SSH 연결 설정 Windows에서 CodeCommit에 연결하기 위해 다음 설정에 대한 구성이 필요
https://docs.aws.amazon.com/ko_kr/codecommit/latest/userguide/setting-up-ssh-windows.html