[Github Actions]

JAMEe_·2024년 5월 7일

배포

목록 보기
2/6

작업 리포지토리에 내용이 추가되거나 Pull Request 시 작성한 워크플로우가 자동으로 동작할 수 있도록 도와줌

Github Action 의 주요 구성 요소

1. Workflow

  • 하나 이상의 작업을 수행하는 구성 가능한 자동화된 프로세스
  • 수동으로 실행하거나 지정된 Event 발생 시 자동으로 실행

2. Event

  • Workflow 를 실행시킬 수 있는 Github 이벤트
  • issue, label, pull Request, push 등...

3. Runner

  • Workflow 가 실행될 서버 환경
  • Ubuntu / Windows / macOS 서버를 제공하며,
    개인 서버 환경에서 실행하는것도 가능

Workflow 가 실행될 서버 환경은
AWS 에서 제공하는 컴퓨팅 플랫폼인
Amazon EC2 ( 클라우드 서버 ) 사용

PM2

  • 프로세스 단위로 작업 수행
  • node.js application 을 안정적으로 실행하기위한 process Manager
    nodejs 앱이 비정상 종료될 경우 자동으로 다시 실행

Nginx

  • 로드밸런서, 웹서버, 리버스 프록시 기능들을 제공
  • 사용자와 PM2 사이의 대리자 역할
  • Nginx 의 전체적 플로우 예시
    1. 클라이언트는 http://example.com 주소로 HTTP 요청을 보냅니다.
    2. Nginx는 이 요청을 받아서 내부에서 설정된 백엔드 서버로 이를 전달합니다.
    3. 백엔드 서버는 Nginx로부터 받은 요청을 처리하고, 결과를 Nginx에 다시 반환합니다.
    4. Nginx는 받은 응답을 클라이언트에게 전달하여 요청에 대한 응답을 완료합니다.

이러한 과정에서 클라이언트는 Nginx만을 대상으로 요청을 보내며, Nginx는 이 요청을 백엔드 서버로 전달하여 처리하는 역할을 수행
이렇게 함으로써 Nginx는 요청을 처리할 수 있는 여러 백엔드 서버들을 효과적으로 관리하고, 로드 밸런싱 등의 기능을 수행할 수 있음


Github Actions 작업순서

  1. EC2 생성
  1. EC2 Swap 메모리 4GB 할당
  • 설정한 메모리 이상의 메모리가 필요할 때는 Swap 메모리 이용하여 Storage 를 마치 메모리처럼 사용 ( 가상 메모리 )
  1. NVM 설치 후 pm2 설치
  2. Nginx 설치 및 설정
  3. Github Runner 구성
  4. Github Action Workflow 구성 및 배포

Github Actions 전체 사이클

EC2 ( 웹 서버 ) 를 생성하고, EC2에 nvm, yarn 등 패키지 매니저들을 다운로드하고, pm2 에서 프로세스( e.g. npm start .. )를 설정하고, github action 으로 EC2 에서 build 가 이루어지고 pm2 에서 설정한 프로세스를 수행하면 이게 github action 의 최종 결과물이자 일반적인 서버가 돌아가는 사이클

profile
안녕하세요

0개의 댓글