Github Action 과 Docker 을 통한 CI/CD 배포 (1)

justlikesh·2024년 5월 11일
post-thumbnail

오늘은 Github Action 과 Docker 을 통한 CI/CD 수동배포, 자동배포 하면서 겪은 나의 경험을 여러 포스트를 통해서 처음부터 끝까지의 전 과정을 기록해볼 예정입니다. 먼저 CI / CD에 대해서 알아봅시다.

실제로 CI/CD 배포 프로세스는 매우 다양한 방법으로 진행할 수 있고 복잡한 프로세스를 통해 진행되기 때문에 설정을 제대로 하지 않거나, 프로세스 Flow를 제대로 이해하지 않는다면 굉장한 장애를 발생시킬 수 있습니다.

따라서 실제로 배포 프로세스를 잘 파악하고 있다면 배포 자동화 프로세스(CI/CD 프로세스)를 통해서 처음에 설정을 통해 편하게 배포를 할 수 있습니다.

이러한 배포 자동화를 CI/CD(Continuous Integration, Continuous Deployment) 라고 합니다.

CI/CD란?

CI (Continuous Integration)

지속적 통합 : 여러 개발자들이 협업을 하고 있는 경우 발생하는 '불일치'를 최소화 해주는 개념.
예를들어 master 브랜치에 PR 요청이 왔을때, 빌드, 테스트를 수행하여 코드 Qulity를 체크 할 수 있습니다.
CI System 종류 : Jenkins, Travis CI, GitHub Actions 가 대표적으로 유명합니다.

CD (Continuous Deployment)

지속적 배포 : 프로젝트의 변경사항을 가상 환경(AWS, IDC)에 배포하는것입니다.
배포의 자동화가 이루어지는 환경으로, 수동으로 배포해야하는 번거로움을 줄일 수 있고, 더 나아가 무중단 배포 환경까지 구성할 수있습니다.

CI/CD는 개발자라면 한 번쯤은 다들 들어봤을 만한 단어일 것입니다.

CI/CD는 애플리케이션 개발 단계부터 배포 때까지의 모든 단계를 자동화를 통해서 좀 더 효율적이고 빠르게 사용자에게 빈번히 배포할 수 있는 것을 말합니다.

CI/CD의 개념만을 두고 보자면 자동화와 직접적으로 관련이 있지는 않다. 하지만 그럼에도 자동화라는 키워드는 CI/CD라는 단어에 거의 항상 따라붙는다. 또한 CI/CD는 DevOps 엔지니어의 핵심 업무라고 불리기도 합니다.

CI / CD 툴 : Github Action 개념

CI/CD 툴로 유명한건 Github Action 혹은 Jenkins 가 있는데, Github Action 사용할 것입니다.

이유는 Jenkins 는 Jenkins 위한 서버를 우리가 따로 구축해야하는데 Github Action 은 Github 이 공짜제공
또 하나의 이유론 소스코드 중앙 관리를 위해 Github Repository 를 쓰는데 Github Action 과 호환성이 좋기때문입니다.

GitHub Actions를 사용하면 자동으로 코드 저장소에서 어떤 이벤트(event)가 발생했을 때
특정 작업이 일어나게 하거나
, 주기적으로 어떤 작업들을 반복해서 실행시킬 수도 있다.

  • 테스트 : 예를 들어, 누군가가 코드 저장소에 Pull Request 를 생성하게 되면
    • Github Action 을 통해 해당 코드 변경분에 문제가 없는지 각종 검사를 진행할 수 있고
  • 배포 : 어떤 새로운 코드가 기본 브랜치(master 또는 main)에 유입(push)되면
    • Github Action 을 통해 소프트웨어를 빌드(build)하고 상용 서버에 배포(deploy)할수도 있다.
  • 배치 : 뿐만 아니라 매일 밤 특정 시각에 그날 하루에 대한 통계 데이터를 수집시킬 수도 있다.

이쯤되면 궁금할수도있어서 정리해보자 그래서 GitHub Action이 뭔데?

Github Action 동작 원리

  • Event : 작업이 언제 실행되는지 시점 정의
  • Runner : Job 작업을 수행하는 가상머신(VM) 혹은 컨테이너(Container)
  • Job : 작업 처리 단위 = 소작업(Step) 집합
  • Step : 소작업 처리 단위 = Command(단순), Script(복잡) 혹은 Action
  • Action : 라이브러리같은 개념으로 다른 사람들이 만들어 올린 Script (재사용 및 중복 제거)

CI/CD 배포하기전 기본 개념에 대해서 알아보았습니다.
다음 포스트에는, 수동 절차 : Github Action 으로 CI + 개발자가 직접 CD 에대해서 알아보겠습니다.

profile
열심히 = 하기싫을때도 최선을 다하는것

0개의 댓글