카테고리 없음

CodePipeline이란

sangwoon 2021. 11. 19. 13:51

CodePipeline

AWS Codepipeline이란 빠르고 안정적으로 애플리케이션과 인프라의 업데이트를 위한 릴리스 파이프라인을 자동화할 수 있도록 서비스 형태로 제공되는 완전 관리형으로 지속적인 전달을 제공하는 서비스입니다.

그럼 릴리스 파이프라인에 대해 알아야합니다.

일단 파이프라인은 CI/CD일 것이며

그럼 릴리스는 무엇일까?

바로 

릴리스: 릴리스는 배포와 다르게 진짜 프로덕션으로 출시하는 것을 말합니다.

 

 

즉 애플리케이션(내가 보낼 코드를) 리포지토리에 제공하는 것을 완전 관리형으로 지속적인 전달을 하겠다는 소리이다.

릴리즈 모델: 릴리스 모델은 프로덕션에 올릴 모델을 말합니다.

 

사용자가 사전에 정의한 릴리스 모델을 기반으로 애플리케이션의 릴리스 프로세스의 빌드, 테스트, 배포 단계에 걸친 프로세스에 대해 자동화를 수행합니다.

 

 

AWS Codepipeline은 AWS CodeCommit, GitHub, Amazon ECR 또는 Amazon S3에서 바로 파이프라인에 대한 소스코드를 가져올 수 있으며, AWS  CodeBuild에서 빌드 단위 테스트를 실행할 수 있습니다.

 

트리거:어느 특정한 동작에 반응해 자동으로 필요한 동작을 실행한다는 것

 

 

AWS CodePipeline의 주요 기능과 기대 효과

 

첫 번째

지속적인 소스 코드 배포를 위한 워크플로우 모델링입니다. AWS Codepipeline은 소스 배포를 위한 프로세스 워크 플로우를 정의하고, 새로운 코드나 기능의 변경이 배포 프로세스에서 진행되는 방법을 모델링할 수 있습니다. 각 단계의 코드를 빌드하거나, 개발 환경에서 배포하는 등의 시퀸스로 구성되며, AWS Codepipeline에서는 그래픽 사용자 인터페이스를 통해 파이프라인과 해당 파이프라인의 다양한 단계 및 작업을 생성 구성 및 관리할 수 있습니다.

 

두 번째

AWS 서비스와의 통합입니다. AWS CodePipeline은 AWS codecommit, S3를 파이프라인에서 사용할 소스로 지정하여 소스코드를 가져올 수 있으며, AWS Codebuild와 통합하여 단위 테스트를 수행할 수 있습니다. 또한 AWS CodeDeploy,AWS Elastic Beanstalk, Amazon Elastic Container Servce(ECS) 또는 AWS Fargate를 사용하여 변경할 사항을 배포할 수 있습니다.

AWS cloudformaiton 템플릿을 이용하여 리소스를 업데이트하거나 삭제할 수 있습니다.

그리고 AWS serverless Application Model(AWS SAM)을 사용하여 AWS Lambda,Amazon API gateway  및 Amazon DynamoDB 와 같은 서버리스 애플리케이션에 대해 파이프라인을 적용할 수 있습니다.

 

세 번째 

타사 개발자 도구 및 사용자 점검 시스템과의 통합입니다. AWS codepipeline은 몇 번의 클릭만으로도 Github 와 jenkins같은 타사 개발자 도구를 배포 프로세스에서 원하는 단계에 통합할 수 있습니다.

이를 통해 소스 제어 ,빌드,테스트, 배포에 타사 도구를 사용할 수 있습니다.

 

네 번째

선언형 템플릿과 엑세스 제어입니다. AWS CodePipeline은 AWS IAM을 통해 누가 릴리스 워크플로를 변경 및 제어할 수 있는지 관리합니다.

IAM 사용자, IAM 역할, SAML 통합 디렉터리를 통해 사용자에게 엑세스 권한을 부여하여, 배포 프로세스에 대한 제어를 수행할 수 있습니다. 또한 배포 워크플로 및 해당 단계와 선언형 Json 문서를 통해 파이프라인 구조를 정의할 수 있습니다.

 

이외 장점

구분 내용
프로세스 자동화 -소프트웨어 릴리스 프로세스를 자동화하여 사용자에게 새로운 기능을 신속하게 제공합니다.
릴리스 프로세스 시각화 -소프트웨어 릴리스 프로세스에 대해 다양한 단계를 모델링할 수 있는 그래픽 사용자 인터페이스 제공
완전 관리형 서비스 -기존 툴과 시스템에 연결하는 완전 관리형 서비스

-소프트웨어 릴리스 프로세스를 즉시 시작 가능

-서버를 설치하거나 프로비저닝할 필요가 없는 완전 관리형 서비스
손쉬운 확장 -쉽게 확장 가능하며 특정 요구에 맞게 조정 가능

-릴리스 프로세스의 어느 단계에서든 기존 AWS  프러그인을 사용하거나 자신만의 사용자 지정 플러그인 생성 가능
높은 보안성 -IAM과 통합되어 프로젝트 구축에 세분화된 권한 할당 가능

 

코드 파이프라인의 구성요소

 

구분 내용
파이프라인  -S/W 변경 사항이 배포 프로세스의 적용 방법을 설명하는 워크플로우 구성한 것

-콘솔에서 파이프라인 생성 시 각 파이프라인당 S3 버킷에 폴더 저장

-파이프라인에서 배포 프로세스가 실행되면 각 폴더에 '아티팩트' 저장

-AWS 계정당 리전별 300개의 파이프라인 생성 가능
단계(stage) -codePipeline의 워크 플로우를 구분하는 단위로,수행 '작업'
분류의 기준

-각 '단계'는 고유한 이름을 가지며, 워크플로우 수행을 위한 '작업' 포함

-각 '단계'는 전 '단계'가 수행 완료되어야만 다음 '단계'로 넘어갈 수 있음

-'단계'는 하나의 '개정'만 처리할 수 있으며, 최소 하나의 '작업' 포함한다.
작업(Action) -파이프라인 실행의 최소 단위로 '단계' 구성 시 정의한 대로 지정된 순서 또는 연속, 병렬로 발생하며, 배포 단계는 하나 이상의 운영 서버에 코드를 배포하는 '배포 작업(Deploy Action)'이 포함 될 수 있다.

-모든 작업은 입력 아티팩트 또는 출력 아티팩트 유형을 가지고 있음
전환(Transition) -워크플로우의 한 단계에서 다음 단계로 이어지는 파이프라인 수행 절차를 이야기한다.

-CodePipeline 콘솔 내 전환 화살표는 처리 단계에 대한 순서 표기를 한다.

-전 단계가 완료가 되면 기본적으로 다음 단계가 실행 되지만, 다음 단계로 실행을 Disable할 수 있으며, Disable 해지 전까지 전환 중단

-파이프라인에 대한 실행 중지를 실행할 수 있는 가장 손쉬운 방법
승인 작업(approval aciton) -권한이 부여될 때까지(공인 IAM 사용자의 수동 승인을 통해) 다음 작업으로 전환되는 것 방지

-승인 작업 유효 기간(7일)
실패(failure) -'단계'의 '작업'이 성공적으로 완료되지 않고, 파이프라인 실행이 단계 다음 작업으로 전환되지 않을 때 발생
-실패가 되면 다음 단계로 가지 않음
아티팩트(Artifacts) -Codepipeline의 배포를 위한 작업 대상 파일 지정
-배포 프로세스 작업의 소스 및 파일 또는 배포 프로세스 작업을 출력물

 

 

 

진행 단계

 

첫 번째 단계

request단계,

고객으로부터 기존 프로그램에 대한 변경 요청이나 수정 사항에 대한 요구 사항을 수집하고, 이러한 아이티어 또는 버그 사랑에 대한 처리 요청을 받습니다.

 

두 번째 

Development 단계입니다. 고객의 요청 사항에 대해 개발팀에서 버그에 대한 수정과 새로운 아이디어를 반영합니다. 프로그램에 대한 수정 변경 작업을 진행하게 됩니다.

 

세 번째

Source 단계입니다. 개발자는 변경 사항에 대해서 소스 변경을 위해 commit을 수행합니다.

 

네 번째

build 빌드를 수행하는 단계입니다.

 

다섯 번째 

staging 단계입니다. 기능 테스트를 해주는 단계입니다.

produciton 다 했으면 실제 사람들이 사용하는 코드에 올려줍니다.