Github Actions으로 CICD 구축하기 (1) - 시스템 아키텍처와 필요한 개념 정리

2024. 8. 24. 01:24·Devops/CICD
반응형

시스템 아키텍처

위의 이미지는 이번 프로젝트의 시스템 아키텍처이다.

 

1. 서버를 하나만 생성한 이유

돈을 절약하기 위함이다. AWS에서 서버로 나가는 비용을 절감하기 위해 서버를 하나만 사용하였다. (서버 운영 2개부터는 유료이다💸) 때문에 한 서버에 프론트/백엔드 프로젝트를 배포하였고, nginx로 프록시를 설정하여 접근 포트를 달리 하였다.

 

2. 백엔드에 도커를 사용하는 이유

한 서버로 두개의 프로젝트를 배포하기 위해, 프로젝트 환경이 구별되어야 하는 필요성을 느꼈다. 또, 프로젝트를 진행하며 팀원들 간 개발 환경이 달라 충돌이 일어나는 경우가 있어 도커를 사용하기로 결정하였다.

 

3. 프론트는 도커를 사용하지 않는 이유

돈을 절약하기 위해 프리티어 서버로 생성하였다. 프리티어 서버 성능이 두개의 도커 컨테이너를 실행하기에는 어려움이 있어 프론트 프로젝트는 정적 빌드 파일로 배포하였다.

 


CI/CD?

  • CI(Continuous Integration) :
    지속적인 통합
    지속적으로 변화하는 요구사항에 대해 개발을 진행하고, 완료되면 이를 테스트하고 이상이 없으면 레퍼지토리에 이를 병합하는 행위를 자동화하는 것
  • CD(Continuous Delivery or Continuos Deployment) :
    지속적인 서비스 제공혹은 지속적인 배포
    성공적으로 병합된 내역을 사용자가 사용할 수 있는 배포환경까지 지속적으로 릴리즈하는 행위를 자동화하는 것을 말합니다.

CI/CD 대표적인 도구로는 Jenkins, Bamboo 등이 있으나 프로젝트에 당장 적용하기 위해 쉽게 학습할 수 있고 구현이 간단한 Github actions 를 쓰기로 하였다.

 

 

 


Github Actions?

github에서 공식적으로 제공하는 CI/CD 툴.

별도의 설치가 필요 없고, github 마켓플레이스를 통해 action을 가져다 사용할 수도 있다.

모든 github 이벤트에 대한 작업을 제공하고, 모든 환경과 호환하며 다양한 언어와 프레임워크를 지원한다.

주요 개념 5개

  • Workflow
    자동화된 전체 프로세스. 하나 이상의 Job으로 구성되고, Event에 의해 예약되거나 트리거될 수 있는 자동화된 절차를 말한다.
    Workflow 파일은 YAML으로 작성되고, Github Repository의 .github/workflows 폴더 아래에 저장된다. Github에게 YAML 파일로 정의한 자동화 동작을 전달하면, Github Actions는 해당 파일을 기반으로 그대로 실행시킨다.
  • Event
    Workflow를 트리거(실행)하는 특정 활동이나 규칙. 예를 들어, 누군가가 커밋을 리포지토리에 푸시하거나 풀 요청이 생성 될 때 GitHub에서 활동이 시작될 수 있다.
  • Job
    Job은 여러 Step으로 구성되고, 단일 가상 환경에서 실행된다. 다른 Job에 의존 관계를 가질 수도 있고, 독립적으로 병렬로 실행될 수도 있다.
  • Step
    Job 안에서 순차적으로 실행되는 프로세스 단위. step에서 명령을 내리거나, action을 실행할 수 있다.
  • Action
    job을 구성하기 위한 step들의 조합으로 구성된 독립적인 명령. workflow의 가장 작은 빌드 단위이다. workflow에서 action을 사용하기 위해서는 action이 step을 포함해야 한다. action을 구성하기 위해서 레포지토리와 상호작용하는 커스텀 코드를 만들 수도 있다.

Workflow 작성 예시

# https://help.github.com/en/actions/automating-your-workflow-with-github-actions/configuring-a-workflow
name: Greet Everyone # workflow name
on: [push] # 이벤트 발생 조건. (,로 나눠서 여러개 작성 가능)

jobs: # 하위에 어떤 Job을 수행할 지 적는다.
  build:
    name: Greeting # job name

    runs-on: ubuntu-latest # job을 수행할 runner가 어떤 os를 사용할 것인지
    steps:
      - name: Hello world # step name
        uses: actions/hello-world-javascript-action@v1
        with:
          who-to-greet: 'Mona the Octocat'
        id: hello

      - name: Echo the greeting's time
        run: echo 'The time was ${{ steps.hello.outputs.time }}.'

 

 

 

 

 

 

 

 

더보기

참고

https://jinmay.github.io/2020/05/13/git/github-action-syntax/

https://velog.io/@ggong/Github-Action%EC%97%90-%EB%8C%80%ED%95%9C-%EC%86%8C%EA%B0%9C%EC%99%80-%EC%82%AC%EC%9A%A9%EB%B2%95

https://www.youtube.com/watch?v=iLqGzEkusIw&themeRefresh=1

728x90
반응형

'Devops > CICD' 카테고리의 다른 글

Github Actions으로 CICD 구축하기 (3) - React 빌드 파일 배포  (0) 2024.09.03
Github Actions으로 CICD 구축하기 (2) - Spring boot, Docker  (0) 2024.08.24
'Devops/CICD' 카테고리의 다른 글
  • Github Actions으로 CICD 구축하기 (3) - React 빌드 파일 배포
  • Github Actions으로 CICD 구축하기 (2) - Spring boot, Docker
settong
settong
    250x250
  • settong
    개 발 자 국
    settong
  • 전체
    오늘
    어제
    • 전체보기 (202)
      • Computer Science (50)
        • Network (7)
        • Operating System (18)
        • Data Structure (9)
        • Database (11)
        • Algorithm (5)
      • Language (17)
        • Java (17)
        • Javascript (0)
        • Python (0)
      • Devops (20)
        • AWS (0)
        • Naver Cloud (16)
        • CICD (3)
        • 웹 서버 관리 (1)
      • Front (0)
        • React (0)
      • Backend (5)
        • Spring (5)
      • 코딩 테스트 정복기 (110)
        • 백준 (51)
        • 프로그래머스 (53)
        • 기타 (6)
      • etc (0)
      • 경제 상식 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    집합
    Network
    백준
    백트래킹
    github actions
    DFS
    다익스트라
    벨만포드
    BFS
    분할정복
    다이나믹프로그래밍
    ncp200
    lcs
    프로그래머스
    ncp202
    ncp
    해시
    Spring Boot
    CI/CD
    완전탐색
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
settong
Github Actions으로 CICD 구축하기 (1) - 시스템 아키텍처와 필요한 개념 정리
상단으로

티스토리툴바