AWS(EC2, RDS, S3, Lambda)기본 지식과 EC2, Lambda의 차이
AWS CodeDeploy 사용법 (feat. EC2 배포, 실패 log 확인, 요금)
Github Actions CD: AWS EC2 에 Spring Boot 배포하기
CI/CD :
지속적 통합(continuous integration,CI)과 지속적 배포(continuous delivery, CD)가 결합한 환경
- CI/CD는 소프트웨어의 개발, 테스트와 배포를 모두 통합함으로써 소프트웨어 버그를 쉽게 찾아낼 수 있으며, 더 빠른 배포 주기를 가질 수 있게 만들어 줌
- 앱 개발 단계에 자동화를 적용하는 제공 방식
- 소프트웨어 제품을 신속하게 출시하는 동시에 새로운 기능과 수정 사항을
정기적으로 쉽게 구현
- 컴파일 코드를 컴파일
- 빌드 ⇒ java에서는 maven, gradle과 같은 빌드 도구를 이용하면 컴파일과 함께 소스코드 파일을 .jar(thymeleaf), .war(JSP) 와 같은 산출물로 변환
- 배포 서버에서 동작하도록 하여 상품(프로젝트)을 사용자들에게 공개하는 것이 배포(Deploy)
- CI (Continuous Integration)
- 개발을 진행하면서도 품질을 관리할 수 있도록 하는 것으로 여러 명이 하나의 코드에 대해서 수정을 진행해도 지속적으로 통합하면서 관리 가능
- CI를 적용하게 되면 각자의 개발자가 자신의 구현해야 할 기능을 구현
-> 완성이 되면 main(master) 브랜치와 통합하고 코드가 잘 빌드 확인 후, 올바르게 동작하는지 테스트하며 빌드 과정 중에 버그가 있다면 해결
- 개발자가 구현한 코드를 기존 코드와 병합
- 병합된 코드가 올바르게 동작하고 빌드되는지 검증.
⇒ 테스트 결과 문제가있다면 수정하고 병합 문제가 없다면 배포를 진행
- CD(Continuous Deployment)
- 지속적 통합(CI)을 거친 코드에 대해서 신뢰할 수 있고 바로 배포 가능
- CD는 지속적 배포로 소프트웨어가 항상 신뢰 가능한 수준에서 배포될 수 있도록 관리
- 지속적 제공(Continuous Delivery)-> CI를 통해서 새로운 소스코드의 빌드와 테스트 병합까지 성공적으로 진행되었다면, 빌드와 테스트를 거쳐 저장소에 업로드
- 지속적 배포에서는 지속적 통합을 통해 빌드한 소스코드를 테스트 가능한 알파나
베타 버전-> 테스트를 수행 -> 정식 버전으로 배포를 진행
- Github Action : 소프트웨어 workflow를 자동화할 수 있도록 도와주는 도구
Workflow의 대표적인 예
- Test Code 프로젝트 소스코드 테스트
- 배포 서버에 새로운 기능, 버전 등을 배포
- 기타 자동화하고 싶은 스크립트 주기적으로 데이터를 수집해 처리 Workflow는 하나의 Repo에 최대 20개까지 등록 가능 Workflow 안에 존재하는 Job은 6시간동안 실행될 수 있고, 초과시 자동으로 중지됨
Github Free는 Storage 한도 500MB, 월에 실행 시간 2,000분
Github Pro는 Storage 한도 1GB, 월에 실행 시간 3,000분
Github Action Core 개념
Github Action을 이해하기 위해서 알아야 하는 개념은 Workflow, Event, Job, Step, Action, Runner 등이 있음
- Workflow => deploy.yml
여러 Job으로 구성되고, Event에 의해 트리거 될 수 있는 자동화된 프로세스 최상위 개념 Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장