"배포 입문 (7/7) — 자동 배포 파이프라인 구축: PR, 테스트, preview, production의 전체 흐름"
자동 배포의 핵심은 "사람이 버튼을 덜 누른다"가 아니다. 사람이 순서를 빼먹기 어려운 구조를 만드는 것이다.
핵심 요약
- 최소한의 안전한 배포 흐름은
branch -> pull request -> CI -> preview -> merge -> production이다. - preview와 production을 분리하면 "검토용 링크"와 "실사용 링크"가 섞이지 않는다.
- GitHub Actions는 테스트와 검증, Vercel이나 Railway는 실제 배포 지점으로 나누면 구조가 깔끔해진다.
- 혼자 개발할 때도 자동 배포 파이프라인이 필요한 이유는 속도보다 실수 방지와 복구 가능성 때문이다.
1. 왜 마지막에 자동 배포를 배우는가
입문자는 종종 자동 배포를 가장 먼저 배우고 싶어 한다. 하지만 그 순서는 위험하다. Git, GitHub, 배포 플랫폼의 역할을 모르고 CI/CD부터 시작하면 결국 YAML 파일만 복붙하게 된다.
자동 배포 파이프라인은 독립된 기술이 아니라, 앞선 모든 레이어를 하나의 흐름으로 묶는 설계다.
2. 최소 파이프라인의 구조
가장 작은 안전 파이프라인은 아래처럼 이해하면 된다.
feature branch 작업
-> pull request 생성
-> GitHub Actions 테스트 실행
-> preview deployment 확인
-> main 머지
-> production deployment
이 구조의 장점은 명확하다. 검증과 공개를 한 단계로 섞지 않는다. 먼저 확인하고, 그다음 올린다.
3. 각 단계는 무슨 역할을 하나
Branch
실험 공간이다. 메인 브랜치를 직접 흔들지 않는다.
Pull Request
변경을 검토 가능한 단위로 만든다. 혼자 작업하더라도 PR 설명을 쓰면 스스로의 의도를 점검하게 된다.
CI
테스트, 린트, 빌드 확인을 자동으로 돌린다. "로컬에서는 된다"를 최소한 한 번 더 검증한다.
Preview
실제 열린 링크에서 화면과 동작을 확인한다. UI나 라우팅 문제는 코드 리뷰보다 preview에서 더 빨리 잡힌다.
Production
검토가 끝난 변경만 실사용 주소로 보낸다.
4. GitHub Actions는 어디에 두면 좋을까
가장 보편적인 시작점은 GitHub Actions를 검증 레이어로 두는 것이다.
on:
pull_request:
branches: [main]
push:
branches: [main]
jobs:
verify:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test
- run: npm run build
이 워크플로는 직접 배포를 하지 않아도 충분히 가치가 있다. 머지 전과 머지 후 모두에서 "빌드 가능한 상태인가"를 확인해 주기 때문이다.
5. 플랫폼과의 연결 방식
플랫폼 연결은 보통 아래 둘 중 하나다.
Vercel
- branch push -> preview
mainmerge -> production
Railway
- selected branch push -> build/deploy
- 필요하면
Wait for CI로 Actions 성공 후 배포
즉, GitHub Actions는 검증, 플랫폼은 실행이라는 역할 분리를 하면 초보자도 구조를 이해하기 쉽다.
6. 혼자 개발할 때도 필요한 이유
팀이 없으면 PR도, 리뷰도, CI도 과하다고 느껴질 수 있다. 하지만 실제로는 혼자일수록 실수를 잡아 줄 외부 장치가 적기 때문에 자동화가 더 중요하다.
자동 배포 파이프라인은 아래 세 가지를 남긴다.
- 어떤 변경이 언제 production으로 갔는지
- 배포 전 어떤 검증이 통과했는지
- 문제가 생기면 어디로 돌아가야 하는지
속도를 조금 늦추는 대신, 배포 사고 비용을 크게 줄인다.
7. 입문자용 최소 운영 원칙
main은 직접 수정하지 않는다.- PR 없이 production으로 보내지 않는다.
- 테스트 또는 빌드 확인 없이 머지하지 않는다.
- preview와 production 환경 변수를 분리한다.
- 실패 시 직전 안정 버전으로 되돌릴 수 있게 이력을 남긴다.
이 다섯 줄이면 소규모 개인 프로젝트의 자동 배포 기준으로 충분히 강한 출발점이 된다.
참고 자료
- GitHub Docs, Understanding GitHub Actions — https://docs.github.com/en/actions/get-started/understand-github-actions
- GitHub Docs, Deploying with GitHub Actions — https://docs.github.com/en/actions/how-tos/deploy/configure-and-manage-deployments/control-deployments
- Vercel Docs, Deploying Git Repositories with Vercel — https://vercel.com/docs/git
- Railway Docs, Controlling GitHub Autodeploys — https://docs.railway.com/deployments/github-autodeploys
이 글은 배포 입문 시리즈의 7/7 편입니다. 시리즈 끝. 다시 1편으로 돌아가 흐름 전체를 한 번 더 보면 배포 구조가 훨씬 단단해진다.
댓글
댓글 쓰기