롤백 절차
배포 후 문제 발생 시 이전 버전으로 복구하는 방법입니다.
빠른 롤백
make rollback NAME=myapp
바로 이전 릴리즈로 롤백됩니다.
특정 버전으로 롤백
# 릴리즈 목록 확인
make release-list NAME=myapp
# 특정 버전으로 배포
make deploy NAME=myapp VERSION=251216-1200
롤백 원리
심볼릭 링크 변경으로 즉시 롤백:
# 현재 상태
live/myapp → releases/myapp/251218-1400
# 롤백 후
live/myapp → releases/myapp/251217-0900
왜 빠른가?
파일 복사 없이 심볼릭 링크만 변경하므로 수 초 내 완료됩니다.
롤백 시 주의사항
DB 마이그레이션
마이그레이션 롤백 불가
이미 적용된 마이그레이션은 자동으로 롤백되지 않습니다.
해결 방법:
- 새 마이그레이션으로 수정
- 수동 롤백 (
php artisan migrate:rollback) - DB 백업에서 복원
캐시/세션
롤백 후 캐시 클리어:
make shell NAME=myapp
php artisan cache:clear
php artisan config:clear
롤백 체크리스트
- 문제 증상 파악
- 릴리즈 목록에서 안정 버전 확인
- 롤백 실행
- 서비스 정상 확인
- 원인 분석 후 수정
비상 롤백 (수동)
Makefile이 동작하지 않을 경우:
# 심볼릭 링크 직접 변경
cd live
rm myapp
ln -s ../releases/myapp/251216-1200 myapp
# 웹 서버 재시작 (필요시)
sudo systemctl reload nginx
예방 조치
배포 전 백업
make backup NAME=myapp
make release NAME=myapp
make deploy NAME=myapp
스테이징 테스트
프로덕션 배포 전 스테이징 환경에서 테스트.
릴리즈 유지
최소 3-5개 이전 릴리즈 유지:
make release-clean NAME=myapp KEEP=5