github action을 이용해 CI/CD를 구현 후 EC2에 배포하기[1]

이성우·2024년 1월 1일
0

Project

목록 보기
1/8

프로젝트를 하던 중, github action을 이용해 CI/CD 를 구현하라는 미션을 받았습니다.
의욕은 항상 넘쳤지만, github만 알고, github action, CI/CD 둘 다 하나도 모르기 때문에
정리를 하면서 공부를 해보려고 합니다.

CI/CD란?

어플리케이션을 제작~배포까지의 단계를 "자동화"를 해 사용자에게
효율적이고 빠르게 빈번히 배포를 하는것

CI (Continuous Integration): 지속적인 통합

: 버그 수정 혹은 새로 만드는 기능들이
main repository에 주기적으로 build되고,
테스트가 되어 merge 되는것

  • merge 후에 build가 정상적으로 되는지 확인
  • build가 된다면 Test를 돌려본다

-> merge 후에 전부 정상적이라면 초록불
-> 오류가 있다면 빨간불

장점:

  • 개발 생산선 향상
  • 버그 수정 용이 (문제점을 빠르게 발견)

CD(Continuous Delivery/Deployment): 지속적인 제공/배포

-CI를 통해서 주기적으로 merge된 코드의 변경사항들이
자동으로 build후 test를 통과하면 배포할 준비과정을 거치는데,
준비 된 release를 점검하는 과정에서, 수동적으로 점검을 한다면 Continuous Delivery,
자동적 점검 후, 배포를 한다면 Continuous Deployment

CI/CD를 구현하기 위해서는 보통 툴을 사용하는데,
Jenkins, Github Action이 있습니다.

저는 그 중, Github Action을 통해서 CI/CD를 설계하려고 합니다.

EC2란?

Elastic Compute Cloud
: EC2는 AWS에서 제공하는 서비스로,
컴퓨터를 통째로 빌려주는 컴퓨터 임대 서비스를 의미한다

  • 원격으로 빌려주며, 필요가 없으면 언제든지 사용을 중단 할 수 있음

EC2.pem 이란 서버의 비밀번호라고 생각하면 될 거 같다.
보안이 굉장히 중요하기 때문에, 우리가 일반적으로 생각하는 비밀번호가 아닌,
pem 파일로 키페어를 제공해준다.

즉, pem파일 = EC2의 비밀번호

인스턴스란? => 내가 빌린 컴퓨터를 뜻함

구글링을 통해 찾아본 결과,

출처: https://www.youtube.com/watch?v=UF2Giz9PE-E&t=482s

위와 같은 과정을 통해 CI/CD를 구축하는걸 찾아볼 수 있었다.
그림을 설명해보자면,
1. 깃허브로 소스코드를 push or pull request merge 를 하면
2. github action에서 test/build를 한 후, jar 파일 생성
3. 생성된 jar 파일을 압축하여 S3에 업로드
4. CodeDeploy에 배포 요청을 함
5. CodeDeploy에서 S3로부터 EC2로 파일을 옮기고
이를 실행해 spring boot 서버 실행

다음 포스팅에서는 이 과정을 이제 실제로 구축해보자

(수정)
AWS 계정을 프로젝트 리더분들에게만 공유하기로 했고,
요즘에 Docker를 많이 쓰는 추세라고 하셔서
S3를 통한 CodeDeploy를 쓰는 대신에 Docker를 통해서
CI/CD를 구축하기로 결정했습니다.

profile
이성우

0개의 댓글