홈 › CI/CD › 05 / 7

배포 자동화

섹션 7진행 0 / 7

5. 자주 하는 실수 (Tip)

❌ 실수 1. current 파일을 직접 덮어써 전환이 원자적이지 않음

파일을 지웠다가 새로 쓰는 사이에 재시작이 겹치면 중간 상태를 읽을 수 있습니다. 리눅스에서는 심볼릭 링크를 새로 만들고 mv 로 한 번에 바꾸는 방식이 더 안전합니다.

❌ 실수 2. 헬스체크 없이 재시작만 하고 성공으로 간주

재시작 명령의 종료 코드가 0 이어도 앱 내부가 정상인지는 알 수 없습니다. 재시작과 헬스체크는 항상 짝으로 둬야 합니다.

❌ 실수 3. 환경별 값을 코드에 하드코딩

DB 주소나 포트를 소스에 박아 두면 환경마다 빌드를 따로 해야 합니다. 설정은 항상 파일이나 환경변수로 분리합니다.

❌ 실수 4. 실패한 릴리스 폴더를 바로 삭제

문제 원인을 보기 전에 지우면 재현이 안 됩니다. 실패한 릴리스도 보관 기간 동안은 남겨 둡니다.

❌ 실수 5. 롤백 절차를 장애가 난 뒤에야 만듦

장애 중에는 침착하게 스크립트를 짤 여유가 없습니다. 롤백 명령은 배포 스크립트를 만들 때 같이 준비해 둡니다.

❌ 실수 6. 헬스체크가 앱 자체 상태만 확인

앱은 떠 있어도 DB 연결이 끊겼으면 서비스는 되지 않습니다. 헬스체크는 핵심 의존성까지 함께 확인해야 의미가 있습니다.

❌ 실수 7. stage 검증을 건너뛰고 바로 prod 배포

dev 에서만 확인한 코드는 prod 설정에서 다르게 동작할 수 있습니다. stage 를 prod 와 같은 구성으로 맞추고 반드시 거칩니다.

❌ 실수 8. 로컬에서만 테스트하고 서버 권한·경로 차이를 확인 안 함

로컬 스크립트가 성공해도 서버 계정 권한이 다르면 배포가 실패합니다. 실제 배포 전에는 권한과 경로를 서버 기준으로 점검합니다.

❌ 실수 9. systemd 서비스에 Restart=on-failure 를 빠뜨림

이 설정이 없으면 앱이 죽어도 자동으로 다시 뜨지 않습니다. 운영 서비스에는 기본으로 넣습니다.

❌ 실수 10. 승인 없이 prod environment 에 자동 배포 트리거

push 한 번으로 바로 prod 에 배포되면 실수 하나가 바로 서비스 장애가 됩니다. prod 는 반드시 승인 단계를 거치게 설계합니다.