이 자습서에서는, 실시간 샘플 앱을 배포하는 자동화된 소프트웨어 릴리스 파이프라인을 생성하는 방법을 알아봅니다. 코드 변경이 있을 때마다 코드를 구축, 테스트, 배포하는 서비스, 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 리포지토리. 기본 설정을 선택하고 아래 단계를 따릅니다.

 

  • GitHub

    a. 자신의 GitHub 계정을 사용하려는 경우:

    (확대하려면 클릭)

  • Amazon S3

    a. Amazon S3을 소스로 사용하려는 경우, AWS GitHub 리포지토리에서 샘플 코드를 검색하여 컴퓨터에 저장한 다음 Amazon S3 버킷에 업로드합니다.

    (확대하려면 클릭)


    b. 소스 파일을 컴퓨터에 저장합니다.

    • aws-codepipeline-s3-aws-codedeploy_linux.zip 라는 이름의 파일을 클릭합니다.
    • 원시 텍스트 보기를 클릭합니다.
    • 샘플 파일을 로컬 컴퓨터에 저장합니다.

    (확대하려면 클릭)


    c. 여기를 클릭하여 Amazon S3 콘솔을 열고 Amazon S3 버킷을 생성합니다.

    • 버킷 만들기를 클릭합니다.
    • 버킷 이름: awscodepipeline-demobucket-variables와 같은 버킷에 대한 고유한 이름을 입력합니다.  Amazon S3에 있는 모든 버킷 이름은 고유해야 하므로, 예에 표시된 이름이 아닌, 사용자 고유의 이름을 사용하십시오.
    • 리전: 드롭다운에서 미국 표준과 같은 파이프라인을 생성할 리전을 선택합니다. 
    • [Create]를 클릭합니다.

    (확대하려면 클릭)


    d. 콘솔에 새로 생성된 버킷이 비어 있는 상태로 표시됩니다.

    • 속성을 클릭합니다.
    • 버전 관리를 확장하고 Enable 버전 관리 활성화 를 선택합니다. 버전 관리가 활성화되면 Amazon S3이 버킷의 모든 객체 버전을 저장합니다.

    (확대하려면 클릭)


    e. 이제 샘플 코드를 Amazon S3 버킷에 업로드합니다. 

    • 업로드를 클릭합니다.
    • 화면 지침에 따라 GitHub에서 다운로드한 샘플 코드가 포함된 zip 파일을 업로드합니다.

    (확대하려면 클릭)

  • AWS CodeCommit,

    a. AWS CodeCommit을 소스로 사용하려는 경우, AWS GitHub 리포지토리에서 샘플 코드를 검색하여 컴퓨터에 저장한 다음 AWS CodeCommit 리포지토리에 업로드합니다.

    (확대하려면 클릭)


    b. 소스 파일을 컴퓨터에 저장합니다.

    • aws-codepipeline-s3-aws-codedeploy_linux.zip. 이라는 이름의 파일을 선택합니다.
    • View Raw(원시 택스트 보기)를 선택합니다.
    • 샘플 파일을 로컬 컴퓨터에 저장합니다.

    (확대하려면 클릭)


    d. 여기를 클릭하여 AWS CodeCommit 콘솔을 열고 시작하기를 선택합니다.

    (확대하려면 클릭)


    e. 새 리포지토리 생성 페이지에서:

    • 리포지토리 이름:  PipelineRepo를 입력합니다.
    • 리포지토리 생성을 선택합니다.

    (확대하려면 클릭)


    f. 리포지토리에 연결한 다음 샘플 파일의 사본을 리포지토리에 푸시합니다.  지침은 AWS CodeCommit 리포지토리에 연결을 참조하십시오.

이 단계에서는, 소스 및 배포라는 2가지 작업으로 간단한 파이프라인을 생성 및 구성합니다. 소스 리포지토리 및 배포 환경의 위치와 함께 CodePipeline을 제공합니다.


a. 여기를 클릭하여 AWS CodePipeline 콘솔을 엽니다.

  • 시작 페이지에서 파이프라인 생성을 클릭합니다. 
  • AWS CodePipeline을 처음 사용하는 경우, 시작 페이지 대신 소개 페이지가 나타납니다. 시작하기를 클릭합니다.

(확대하려면 클릭)


b. 1단계: 이름 페이지에서:

  • 파이프라인 이름: 파이프라인의 이름 DemoPipeline을 입력합니다.
  • 다음 단계를 클릭합니다.

참고: 파이프라인을 만든 후에는 해당 이름을 변경할 수 없습니다.

(확대하려면 클릭)


c. 2단계: 소스 페이지에서, 선택한 소스의 위치를 선택하고 아래 단계를 따릅니다.

  • GitHub

    소스 공급자: GitHub

    • GitHub에 연결 섹션에서 Connect to GitHub에 연결을 클릭합니다.
    • 그러면 GitHub에 연결되는 새로운 브라우저 창이 열립니다. 로그인하라는 메시지가 표시되는 경우 GitHub 자격 증명을 제공합니다. 
    • 그리고 계정에 대한 애플리케이션 액세스를 승인하라는 요청이 나타납니다. 애플리케이션 승인을 선택합니다.

    (확대하려면 클릭)


    리포지토리 및 브랜치를 지정합니다.

    • 리포지토리: 드롭다운 목록에서 파이프라인의 소스 위치로 사용할 GitHub 리포지토리의 이름을 선택합니다. GitHub 계정에서 aws-codepipeline-s3-aws-codedeploy_linux라는 샘플 코드가 포함된 forked 리포지토리를 클릭합니다. 
    • 브랜치: 드롭다운 목록에서 사용하려는 브랜치, 마스터를 선택합니다.
    • 다음 단계를 클릭합니다.

    (확대하려면 클릭)

  • Amazon S3

    소스 공급자: Amazon S3.

    • Amazon S3 위치: 생성한 Amazon S3 버킷의 이름과 그 뒤에 해당 버킷에 복사한 샘플 파일의 이름(aws-codepipeline-s3-aws-codedeploy_linux.zip)을 입력합니다. 예를 들어, 버킷의 이름을 awscodepipeline-demobucket-variable이라고 지정한 경우 다음과 같이 입력할 수 있습니다: s3://awscodepipeline-demobucket-variable/aws-codepipeline-s3-aws-codedeploy_linux.zip.
    • 다음 단계를 클릭합니다.

    (확대하려면 클릭)

  • AWS CodeCommit

    소스 공급자: AWS CodeCommit.

    • 리포지토리 이름: AWS CodeCommit 리포지토리의 이름을 선택합니다. 
    • 브랜치 이름: 샘플 파일이 포함된 브랜치의 이름을 선택합니다.
    • 다음 단계를 클릭합니다.

    (확대하려면 클릭)


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를 사용하여 샘플을 배포했음을 올바르게 진술하도록 샘플 코드를 업데이트합시다.

  • GitHub

    a. GitHub에서 forked한 리포지토리의 고유한 사본을 방문합니다.

    • index.html을 엽니다.
    • 편집 아이콘을 선택합니다.

    (확대하려면 클릭)


    b. 30번째 줄에 있는 다음 텍스트를 복사하고 붙여넣어 웹페이지를 업데이트합니다: 

    GitHub에서 이 소스 애플리케이션을 검색하고 AWS Elastic Beanstalk를 사용하여 하나의 Amazon EC2 인스턴스에 배포한 파이프라인을 성공적으로 생성했습니다. 연속 배포 연습에 한 단계 더 가까이 접근했습니다!

    (확대하려면 클릭)


    c. 리포지토리에 변경 사항을 커밋.

    (확대하려면 클릭)

  • Amazon S3

    a. 바탕화면에서, 다운로드한 aws-codepipeline-s3-aws-codedeploy_linux.zip이라는 이름의 zip 파일로 이동하십시오.


    b. 다음 샘플 웹 앱 코드를 편잡합니다:

    • zip 파일에서 index.html을 압축 해제하고 선호하는 텍스트 편집기를 사용하여 엽니다. 
    • "축하합니다!" 뒤에 오는 헤더 텍스트를 업데이트하여 읽습니다:

    "Amazon S3에서 이 소스 애플리케이션을 검색하고 AWS Elastic Beanstalk를 사용하여 하나의 Amazon EC2 인스턴스에 배포한 파이프라인을 성공적으로 생성했습니다." 연속 배포 연습에 한 단계 더 가까이 접근했습니다!"

    • 업데이트된 index.html 파일을 다시 aws-codepipeline-s3-aws-codedeploy_linux.zip으로 복사하고 index.html의 이전 버전을 대체합니다.

    (확대하려면 클릭)


    c. 편집된 파일을 Amazon S3 버킷에 다시 업로드합니다:

    • 이전에 만든 S3 버킷으로 돌아갑니다. 
    • 업데이트된 aws-codepipeline-s3-aws-codedeploy_linux.zip 파일을 버킷에 업로드합니다. 

    참고: 처음에 S3 버킷을 생성할 때 버전 관리를 활성화했기 때문에, S3이 모든 버전의 파일을 복사본을 저장합니다.

    (확대하려면 클릭)

  • AWS CodeCommit

    a. aws-codepipeline-s3-aws-codedeploy_linux.zip.이라는 이름의 샘플 코드가 포함된 zip 파일로 이동합니다.


    b. 다음 샘플 웹 앱 코드를 편잡합니다:
     
    • zip 파일에서 index.html을 압축 해제하고 선호하는 텍스트 편집기를 사용하여 엽니다. 
    • 그런 다음 "축하합니다!" 뒤에 오는 헤더 텍스트를 업데이트하여 읽습니다:

    AWS CodeCommit에서 이 소스 애플리케이션을 검색하고 AWS Elastic Beanstalk를 사용하여 하나의 Amazon EC2 인스턴스에 배포한 파이프라인을 성공적으로 생성했습니다. 연속 배포 연습에 한 단계 더 가까이 접근했습니다!

    (확대하려면 클릭)


    c. 업데이트된 zip 파일을 커밋하고 CodeCommit 리포지토리에 푸시합니다.


d. CodePipeline 콘솔의 파이프라인으로 돌아갑니다. 몇 분 후에, 소스가 파란색으로 바뀌어 표시되어야 합니다. 이는 파이프라인이 소스 리포지토리에 적용된 변경을 감지했음을 나타냅니다. 이렇게 되면, 파이프라인이 업데이트된 코드를 Elastic Beanstalk로 자동으로 이동합니다.

  • 베타 단계에 대한 상태 영역에서 파이프라인 상태가 성공이라고 표시되면, AWS Elastic Beanstalk를 클릭합니다.

(확대하려면 클릭)


e. AWS Elastic Beanstalk 콘솔이 배포 세부 정보와 함께 열립니다. 기본 환경이라고 불리는 이전에 생성한 환경을 선택합니다.

(확대하려면 클릭)


f. 다시 샘플 웹사이트를 보려면 페이지의 오른쪽 상단에 나타나는 URL을 클릭합니다.  텍스트가 연속 배포 파이프라인을 통해 자동으로 업데이트되었습니다!

 

(확대하려면 클릭)

나중에 요금이 부과되지 않도록, 파이프라인, Elastic Beanstalk 애플리케이션 및 코드를 호스트하기 위해 설정한 소스가 포함되어 있고 이 자습서 전체에서 실행한 모든 리소스를 삭제할 것입니다.  


a. 먼저, 파이프라인을 삭제합니다.

  • 파이프라인 보기에서 편집을 클릭합니다. 
  • 삭제를 클릭합니다.
  • 파이프라인의 이름을 입력한 후 삭제를 클릭합니다.

(확대하려면 클릭)


b. 두 번째로, Elastic Beanstalk 애플리케이션을 삭제합니다.

  • Elastic Beanstalk 콘솔로 이동합니다. 
  • 작업을 클릭합니다.
  • 그런 다음 환경 종료를 클릭합니다.

(확대하려면 클릭)

  • Amazon S3

    c. 이 자습서용으로 S3 버킷을 생성한 경우 생성한 버킷을 삭제합니다.

    • S3 콘솔로 이동합니다. 
    • 버킷 이름을 마우스 오른쪽 버튼으로 클릭하고 버킷 삭제를 선택합니다. 
    • 확인 메시지가 나타나면 버킷 이름을 입력한 다음 삭제를 클릭합니다.

    (확대하려면 클릭)

  • AWS CodeCommit

    c. 이 자습서용으로 AWS CodeCommit 리포지토리를 생성한 경우 CodeCommit 콘솔로 이동하여 생성한 리포지토리를 삭제합니다.

    (확대하려면 클릭)


    c. 탐색 창에서 설정을 선택합니다.

    • 리포지토리 삭제를 클릭합니다.
    • 확인 창이 나타납니다. 리포지토리의 이름을 입력한 후 삭제를 클릭합니다.

    (확대하려면 클릭)

AWS CodePipeline을 사용하여 자동화 소프트웨어 릴리스 파이프라인을 성공적으로 생성했습니다! CodePipeline을 사용하여, GitHub, Amazon S3 또는 AWS CodeCommit을 애플리케이션 코드를 위한 소스 위치로 사용한 다음 코드를 AWS Elastic Beanstalk에 의해 관리되는 Amazon EC2 인스턴스에 배포하는 파이프라인을 생성했습니다. 코드 변경이 있을 때마다 파이프라인이 자동으로 코드를 배포합니다. 연속 배포 연습에 한 단계 더 가까이 접근했습니다!

이제 AWS CodePipeline을 사용하여 간단한 파이프라인을 생성하는 방법을 배웠으므로, 다음 리소스를 방문하여 더 자세히 알아볼 수 있습니다.

  • 이 단계를 따라 4단계의 고급 파이프라인을 만들어 보십시오. 이 파이프라인은 소스에 대한 GitHub 리포지토리, 프로젝트를 빌드 및 테스트하기 위한 Jenkins 빌드 서버, 빌드된 코드를 스테이징 서버에 배포하기 위한 AWS CodeDeploy 애플리케이션을 사용합니다.
  • 파이프라인 스타터 키트를 사용하여 Jenkins 빌드 서버로 4단계 파이프라인을 빠르게 실행하십시오.
  • 지속적 전달에 대해 자세히 알아보십시오.