작업 리포지토리에 내용이 추가되거나 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 의 전체적 플로우 예시
- 클라이언트는 http://example.com 주소로 HTTP 요청을 보냅니다.
- Nginx는 이 요청을 받아서 내부에서 설정된 백엔드 서버로 이를 전달합니다.
- 백엔드 서버는 Nginx로부터 받은 요청을 처리하고, 결과를 Nginx에 다시 반환합니다.
- Nginx는 받은 응답을 클라이언트에게 전달하여 요청에 대한 응답을 완료합니다.
이러한 과정에서 클라이언트는 Nginx만을 대상으로 요청을 보내며, Nginx는 이 요청을 백엔드 서버로 전달하여 처리하는 역할을 수행
이렇게 함으로써 Nginx는 요청을 처리할 수 있는 여러 백엔드 서버들을 효과적으로 관리하고, 로드 밸런싱 등의 기능을 수행할 수 있음
Github Actions 작업순서
- EC2 생성
- EC2 Swap 메모리 4GB 할당
- 설정한 메모리 이상의 메모리가 필요할 때는 Swap 메모리 이용하여 Storage 를 마치 메모리처럼 사용 ( 가상 메모리 )
- NVM 설치 후 pm2 설치
- Nginx 설치 및 설정
- Github Runner 구성
- Github Action Workflow 구성 및 배포
Github Actions 전체 사이클
EC2 ( 웹 서버 ) 를 생성하고, EC2에 nvm, yarn 등 패키지 매니저들을 다운로드하고, pm2 에서 프로세스( e.g. npm start .. )를 설정하고, github action 으로 EC2 에서 build 가 이루어지고 pm2 에서 설정한 프로세스를 수행하면 이게 github action 의 최종 결과물이자 일반적인 서버가 돌아가는 사이클