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는 널리 사용되는 프로그래밍 언어에 맞게 사전 구성된 빌드 환경을 제공한다.
4. 그리고...
aws CI/CD 에 대한 영상 찾아본 결과
CodeBuild와 어떠한 연관관계가 있는 영역인 것 같다.
참고자료
'공부 및 활동 > heroku, django' 카테고리의 다른 글
Android에서 Retrofit 적용할 때 (0) | 2021.10.10 |
---|---|
HTTP, 400 Error 발생 (0) | 2021.10.10 |
Heroku Server 배포(django에서 Heroku서버 배포) (0) | 2021.10.07 |
Heroku에서 발생한 Error (0) | 2021.10.04 |
Heroku, Django와 연동 (0) | 2021.10.04 |
댓글