Github Action과 Code Pipeline 비교해보기

AWS Code Pipeline 과 Github Actions를 비교한 글 입니다
2022.11.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

안녕하세요 클래스메소드의 수재입니다.
보통 AWS 환경에서 CI/CD 환경을 구현하기 위해서 AWS Code 시리즈를 사용하는 방법을 AWS에서 안내하는 경우가 많습니다.
이 중 CI/CD의 전체적인 파이프라인을 관리하는 Code Pipeline 라는 서비스가 있습니다. 그리고 많은 엔지니어들이 이용하고 있는 Github에서도 Github Actions라는 CI/CD 서비스를 제공하고 있습니다.

이번에는 AWS Code Pipeline 과 Github Actions에 대하여 알아보고 비교해보도록 하겠습니다.

AWS Code Series에 대해

본문에 들어가기 전에 간단하게 AWS의 Code 시리즈에 대하여 알아보겠습니다.
현재 CI/CD에 관련된 Code 서비스는 다음과 같습니다.1 2

  • AWS Code Commit
    • 팀에서 코드를 공동으로 관리할 수 있는 코드 리포지토리 서비스
  • AWS Code Build
    • 코드의 컴파일 및 테스트를 진행한 후 배포를 준비하는 서비스
  • AWS Code Deploy
    • 준비가 된 파일을 대상에 배포하는 서비스
  • AWS Code Pipeline
    • 코드 빌드, 배포, 테스트 및 릴리스 등 CI/CD 의 전체적인 워크플로우를 관리하는 서비스

이러한 서비스들을 연계하여 CI/CD 환경을 구축할 수 있습니다.
이번 글에서는 이 중에서 전체적인 플로우를 관리하는 Pipeline에 대하여 알아보고 비교해보려 합니다.

Code Pipeline

AWS CodePipeline은 빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는 데 도움이 되는 완전관리형의 지속적 전달 서비스입니다.

소스의 커밋부터 배포까지 전체적인 워크플로우를 관리하는 서비스입니다.
다음과 같은 플로우로 프로세스가 진행됩니다.
개발자가 코드를 커밋하면 Pipeline이 변경 사항을 감지합니다. 변경 사항이 빌드 된 후 테스트가 구성되어 있다면 테스트도 진행합니다.
이후 스테이징 서버에서 코드를 테스트한 후 문제가 없다면 수동 승인을 대기합니다. 수동 승인도 완료된다면 프로덕션 환경에 배포가 진행됩니다.

개념은 대략 다음 이미지와 같습니다.

일부 액션은 결과물로 아티팩트를 작성하거나 아티팩트를 읽고 작업을 진행합니다. Pipeline이 생성되면 각 작업의 실행은 자동으로 트리거됩니다.
스테이지의 모든 작업이 문제없이 실행되면 다음 스테이지로 전환 됩니다.

Code Pipeline은 다른 Code 시리즈 뿐만 아니라 다양한 서드파티 제품들과도 통합하여 사용할 수 있습니다.
통합할 수 있는 서비스의 전체 목록은 공식 문서를 참고해주세요.

Pipeline 을 이용한 예는 다음과 같습니다.3

AWS 제공하고 있는 튜토리얼은 공식 문서를 참고하시는 걸 추천합니다.

AWS 내의 서비스이기 때문에 주 배포 대상은 AWS 의 서비스입니다.4

Github Actions

Github에서 제공하는 CI/CD 를 위한 서비스입니다.
Github 리포지토리에 풀 리퀘스트나 이슈 등 어떠한 이벤트(event)가 발생하면 자동으로 이를 감지하여 작업(jobs)을 실행하거나 반복합니다. 작업은 여러 개의 단계(step)를 따라 진행됩니다.
그리고 워크플로(workflow)라는 관리 단위 안에 이러한 작업이 한 개 이상 구성되어 있습니다.
각 작업은 각각의 러너(runner)에서 실행됩니다. 이미지로는 다음과 같습니다.

워크플로는 yaml 형식으로 정의하며 .github/workflows/ 디렉토리 아래에 저장합니다.

Github Actions를 사용한 아키텍쳐 예는 다음과 같습니다.5
Github Actions 는 모든 클라우드를 대상으로 사용할 수 있습니다.

비교

비교해보면 두 서비스 모두 CI/CD를 지원하고 있기 때문에 용도나 컨셉이 거의 비슷합니다.

GitHub Actions AWS CodePipeline
프리 티어(Linux) 플랜마다 다르므로 링크로 대체 매월 50분
파이프라인 비용 무료 파이프라인 당 월 $1.00
빌드 작업 비용 분당 $0.0166 분당 $0.0107
사용 가능한 빌드 환경 리눅스, 윈도우, macOS 리눅스, 윈도우
소스 코드 저장소 GitHub GitHub, Bitbucket, AWS CodeCommit, Amazon S3
배포 대상 대부분의 클라우드 서비스 주로 AWS. 다른 클라우드 제공업체에도 배포 가능
AWS 인증 GitHub Secrets에 IAM 사용자의 액세스 키를 저장하여 사용하는게 일반적8 IAM 역할을 사용. 액세스 키를 관리할 필요 없음

이 외에는 대부분의 개발자는 Github를 사용해본 경험이 있기 때문에 러닝커브가 조금 더 낮은 점도 있습니다.
개인적으로는 다음과 같은 기준으로 사용할 서비스를 나눌 수 있다고 생각했습니다.

  • 사용하는 코드 및 관련 리소스가 AWS에만 국한되어 있어야하는가?
  • CI/CD 작업에 필요한 스펙을 제공해주고 있는가?
  • Github는 어떤 플랜을 사용하고 있는가?
    • 예상되는 요금은 어디가 더 저렴한가?
  • 어느 정도의 러닝 커브를 감당할 수 있는가?

마무리

비슷한 두 서비스이기 때문에 확실히 이게 더 낫다 이런 점은 없지만 세세한 부분에서 차이가 있는 것을 확인할 수 있었습니다.
필요한 사양이나 기간을 확인하고 서비스를 도입하는 것을 추천합니다.

긴 글 읽어주셔서 감사합니다.
오탈자 및 내용 피드백은 언제나 환영합니다. must01940 지메일로 연락 주시면 감사합니다!


본 블로그 게시글을 보시고 문의 사항이 있으신 분들은
클래스메소드코리아 (info@classmethod.kr)로 연락 주시면 빠른 시일 내 담당자가 회신 드릴 수 있도록 하겠습니다 !


  1. 출처 
  2. 이 외에도 Code Star, Code Artifact 등 다양한 Code 시리즈가 있습니다. 
  3. 해당 아키텍쳐에 대한 상세한 설명은 공식 블로그를 참고해주세요. 
  4. 다른 클라우드 제공자를 대상으로도 사용할 수는 있습니다. 
  5. 해당 아키텍쳐애 대한 상세한 설명은 공식 블로그를 참고해주세요. 
  6. 4코어 리눅스의 경우 
  7. general1.medium 타입의 codebuild 요금 
  8. 혹은 AWS IAM OIDC를 이용하여 AWS IAM Role을 사용할 수 도 있습니다. 자세한 내용은 관련 기사를 참고해주세요.