기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS 및 CodePipeline AWS CDK를 사용하여 CI/CD 파이프라인을 설정합니다.
작성자: Konstantin Zarudaev (AWS), Cizer Pereira (AWS), Lars Kinder (AWS), Yasha Dabas (AWS)
코드 리포지토리: CodePipeline CI/CD가 포함된 AWS | 환경: PoC 또는 파일럿 | 기술: DevOps |
워크로드: 오픈 소스 | AWS 서비스: AWS CodePipeline |
홈
지속적 통합 및 지속적 전달(CI/CD)을 통해 소프트웨어 구축 및 릴리스 프로세스를 자동화하면 반복 가능한 구축을 지원하고 사용자에게 새로운 기능을 신속하게 제공할 수 있습니다. 각 코드 변경을 쉽고 빠르게 테스트할 수 있으며 소프트웨어를 릴리스하기 전에 버그를 발견하고 수정할 수 있습니다. 스테이징 및 릴리스 프로세스를 통해 각 변경 사항을 실행하여 애플리케이션 또는 인프라 코드의 품질을 확인할 수 있습니다. CI/CD는 애플리케이션 개발 팀이 코드 변경을 더 자주, 안정적으로 제공할 수 있도록 지원하는 문화, 운영 원칙, 관행
이 패턴은 Amazon Web Service(AWS)에서 재사용 가능한 지속적 통합 및 지속적 전달(CI/CD) 파이프라인을 정의합니다. AWS CodePipeline 파이프라인은 AWS 클라우드 개발 키트 (AWS CDK) v2를
를 사용하면 AWS 관리 콘솔 인터페이스 CodePipeline, AWS 명령줄 인터페이스 (AWS CLI), AWS 또는 AWS SDK를 통해 소프트웨어 출시 프로세스의 여러 단계를 모델링할 수 있습니다. CloudFormation 이 패턴은 AWS CDK를 사용한 구현 CodePipeline 및 구성 요소를 보여줍니다. 라이브러리 구성 외에도 AWS CDK에는 AWS CDK 앱과 상호 작용하는 기본 도구인 툴킷(CLI 명령 cdk
)이 포함되어 있습니다. 다른 기능 중에서도 툴킷은 하나 이상의 스택을 CloudFormation 템플릿으로 변환하여 AWS 계정에 배포하는 기능을 제공합니다.
파이프라인에는 타사 라이브러리의 보안을 검증하기 위한 테스트가 포함되어 있으며, 지정된 환경에서 신속하고 자동화된 릴리스를 보장하는 데 도움이 됩니다. 검증 프로세스를 통해 애플리케이션의 전반적인 보안을 강화할 수 있습니다.
이 패턴의 목적은 배포하는 리소스가 모범 사례를 준수하도록 보장하는 동시에 CI/CD 파이프라인 사용을 가속화하여 코드를 배포하는 것입니다. DevOps 예제 코드를
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정
기본적인 이해는 다음과 같습니다.
AWS CDK
AWS CloudFormation
AWS CodePipeline
TypeScript
제한 사항
이 패턴은 AWS CDK를 TypeScript 용도로만 사용합니다. AWS CDK에서 지원하는 다른 언어는 다루지 않습니다.
제품 버전
다음 도구의 최신 버전을 사용하십시오.
AWS Command Line Interface(AWS CLI)
cfn_nag
git-remote-codecommit
Node.js
아키텍처
대상 기술 스택
AWS CDK
AWS CloudFormation
AWS CodeCommit
AWS CodePipeline
대상 아키텍처
파이프라인은 AWS CodeCommit 리포지토리 (SampleRepository
) 의 변경에 의해 트리거됩니다. 처음에는 아티팩트를 CodePipeline 빌드하고 자체 업데이트한 다음 배포 프로세스를 시작합니다. 그 결과로 생성되는 파이프라인은 솔루션을 세 개의 독립적인 환경에 배포합니다.
개발 — 활성 개발 환경에서의 3단계 코드 검사
테스트 — 통합 및 회귀 테스트 환경
Prod – 프로덕션 환경
개발 단계에 포함되는 세 단계는 린팅, 보안 및 유닛 테스트입니다. 이러한 단계는 병렬로 실행되어 프로세스 속도를 높입니다. 파이프라인이 작동하는 아티팩트만 제공하도록 하기 위해 프로세스의 한 단계가 실패할 때마다 파이프라인 실행이 중지됩니다. 개발 단계 배포 후 파이프라인은 검증 테스트를 실행하여 결과를 확인합니다. 성공하면 파이프라인은 배포 후 검증이 포함된 테스트 환경에 아티팩트를 배포합니다. 마지막 단계는 아티팩트를 프로덕션 환경에 배포하는 것입니다.
다음 다이어그램은 CodeCommit 리포지토리에서 수행된 빌드 및 업데이트 프로세스까지의 워크플로 CodePipeline, 세 가지 개발 환경 단계, 세 환경 각각에서의 후속 배포 및 검증을 보여줍니다.
도구
서비스
AWS Cloud Development Kit(AWS CDK)는 AWS 클라우드 인프라를 코드로 정의하고 프로비저닝하는 데 도움이 되는 소프트웨어 개발 프레임워크입니다.
AWS는 AWS CloudFormation 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, 전체 AWS 계정 및 지역의 수명 주기 전반에 걸쳐 리소스를 관리할 수 있도록 지원합니다. 이 패턴에서는 CloudFormation 템플릿을 사용하여 CodeCommit 리포지토리와 CodePipeline CI/CD 파이프라인을 생성할 수 있습니다.
CodeCommitAWS는 자체 소스 제어 시스템을 관리할 필요 없이 Git 리포지토리를 비공개로 저장하고 관리할 수 있는 버전 제어 서비스입니다.
CodePipelineAWS는 소프트웨어 릴리스의 여러 단계를 신속하게 모델링 및 구성하고 소프트웨어 변경 사항을 지속적으로 릴리스하는 데 필요한 단계를 자동화하는 데 도움이 되는 CI/CD 서비스입니다.
AWS Command Line Interface(AWS CLI)는 명령줄 쉘에서 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다.
기타 도구
cfn_nag는 템플릿의
패턴을 찾아 잠재적 보안 문제를 식별하는 오픈 소스 도구입니다. CloudFormation git-remote-codecommit CodeCommit Git을 확장하여 리포지토리에서 코드를 푸시하고 가져오는 유틸리티입니다.
Node.js 는 확장
가능한 네트워크 애플리케이션을 구축하기 위해 설계된 이벤트 기반 JavaScript 런타임 환경입니다.
코드
이 패턴의 코드는 GitHub AWS CodePipeline with CI/CD 프랙티스
모범 사례
AWS Identity 및 Access Management(IAM) 정책과 같은 리소스를 검토하여 해당 정책이 조직의 모범 사례에 부합하는지 확인합니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
macOS 또는 Linux에 도구를 설치합니다. | MacOS 또는 Linux를 사용하는 경우, 선호하는 터미널에서 다음 명령을 실행하거나 Linux용 Homebrew
| DevOps 엔지니어 |
AWS Cloud9를 사용하여 도구를 설치합니다. | AWS Cloud9
참고: AWS Cloud9에는 Node.js 및 npm이 설치되어 있어야 합니다. 설치 또는 버전을 확인하려면 다음 명령을 실행합니다.
| DevOps 엔지니어 |
AWS CLI를 설정합니다. | AWS CLI를 설정하려면, 운영 체제에 대한 지침을 사용합니다.
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
코드를 다운로드하거나 복제합니다. | 이 패턴에서 사용되는 코드를 가져오려면 다음 중 하나를 수행합니다.
복제된 리포지토리에서
나중에 새로 만든 AWS CodeCommit 리포지토리를 원격 오리진으로 사용하게 됩니다. | DevOps 엔지니어 |
AWS 계정에 연결합니다. | 임시 보안 토큰 또는 랜딩 존 인증을 사용하여 연결할 수 있습니다. 올바른 계정과 AWS 리전을 사용하고 있는지 확인하려면 다음 명령을 실행하십시오.
| DevOps 엔지니어 |
환경을 부트스트랩합니다. | AWS CDK 환경을 부트스트랩하려면 다음 명령을 실행합니다.
환경을 성공적으로 부트스트랩한 후에는 다음 출력이 표시되어야 합니다.
AWS CDK 부트스트래핑에 대한 자세한 내용은 AWS CDK 설명서를 참조하세요. | DevOps 엔지니어 |
템플릿을 합성합니다. | AWS CDK 앱을 합성하려면
다음과 같이 출력되어야 합니다.
| DevOps 엔지니어 |
CodePipeline 스택 배포. | 이제 CloudFormation 템플릿을 부트스트랩하고 합성했으니 배포할 수 있습니다. 배포를 통해 CodePipeline 파이프라인과 리포지토리가 생성되며, 이 CodeCommit 리포지토리가 파이프라인의 소스이자 트리거가 됩니다.
명령을 실행하면 CodePipeline 스택과 출력 정보가 성공적으로 배포된 것을 확인할 수 있습니다. 는 AWS 계정의 CodeCommit 리포지토리 이름을
| DevOps 엔지니어 |
원격 CodeCommit 리포지토리 및 브랜치를 설정합니다. | 배포에 CodePipeline 성공하면 AWS CodePipeline 콘솔에서
이 오류를 수정하려면 원격 오리진을
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
파이프라인을 활성화하려면 변경 사항을 커밋하십시오. | 초기 배포에 성공하면
| DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
Makefile을 사용하여 개발 프로세스를 실행합니다. |
| 앱 개발자, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS CDK 앱 리소스를 삭제합니다. | AWS CDK 앱을 정리하려면 다음 명령을 실행합니다.
부트스트래핑 중에 생성된 Amazon Simple Storage Service(Amazon S3) 버킷은 자동으로 삭제되지 않는다는 점을 유의해 주십시오. 삭제를 허용하는 보존 정책이 필요하거나 AWS 계정에서 수동으로 삭제해야 합니다. | DevOps 엔지니어 |
문제 해결
문제 | Solution |
---|---|
템플릿이 예상대로 작동하지 않습니다. | 문제가 발생하여 템플릿이 작동하지 않으면 다음 사항을 확인해야 합니다.
|