Spring 심화 (CI/CD)

KimGwangmin·5일 전

CI/CD란

CI: 개발된 코드를 자동으로 빌드/테스트 (무결성 검증)
CD: 완성된 앱을 실제 환경에 자동으로 배포

CI (Continuous Integration)

지속적인 통합
작업한 코드를 지속적으로 빌드 및 테스트하여 레포지토리에 통합(merge)하는 것

CD (Continuous Deployment)

지속적인 배포
통합된 코드를 지속적으로 릴리스하여 운영 환경에 배포(deploy)하는 것

  • Continuous Delivery라고도 쓰인다

ECR (Elastic Container Registry)

AWS에서 제공하는 Docker 이미지 저장소

  • 한 쪽에서 이미지 push, 다른 쪽애서 pull하여 실행
  • Docker Hub 등 외부 저장소를 사용할 때와 달리, 별도의 인증(로그인) 없이 이미지를 가져올 수 있다. (IAM으로 권한 관리)
  • 기존 실습: .jar를 직접 EC2로 옮김
  • 실무: Docker 이미지를 통해 배포
  • Docker 이미지 전용 S3라고 생각해도 된다.
    • 도커 이미지 전용 저장소가 없다면, S3에 이미지를 올리고 그걸 EC2에서 가져다 사용하는 방식도 가능할 것이다.

사실 ECR이 내부적으로는 S3와 같다. (S3를 래핑해서 도커 이미지 전용으로 만든 것)

Github Actions

코드 push를 트리거로 자동으로 무언가를 실행하도록 하는 도구
빌드/배포 자동화 가능

  • 로컬에서 ./gradlew bootJar 실행
  • docker build 실행
  • docker tag 실행
  • ECR 로그인
  • docker push 실행

Github Actions를 사용하면 항상 일관된 절차로 실수 없이 테스트 및 배포를 진행할 수 있다.

코드를 push하면, GitHub Actions에서 자동 테스트, 빌드, Docker Image 생성, ECR에 Docker Image push까지 자동으로 이루어지도록 할 수 있다.

핵심 용어

  • Workflow: 자동화 작업 전체를 정의한 파일
  • Job: 워크플로우 안에서 독립적으로 실행되는 작업 단위
  • Step: 잡 안에서 순서대로 실행되는 명령어
  • Runner: 실제로 명령어를 실행하는 서버(Github 제공)

실행 흐름

  1. 코드 push
  2. GitHub이 Workflow 파일 발견
  3. Runner (임시 서버) 생성
  4. Job 시작 (Step 순서대로)
  5. 결과 리포트 (성공/실패)
  6. Runner 삭제

0개의 댓글