인프라 담당 없이 배포하는 현실적인 방법
처음부터 복잡한 인프라를 구성할 필요가 없습니다. 서버 한 대와 프로세스 관리자면 상당한 규모까지 버팁니다.
최소 구성
- 리버스 프록시 — 도메인과 SSL 처리
- 프로세스 관리자 — 죽으면 다시 띄우기
- 데이터베이스 — 같은 서버 또는 관리형
- 백업 — 자동, 서버 밖으로
- 로그 — 회전 설정 포함
SSL은 자동 갱신을 걸어두세요
무료 인증서는 유효기간이 짧습니다. 자동 갱신이 걸려 있지 않으면 어느 날 갑자기 접속이 안 됩니다.
갱신 실패 알림까지 설정해 두는 것이 안전합니다.
배포는 되돌릴 수 있어야 합니다
새 버전이 문제를 일으켰을 때 몇 분 안에 되돌릴 수 있는지가 중요합니다. 이전 버전을 남겨두는 것만으로도 충분한 경우가 많습니다.
데이터베이스 변경은 되돌리기 어려우므로 따로 관리해야 합니다.
배포 전 구문 검사만 돌려도 사고의 상당수가 걸러집니다. 서버에 올리기 전에 확인하는 습관이 중요합니다.
한 대에 여러 서비스를 올릴 때
포트를 나누고 리버스 프록시에서 도메인·경로로 분기하면 한 대에 여러 서비스를 올릴 수 있습니다. 비용이 크게 절약됩니다.
다만 한 서비스의 장애가 전체에 영향을 줄 수 있으므로 자원 제한을 걸어두는 편이 좋습니다.
서버 한 대의 최소 구성표
| 구성 요소 | 역할 | 빠뜨리면 |
|---|---|---|
| 리버스 프록시 | 도메인 분기, SSL 종료, 압축 | HTTPS·다중 서비스 불가 |
| 프로세스 관리자 | 재시작, 로그, 클러스터 | 죽으면 그대로 멈춤 |
| 방화벽 | 포트 차단 | DB가 외부에 노출 |
| 자동 SSL 갱신 | 인증서 유지 | 어느 날 접속 불가 |
| 로그 회전 | 디스크 관리 | 디스크 가득 참 |
| 원격 백업 | 복구 | 서버와 함께 소실 |
방화벽을 빠뜨리는 경우가 많습니다. 데이터베이스 포트가 외부에 열려 있으면 스캔 봇이 바로 찾아냅니다.
배포 절차를 문서로 남기세요
혼자 하더라도 순서를 적어두면 실수가 줄어듭니다. 그리고 급할 때 특히 효과가 큽니다.
- 로컬에서 구문 검사
- 테스트 실행
- 서버에 이전 버전 백업
- 새 버전 업로드
- 설정 문법 검사 (nginx -t 등)
- 재시작
- 동작 확인 — 헬스체크와 핵심 화면
- 로그 확인
3번을 건너뛰면 되돌릴 수 없습니다. 백업이 롤백입니다.
무중단이 필요한 시점
초기에는 몇 초 끊겨도 괜찮습니다. 사용자가 적을 때 무중단 배포를 구성하는 것은 과한 투자입니다.
다만 결제가 진행 중일 수 있으므로, 재시작 시 진행 중 요청을 정상 종료시키는 설정은 해두는 편이 좋습니다.
한 대에 여러 서비스를 올릴 때 주의
- 메모리 상한을 서비스별로 걸어두기 — 하나가 다 먹으면 전부 죽습니다
- 포트를 문서화 — 나중에 충돌합니다
- 로그를 분리 — 섞이면 원인 파악이 어렵습니다
- 재시작 순서를 정해두기 — 의존 관계가 있으면
한 서비스의 메모리 누수가 서버 전체를 멈추게 하는 사고가 흔합니다. 프로세스 관리자에서 메모리 한도를 설정하고 초과 시 재시작하도록 걸어두세요.
서버를 옮겨야 할 때 대비
언젠가는 서버를 옮기게 됩니다. 그때를 위해 설정을 코드로 남겨두면 며칠이 몇 시간으로 줄어듭니다.
완전한 자동화가 아니어도 됩니다. 설치한 것과 설정 파일 목록만 문서로 있어도 충분히 도움이 됩니다.
로그 시각이 9시간 어긋날 때
UTC와 한국 시간, epoch를 한 화면에서 바꿔볼 수 있습니다.
UTC · 한국시간 변환기 →자주 묻는 질문
컨테이너를 꼭 써야 하나요?
필수는 아닙니다. 서비스가 하나라면 없이도 충분합니다. 여러 개가 되고 환경이 엉키기 시작하면 그때 고려해도 됩니다.
서버 사양은 어느 정도로 시작하나요?
초기에는 가장 작은 사양으로 충분한 경우가 많습니다. 부족해지면 올리면 됩니다. 처음부터 크게 잡으면 비용만 나갑니다.
국내와 해외 중 어디에 두나요?
주 사용자 위치에 맞추는 것이 기본입니다. 국내 사용자면 국내가 응답이 빠릅니다.
같이 보면 좋은 글
혼자 만들 때 기술을 고르는 기준최신 기술보다 중요한 것. 혼자 유지보수할 수 있는지가 핵심입니다. 혼자 만들 때 가장 중요한 기준은 성능도 유행도 아닙니다.…혼자 운영할 때 최소한으로 봐야 할 것모니터링을 거창하게 하면 안 봅니다. 정말 필요한 네 가지. 대시보드를 아무리 예쁘게 만들어도 안 보면 소용없습니다. 혼자라면…서버를 열어두면 바로 시작되는 공격들실제 로그에서 관찰되는 스캔 유형과 최소한의 방어. 서버를 인터넷에 열면 몇 분 안에 스캔이 시작됩니다. 유명하지 않아도 상관…AI API 비용이 매출을 넘지 않게 하는 설계쓸수록 적자가 나는 구조를 피하는 방법. 모델 분리와 캐시. AI를 쓰는 서비스는 사용량에 비례해 원가가 늘어납니다. 정액제로…메일과 문자를 보낼 때 지켜야 하는 것기술적으로는 쉽습니다. 문제는 도달률과 법적 요건입니다. 발송 코드는 몇 줄입니다. 그런데 스팸함으로 가거나 법에 걸리면 안 …혼자 만들 때 봐야 할 지표 다섯 개대시보드를 크게 만들면 안 봅니다. 실제로 행동으로 이어지는 숫자만. 숫자를 많이 보는 것과 행동이 바뀌는 것은 다릅니다. 다…