본문 바로가기
공부 및 활동/heroku, django

AWS, action -> Elastic beanstalk와 codebuild -> Elastic beanstalk

by KChang 2021. 10. 5.

1. Github Action 소개

Github Action

  • github에서 공식적으로 제공하는 CI/CD 툴
  • 개발의 work flow를 자동화할 수 있게 도와주는 툴

CI/CD란?

CI(Continuous Integration) : 지속적 통합

  • 테스트, 빌드, Dockerizing, 저장소에 전달하는 것까지 프로덕션 환경으로 서비스를 배포할 수 있도록 준비하는 프로세스

CD(Continuous Delivery) : 지속적 전달

  • 저장소로 전달된 프로덕션 서비스를 실제 사용자들에게 배포하는 프로세스

 

Github Action의 코어

1) workflow

  • 자동화된 전체 프로세스. 하나 이상의 Job으로 구성되고, Event에 의해 예약되거나 트리거될 수 있는 자동화된 절차
  • Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장된다.
  • Github에게 YAML 파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행시킨다.

2) Event

  • Workflow를 트리거(실행)하는 특정 활동이나 규칙
    • 누군가가 커밋을 리포지토리에 푸시하거나 풀 요청이 생성될 때 Github에서 활동이 시작될 수 있다.

3) Job

  • 여러 Step으로 구성되고, 단일 가상 환경에서 실행된다. 다른 Job에 의존 관계를 가질 수도 있고, 독립적으로 병렬로 실행될 수도 있다.

4) Step

  • Job안에서 순차적으로 실행되는 프로세스 단위.
  • step에서 명령을 내리거나, action을 실행할 수 있다.

5) Action

  • job을 구성하기 위한 step들의 조합으로 구성된 독립적인 명령 (workflow의 가장 작은 빌드 단위)
  • workflow에서 action을 사용하기 위해서는 action이 step을 포함해야한다.
  • action을 구성하기 위해서 레포지토리와 상호작용하는 커스텀 코드를 만들 수도 있다.
  • 사용자가 직접 커스터마이징하거나, 마켓플레이스에 있는 aciton을 가져다 사용할 수도 있다.

6) Runner

  • Github Action Runner 애플리케이션이 설치된 머신, Workflow가 실행될 인스턴스

 

2. Elastic Beanstalk(빈스톡) 이란?

애플리케이션 설정, 배포, 관리를 빠르고 간단하게 지원해주는 개발자 풀 코스 서비스이다.

빈스톡, 빈즈톡으로 발음한다.

일반적으로는 빈스톡으로 사용한다.

현재 사용되고 있는 대부분의 웹기반 플랫폼을 제공한다.

애플리케이션 배포 및 버전 관리와 모니터링 구성을 자동화한다.

요약

Provisioning의 결정체

  • 인스턴스(EC2) 및 OS 설치
  • 웹애플리케이션 소프트웨어 구성
  • 오토 스케일링 구성
  • 로드 밸런서 구성
  • 업데이트 배포 및 버전 관리
  • 모니터링 관리 설정

==> 모두를 빠르게 쉽게 만들어주는 플랫폼 서비스이다.

지원되는 언어&플랫폼 : Go, Java, Tomcat, .NET, Node.js, PHP, Python, Ruby

 

빈스톡은 개발자에게 유용하다. 왜?

Provisioning : DevOps가 대세인 시대이지만, 개발자가 서버구성부터 OS 설치, 컨테이너 설치, 로그설정, 모니터링, 보안구성까지 모두 하기에는 부담스러운게 사실이다. 이를 클릭 몇 번 또는 명령어 몇 줄로 구성이 가능하다.

빠른 개발테스트와 배포 : 빨리 개발된 기능을 테스트 해보고 싶은데 EC2 생성부터 OS설치, JKD, Tomcat 등 모두 세팅하기에는 너무 비효율적이다.

 

빈스톡의 구성

  • Application과 Environment으로 구성
  • 빈스톡은 애플리케이션을 만들고 하위에 환경을 구성한다.
  • 하나의 애플리케이션에 2개이상 환경을 구성할 수 있다.
  • 애플리케이션
    • 인스턴스의 논리적인 집합, 하위 애플리케이션 버전의 관리 (애플리케이션의 재배포와 이전버전으로 복원이 가능)
    • 폴더의 개념과 유사
  • 환경
    • EC 인스턴스, 로드 밸런스, 오토스케일링 그룹, 보안 그룹의 집합체

 

Elastic Beanstalk 환경

1) 웹서버 환경

  • 일반적인 웹애플리케이션, HTTP 기반 API 서비스를 구성할 때 사용
  • 웹서버 환경

2) 워커 환경

  • Amazon SQS를 이용한 메세지기반 백그라운드에서 처리하는 특수 애플리케이션을 구성할 때 사용
  • 자료

3. AWS CodeBuild

클라우드상의 종합 관리형 빌드 서비스 => 소스 코드를 컴파일하는 단계부터 테스트 실행 후 소프트웨어 패키지를 개발하여 배포하는 단계까지 마칠 수 있는 완전관리형의 지속적 통합 서비스

CodeBuild

  • 소스 코드를 컴파일하고 단위 테스트를 실행하며 배포할 준비가 완료된 아티팩트를 생성한다.
  • 자체 빌드 서버를 프로비저닝, 관리 및 확장할 필요가 없다.
  • Apache Maven, Gradle 등과 같은 널리 사용되는 프로그래밍 언어 및 빌드 도구에 맞게 사전 패키지된 빌드 환경을 제공한다.
  • 빌드 환경을 사용자 지정하여 사용자 고유의 빌드 도구를 사용할 수도 있다.
  • 최대 빌드 요청 수에 맞게 자동으로 확장한다.

1) 완전 관리형

  • CodeBuild는 빌드 서버를 직접 설정하여 패치 및 업데이트를 적용하고 관리할 필요가 없다.

2) 온디맨드

  • CodeBuild 요구 사항을 충족하기 위해 요구에 따라 조정된다.
  • 사용한 빌드 시간만큼만 요금을 지불한다.

3) Out in 더 박스

  • CodeBuild는 널리 사용되는 프로그래밍 언어에 맞게 사전 구성된 빌드 환경을 제공한다.

AWS CodeBuild 빌드 시간

 

4. 그리고...

aws CI/CD 에 대한 영상 찾아본 결과

CodeBuild와 어떠한 연관관계가 있는 영역인 것 같다.

 

 

 

참고자료

댓글