AWS CodePipeline 사용
이 자습서에서는, 실시간 샘플 앱을 배포하는 자동화된 소프트웨어 릴리스 파이프라인을 생성하는 방법을 알아봅니다. 코드 변경이 있을 때마다 코드를 구축, 테스트, 배포하는 서비스, AWS CodePipeline을 사용하여 파이프라인을 생성할 것입니다. 귀하의 GitHub 계정, Amazon Simple Storage Service (S3) 버킷, 또는 AWS CodeCommit 리포지토리를 샘플 앱의 코드에 대한 소스 위치로 사용할 것입니다. 또한 AWS Elastic Beanstalk를 샘플 앱에 대한 배포 대상으로 사용할 것입니다. 완료된 파이프라인은 샘플 앱이 포함된 소스 리포지토리에 대한 변경을 감지한 다음 자동으로 실시간 샘플 앱을 업데이트할 수 있습니다.
연속 배포의 경우, 수정 버전이 개발자의 명시적 승인 없이 자동으로 프로덕션 환경에 배포됩니다. 즉, 이를 통해 전체 소프트웨어 릴리스 프로세스가 자동화됩니다.
이 자습서에서 수행하는 모든 것은 프리 티어에 해당합니다.
AWS 리소스 관리
Console 로그인연속 배포 파이프라인은 샘플 코드를 배포할 가상 서버 또는 Amazon EC2 인스턴스를 포함한 대상 환경이 필요합니다. 파이프라인을 생성하기 전에 이 환경을 준비할 것입니다.
a. 이 자습서의 경우 EC2 인스터스를 설정하고 구성하는 프로세스를 간소화하기 위해, AWS Elastic Beanstalk를 사용하여 샘플 환경을 실행할 것입니다. Elastic Beanstalk을 사용하면 본인이 직접 가상 서버를 실행, 구성 또는 운영할 필요 없이 웹 애플리케이션을 쉽게 호스트할 수 있습니다. Elastic Beanstalk가 자동으로 인프라(예: 가상 서버, 로드 밸런서 등)를 프로비저닝 및 운영하고 애플리케이션 스택(예: OS, 언어 및 프레임워크, 웹 및 애플리케이션 서버 등)을 제공합니다.
b. 드롭다운 메뉴에서 PHP를 선택한 다음 지금 시작하기를 클릭합니다.
참고: 전에 Beanstalk 애플리케이션을 생성한 경우, 오른쪽 상단 모서리에 있는 새 애플리케이션 생성을 클릭합니다. 애플리케이션에 이름을 지정하고 새로운 웹 서버 환경을 생성합니다. 플랫폼으로 PHP를 선택하고 환경 유형으로 단일 인스턴스를 선택합니다. 인스턴스에 대한 원격 로그인을 계획 중인 경우 키 페어를 선택합니다. 그렇지 않은 경우, 남아있는 옵션에 대해 기본값을 그대로 사용하고 연속 배포 파이프라인에 대한 환경을 생성합니다.
c. Elastic Beanstalk는 애플리케이션을 배포할 샘플 환경을 생성하기 시작합니다. 그리고 Amazon EC2 인스턴스, 보안 그룹, Auto Scaling 그룹, Amazon S3 버킷, Amazon CloudWatch 경보 및 애플리케이션을 위한 도메인 이름을 생성합니다.
참고: 이 작업을 완료하는 데 몇 분이 걸릴 수 있습니다.
이 단계에서는 샘플 앱 코드의 사본을 검색하고 코드를 호스트할 소스를 선택합니다. 파이프라인이 소스에서 코드를 가져온 다음 코드에 대한 작업을 수행합니다.
다음 세 옵션 중 하나를 소스로 사용할 수 있습니다: GitHub 리포지토리, Amazon S3 버킷 또는 AWS CodeCommit 리포지토리. 기본 설정을 선택하고 아래 단계를 따릅니다.
이 단계에서는, 소스 및 배포라는 2가지 작업으로 간단한 파이프라인을 생성 및 구성합니다. 소스 리포지토리 및 배포 환경의 위치와 함께 CodePipeline을 제공합니다.
a. 여기를 클릭하여 AWS CodePipeline 콘솔을 엽니다.
- 시작 페이지에서 파이프라인 생성을 클릭합니다.
- AWS CodePipeline을 처음 사용하는 경우, 시작 페이지 대신 소개 페이지가 나타납니다. 시작하기를 클릭합니다.
b. 1단계: 이름 페이지에서:
- 파이프라인 이름: 파이프라인의 이름 DemoPipeline을 입력합니다.
- 다음 단계를 클릭합니다.
참고: 파이프라인을 만든 후에는 해당 이름을 변경할 수 없습니다.
c. 2단계: 소스 페이지에서, 선택한 소스의 위치를 선택하고 아래 단계를 따릅니다.
d. 실제 연속 배포 파이프라인에는 코드가 컴파일되고 단위가 테스트되는 빌드 단계가 필요합니다. CodePipeline을 사용하면 기본 설정 빌드 공급자를 파이프라인에 연결할 수 있습니다. 하지만 이 자습서에서는 빌드 단계를 건너뜁니다.
- 3단계: 빌드 페이지에서 빌드 없음을 선택합니다.
- 다음 단계를 클릭합니다.
e. 4단계: 베타 페이지에서:
- 배포 공급자: AWS Elastic Beanstalk를 클릭합니다.
- 애플리케이션 이름: 첫 번째 Elastic Beanstalk 애플리케이션을 클릭합니다.
- 환경 이름: 기본 환경을 클릭합니다.
- 다음 단계를 클릭합니다.
참고: "Beta"라는 이름은 파이프라인의 첫 단계에 "Source"라는 이름이 지정된 것처럼 이 단계에 기본적으로 지정되는 이름입니다.
f. 5단계: 서비스 역할 페이지에서:
- 서비스 역할: 역할 만들기를 클릭합니다.
- 자동으로 생성되는 AWS-CodePipeline-서비스 역할을 설명하는 IAM 콘솔 페이지로 리디렉션됩니다. 허용을 클릭합니다.
- 역할이 생성되면 5단계: 서비스 역할 페이지로 돌아가며, AWS-CodePipeline-Service가 역할 이름에 표시됩니다. 다음 단계를 클릭합니다.
참고: AWS CodePipeline에서 처음으로 파이프라인을 만들 때만 서비스 역할을 생성하면 됩니다. 서비스 역할이 이미 생성되어 있는 경우에는 역할의 드롭다운 목록에서 이를 선택할 수 있습니다. 드롭다운 목록에는 계정에 연결된 모든 IAM 서비스 역할이 표시되므로, 기본값이 아닌 이름을 선택하는 경우 AWS CodePipeline용 서비스 역할임을 알 수 있도록 이름을 지정해야 합니다.
이 단계에서는 파이프라인을 시작합니다. 파이프라인이 생성되고 나면 자동으로 실행되기 시작합니다. 먼저, 파이프라인이 소스 위치에서 샘플 앱 코드를 감지하고 파일을 번들링한 다음 정의된 두 번째 단계로 이동합니다. 이 단계 동안, 파이프라인은 코드를 호스트할 EC2 인스턴스를 포함하는 Elastic Beanstalk에 코드를 전달합니다. Elastic Beanstalk는 EC2 인스턴스에 코드 배포를 처리합니다.
a. 6단계: 검토 페이지에서 정보를 검토하고 파이프라인 생성을 클릭합니다.
b. 파이프라인이 생성된 후, 파이프라인 상태 페이지가 나타나고 파이프라인이 자동으로 실행되기 시작합니다. 파이프라인이 각 작업을 수행할 때 진행 상황은 물론 성공 및 실패 메시지를 볼 수 있습니다.
파이프라인이 성공적으로 실행되었는지 확인하려면, 각 단계로 이동할 때 파이프라인의 진행 상황을 모니터하십시오. 각 단계의 상태는 아직 실행이 없음에서 진행 중으로 바뀐 다음 성공 또는 실패로 바뀝니다. 파이프라인은 몇 분 내로 첫 번째 실행을 완료해야 합니다.
c. 베타 단계에 대한 상태 영역에서 AWS Elastic Beanstalk를 클릭합니다.
d. AWS Elastic Beanstalk 콘솔이 배포 세부 정보와 함께 열립니다.
- 기본 환경이라고 불리는 이전에 생성한 환경을 클릭합니다.
e. 배포한 샘플 웹사이트를 보려면 페이지의 오른쪽 상단에 나타나는 URL을 클릭합니다.
이 단계에서는 샘플 코드를 수정하고 변경 사항을 리포지토리에 커밋합니다. CodePipeline이 업데이트된 샘플 코드를 감지한 다음 자동으로 Elastic Beanstalk를 통해 EC2 인스턴스에 배포를 시작합니다.
배포한 샘플 웹 페이지는 코드 배포를 자동화하는 서비스, AWS CodeDeploy를 참조한다는 점을 유념하십시오. CodePipeline에서는 CodeDeploy가 배포 작업을 위해 Elastic Beanstalk 사용을 대체합니다. 그럼, Elastic Beanstalk를 사용하여 샘플을 배포했음을 올바르게 진술하도록 샘플 코드를 업데이트합시다.
d. CodePipeline 콘솔의 파이프라인으로 돌아갑니다. 몇 분 후에, 소스가 파란색으로 바뀌어 표시되어야 합니다. 이는 파이프라인이 소스 리포지토리에 적용된 변경을 감지했음을 나타냅니다. 이렇게 되면, 파이프라인이 업데이트된 코드를 Elastic Beanstalk로 자동으로 이동합니다.
- 베타 단계에 대한 상태 영역에서 파이프라인 상태가 성공이라고 표시되면, AWS Elastic Beanstalk를 클릭합니다.
e. AWS Elastic Beanstalk 콘솔이 배포 세부 정보와 함께 열립니다. 기본 환경이라고 불리는 이전에 생성한 환경을 선택합니다.
f. 다시 샘플 웹사이트를 보려면 페이지의 오른쪽 상단에 나타나는 URL을 클릭합니다. 텍스트가 연속 배포 파이프라인을 통해 자동으로 업데이트되었습니다!
나중에 요금이 부과되지 않도록, 파이프라인, Elastic Beanstalk 애플리케이션 및 코드를 호스트하기 위해 설정한 소스가 포함되어 있고 이 자습서 전체에서 실행한 모든 리소스를 삭제할 것입니다.
a. 먼저, 파이프라인을 삭제합니다.
- 파이프라인 보기에서 편집을 클릭합니다.
- 삭제를 클릭합니다.
- 파이프라인의 이름을 입력한 후 삭제를 클릭합니다.
b. 두 번째로, Elastic Beanstalk 애플리케이션을 삭제합니다.
- Elastic Beanstalk 콘솔로 이동합니다.
- 작업을 클릭합니다.
- 그런 다음 환경 종료를 클릭합니다.
AWS CodePipeline을 사용하여 자동화 소프트웨어 릴리스 파이프라인을 성공적으로 생성했습니다! CodePipeline을 사용하여, GitHub, Amazon S3 또는 AWS CodeCommit을 애플리케이션 코드를 위한 소스 위치로 사용한 다음 코드를 AWS Elastic Beanstalk에 의해 관리되는 Amazon EC2 인스턴스에 배포하는 파이프라인을 생성했습니다. 코드 변경이 있을 때마다 파이프라인이 자동으로 코드를 배포합니다. 연속 배포 연습에 한 단계 더 가까이 접근했습니다!
이제 AWS CodePipeline을 사용하여 간단한 파이프라인을 생성하는 방법을 배웠으므로, 다음 리소스를 방문하여 더 자세히 알아볼 수 있습니다.
- 이 단계를 따라 4단계의 고급 파이프라인을 만들어 보십시오. 이 파이프라인은 소스에 대한 GitHub 리포지토리, 프로젝트를 빌드 및 테스트하기 위한 Jenkins 빌드 서버, 빌드된 코드를 스테이징 서버에 배포하기 위한 AWS CodeDeploy 애플리케이션을 사용합니다.
- 파이프라인 스타터 키트를 사용하여 Jenkins 빌드 서버로 4단계 파이프라인을 빠르게 실행하십시오.
- 지속적 전달에 대해 자세히 알아보십시오.