Technote

개발 워크플로우 실무

연재 로컬에서 프로덕션까지 8부 중 6부

배포 전략 셋 — rsync · 서버 git · 빌드 산출물

세 방식은 속도가 아니라 되돌리기 이야기로 갈립니다. "어떻게 올리나" 보다 "어떻게 되돌리나" 를 먼저 정하면 선택이 쉬워집니다.

배포 방식을 고를 때 대부분 “어떻게 올리나” 를 먼저 생각합니다. 순서를 뒤집는 편이 낫습니다 — “어떻게 되돌리나” 를 먼저 정하면 세 방식 중 어느 것이 이 프로젝트에 맞는지가 바로 드러납니다.

세 가지 배포 — 각각의 되돌리기 이야기가 다르고, 그 차이가 선택 기준이다

① rsync — 트리를 그대로 맞춘다

CI 나 로컬의 체크아웃을 서버 디렉터리에 그대로 맞추는 방식입니다. 서버에 필요한 것은 SSH 뿐이고, 배포된 트리가 소스와 어긋나 있으면 --delete 가 그것을 정리합니다.

rsync -az --delete --exclude-from=deploy-exclude.txt --dry-run ./ deploy@host:/srv/site/current/

두 가지를 반드시 지킵니다. --dry-run 을 먼저 돌려 무엇이 지워질지 봅니다. 그리고 제외 목록에 wp-content/uploads/ 와 wp-config.php 를 넣습니다 — 빠뜨리면 --delete 가 업로드 파일을 통째로 지웁니다. 이 두 줄이 rsync 배포에서 가장 값비싼 실수를 막아 줍니다.

되돌리기는 이전 리비전을 체크아웃해 같은 명령을 다시 도는 것입니다. 간단하지만 전환이 원자적이지 않습니다 — 파일이 하나씩 갱신되는 동안 방문자는 새 템플릿과 옛 클래스가 섞인 상태를 볼 수 있습니다.

② 서버에서 git — 가장 단순한 구성

ssh deploy@host 'cd /srv/site/current && git fetch --tags && git checkout v2026.09.05'

서버에 git 과 읽기 전용 배포 키만 있으면 됩니다. 되돌리기는 이전 태그로 checkout 하는 것이라 기록이 그대로 남고, 무엇이 배포됐는지 서버에서 바로 확인할 수 있습니다.

대신 두 가지 위험이 따라옵니다. 첫째, 서버의 작업 트리를 누군가 직접 고치면 다음 배포가 충돌로 멈춥니다 — 급할 때 서버에서 한 줄 고치는 습관과 이 방식은 공존하지 못합니다. 둘째, .git 디렉터리가 웹으로 노출되면 소스 전체가 유출됩니다. 웹서버에서 반드시 차단합니다.

③ 빌드 산출물 + 심링크 — 전환이 한 번에

어딘가에서 빌드한 결과를 릴리스 디렉터리로 올리고, current 심링크를 새 릴리스로 옮기는 방식입니다. 전환이 링크 하나이므로 중간 상태가 없습니다.

ssh deploy@host 'ln -sfn /srv/site/releases/20260905-1200 /srv/site/current'

-n 이 빠지면 안 됩니다. -n 없이 실행하면 ln 이 기존 심링크를 따라가서 그 대상 디렉터리 안에 새 링크를 만듭니다. 겉보기에 성공하고, 배포는 반영되지 않으며, 원인은 며칠 뒤에 발견됩니다.

wp-config.php 와 wp-content/uploads/ 는 릴리스 밖의 공유 디렉터리에 두고 각 릴리스에서 링크로 걸어 줍니다. 되돌리기는 심링크를 이전 릴리스로 되돌리는 것 하나이고, 이것이 세 방식 중 가장 빠릅니다.

어느 방식이든 배포 후에 남는 일

파일을 옮기는 것만으로 반영이 끝나지 않습니다. 캐시가 옛 코드를 붙잡고 있습니다.

배포 후 순서 — 파일만 바꾸고 여기서 멈추면 옛 코드가 계속 응답한다

OPcache 는 컴파일된 바이트코드를 들고 있고, 심링크 전환에서는 realpath 캐시가 옛 경로를 계속 가리킵니다. PHP-FPM 을 재적재하면 새 워커가 깨끗한 캐시로 시작합니다. 그다음 wp cache flush 로 오브젝트 캐시를, 마지막으로 페이지 캐시를 비웁니다.

배포와 서버 구성 전반은 서버 · 인프라 아카이브에서 이어지고, 재현 가능한 배포 구성을 처음부터 세우는 작업은 최적화 지원 사업에 포함돼 있습니다.

다음 회차

배포가 명령 한 줄이 됐다면, 그 앞에 자동 검사를 세울 차례입니다. 다음 회차는 워드프레스 프로젝트의 CI — 무엇을 현실적으로 자동 검사할 수 있는가입니다.

이 주제의 다른 글

노하우 목록으로

개발 워크플로우 심화

배포 전 디자인 QA 체크리스트

배포 후에 발견하는 디자인 문제의 대부분은 배포 전에 순서대로 확인하면 잡힙니다. 규칙 · 상태 · 실기기의 세 단계로 정리했습니다.

디자이너 3분 읽기

개발 워크플로우 심화

되돌릴 계획 없이 배포하지 않습니다

롤백은 버튼 하나가 아니라 코드와 데이터베이스 두 갈래이고, 되돌리는 순서가 있습니다. 그 순서를 배포 전에 적어 두는 것까지가 준비입니다.

디자이너 5분 읽기

₩270,000 · 신청하기