본문 바로가기
AWS 공부

AWS 배포 - CodeCommit, CodeDeploy

by 돈 되는 정보 공유하기 2022. 6. 15.
반응형

AWS CodeCommit

 

AWS CodeCommit은 코드, 스크립트, 바이너리 파일 등 버전 제어 파일을 위한 프라이빗한 Git repository 서비스이다. Git은 Linux Torvalds가 만든 무료 오픈소스 버전 제어 시스템으로 보통 소프트웨어 개발 프로젝트에서 사용한다. Git을 이용하여 개발자들은 소스 코드, 스크립트, 바이너리 파일 등 파일의 저장 및 히스토리 추적에 사용한다. AWS CodeCommit은 Git과 비교하여 몇 가지 장점이 있다. AWS CodeCommit은 개별 파일당 2GB의 용량까지 가능하고 repository에 대한 용량 제한이 없다. 또 AWS KMS를 이용하여 저장 중 데이터를 암호화하고 HTTPS 및 SSH를 이용하여 이동 중에도 데이터를 암호화할 수 있다. 그리고 AWS S3(Simple Storage Service)와는 공통점이 있는데 AWS S3와 AWS CodeCommit 모두 파일을 저장하고 자동 버저닝 기능을 통해 삭제하거나 덮어쓰기 후에도 사용자가 필요하면 이전 버전의 파일로 돌릴 수 있다.

 

 

 

 

AWS는 관리 콘솔과 AWS CLI를 이용해 CodeCommit에 repository를 생성할 수 있다. 처음 생성한 repository는 빈 상태로 되어 있는데, CodeCommit 관리 콘솔에서 파일을 업로드 후 로컬에서 Git으로 비어 있는 repository를 복사하고 파일을 추가한다. 그리고 변경 작업에 대해 commit을 수행하고 CodeCommit에 변경 사항을 전송한다. 그리고 마지막으로 Git을 이용해서 로컬 repository에서 CodeCommit으로 파일을 전송한다. 이런 과정을 통해서 비어 있는 repository에 파일을 추가할 수 있다. 이렇게 사용자가 추가한 파일이 있는 repository에는 마찬가지로 보안이 중요하다. CodeCommit은 IAM 정책을 통해서 repository에 대한 접근을 제어할 수 있고 AWS는 CodeCommit을 위해 AWSCodeCommitFullAccess, AWSCodeCommitPowerUser, AWSCodeCommitReadOnly 3가지 관리 정책을 제공한다. AWSCodeCommitFullAcess는 무제한의 접근 권한으로 보통은 Repository 관리자에게 적용되는 정책이다. AWSCodeCommitPowerUser는 AWSCodeCommitFullAccess와 동일하되 삭제 권한만 제한된다. 해당 정책은 보통 읽기, 쓰기를 하는 사용자에게 적용되는 정책이다. 마지막으로 AWSCodeCommitReadOnly는 repository의 파일 읽기만 가능하다. 사용자에게 위 관리 정책 중 하나를 제공하여 repository에 접근할 수 있다.

 

AWS CodeDeploy

 

AWS CodeDeploy는 EC2 인스턴스나 온프레미스 인스턴스에 애플리케이션을 배포할 때 사용하는 서비스이다. S3 버킷이나 Git repository에 저장된 바이너리 실행파일, 스크립트, 이미지 등을 배포할 수 있고 Lambda 함수 배포에도 사용할 수 있다. CodeDeploy는 다수의 애플리케이션을 서버나 다수의 인스턴스에 동시에 배포할 수 있고 배포 중에 오류가 발생하면 롤백 기능을 지원한다. 여기서 롤백이란 배포 같은 작업 중 어떠한 이유로 오류가 발생하거나 사용자가 필요에 따라 배포를 다시 되돌리는 것이다.

 

 

CodeDeploy 에이전트는 windows linux 같은 운영체제(Operating System)에서 실행하는 서비스로 인스턴스에 애플리케이션을 배포하는 과정을 제어할 수 있다. 사용자 데이터 스크립트를 사용하여 CodeDeploy 에이전트를 설치하거나 AMI로 패키징 할 수도 있다. CodeDeploy는 S3 버킷이나 Git repository를 통해서만 배포가 가능하고 수동으로 배포하는 도구로 배포 과정을 자동화하는 것은 아니다. 배포 시에는 배포 그룹을 생성해줘야 하고 이때 배포 타입을 지정해야 하는데 inplace deployment와 blue/green deployment 타입이 존재한다. inplace deployment는 기존에 애플리케이션이 없었던 인스턴스에 처음 배포할 때 주로 사용하고 독립형 EC2 인스턴스나 Auto Scaling 그룹에 속한 인스턴스 등 어떤 것이든 가능하다. inplace deployment에서 ELB(Elastic Load Balancer)는 필수 조건은 아니지만 ELB를 사용하는 경우 CodeDeploy를 통해 배포 중인 인스턴스로 향하는 트랙을 차단하도록 설정할 수 있다. blue/green deployment는 기존의 애플리케이션을 업그레이드할 때 사용한다. Lambda 배포는 항상 blue/green deployment 타입을 사용한다. blue/green deployment 배포 시 배포 그룹에 있는 기존의 인스턴스가 유지되고 CodeDeploy는 새 인스턴스 생성 후 애플리케이션을 배포한다. blue/green deployment 배포를 위해서는 기존의 애플리케이션과 클래식 로드 밸런서가 필요하다. 배포 후에 인스턴스를 로드 밸런서의 타깃 그룹에 등록하고 동시에 기존의 인스턴스는 등록되어 있는 해당 타깃 그룹에서 해제한다.

반응형

'AWS 공부' 카테고리의 다른 글

배포 자동화 - CodePipeline  (0) 2022.06.17
AWS 배포 환경설정  (0) 2022.06.16
AWS 운영 효율화  (0) 2022.06.14
비용 효율화 - E2C 예약 인스턴스, EC2 스팟 인스턴스  (0) 2022.06.13
AWS 비용 관리 2  (0) 2022.06.12

댓글