11 KiB
ITAM 운영 배포 작업 로드맵
1. 문서 목적
이 문서는 ITAM 저장소를 Windows/WSL 시범 구동 상태에서 Linux 운영 서버 배포 상태로 전환하기 위한 구체적인 작업 목록과 우선순위를 정리한 로드맵이다.
현재 상태: 개발/시범용 Docker 구조 (Vite dev server + bind mount + external DB)
목표 상태: 운영 배포 구조 (정적 빌드 + 영속 스토리지 분리 + reverse proxy + external DB)
2. 작업 페이즈 분류
2.1 Phase 1: 핵심 배포 파일 (우선순위: 높음)
운영 환경에서 실제 배포를 가능하게 하는 기초 작업이다.
-
✅ Add production compose file (
docker-compose.prod.yaml)- 목표: 운영 서버 기준 최종 compose 파일 작성
- 범위: backend, frontend, nginx 서비스 정의
- 입력: 외부
.env, 호스트 경로 마운트 정의 - 출력:
/deploy/docker-compose.prod.yaml - 완료 기준:
docker compose -f docker-compose.prod.yaml config성공
-
✅ Create production frontend Dockerfile (multi-stage build)
- 목표: 정적 자산 기반 프런트엔드 이미지 생성
- 범위: Stage 1 = 빌드 (Node.js + npm build), Stage 2 = 정적 서빙 (Nginx)
- 입력: 현재
Dockerfile.frontend참고,npm run build검증 - 출력:
Dockerfile.frontend.prod또는 분기 처리 - 완료 기준: 로컬에서
npm run build성공, 이미지 빌드 성공, 정적 파일 8080 서빙 확인
-
✅ Harden backend Dockerfile for production
- 목표: production 환경 최적화된 백엔드 이미지
- 범위: NODE_ENV=production, production 의존성만, 비루트 사용자, health check 추가
- 입력: 현재
Dockerfile.backend,server.js검토 - 출력: 수정된
Dockerfile.backend또는.prod버전 - 완료 기준: 이미지 빌드 성공, 시작 후 health endpoint 응답 200
-
✅ Define host paths and named volumes for persistence
- 목표: Linux 서버의 운영 디렉터리 구조 정의
- 범위:
/srv/itam/{app,env,config,uploads,logs,deploy}마운트 정책 확정 - 입력: doc_readme3.md 섹션 7 참고
- 출력: docker-compose.prod.yaml에 적용, 볼륨 마운트 확인
- 완료 기준: compose 파일에 경로 마운트 명시, 영속성 테스트 (컨테이너 재시작 후 데이터 유지)
2.2 Phase 2: 네트워킹 및 보안 (우선순위: 높음)
외부 접근 경로와 보안을 담당하는 작업이다.
-
✅ Provide Nginx reverse-proxy and frontend static config
- 목표: Nginx 설정파일 작성 (frontend 정적 서빙 + API 프록시)
- 범위:
/→ frontend,/api/→ backend:3000, 기본 보안 헤더, gzip - 입력: doc_readme3.md 섹션 12 참고 (예시 개념)
- 출력:
/deploy/nginx/default.conf - 완료 기준:
docker compose -f docker-compose.prod.yaml up -d후http://localhost/api/assets/master응답 200
-
✅ Externalize and secure environment variables (.env.example + secrets guidance)
- 목표: 민감정보 보호 기준 문서화
- 범위:
.env.example생성, Git 제외 확인, 운영 환경 분리 지침 - 입력: 현재
.env파일,.gitignore점검 - 출력:
.env.example, env 관리 가이드 추가 (doc_readme3.md 또는 SECURITY.md) - 완료 기준:
.env가.gitignore에 등록,.env.example배포 파일 작성됨
-
✅ Define TLS certificate handling strategy (Let's Encrypt / mount certs)
- 목표: HTTPS 인증서 관리 정책 확정
- 범위: 자동 갱신 (certbot + Let's Encrypt) 또는 마운트 기반 수동 관리 선택
- 입력: 사내 정책 확인, 운영 도메인 확인
- 출력:
deploy/nginx/tls-strategy.md또는 compose 파일 주석으로 정리 - 완료 기준: 선택 방식 문서화, nginx 설정 적용 준비
-
✅ Security review: non-root users, image scan, secret rotation
- 목표: 보안 체크리스트 작성 및 초기 적용
- 범위: Dockerfile non-root 사용자 추가, 이미지 취약점 스캔 지침, 비밀 로테이션 정책
- 입력: doc_readme3.md 섹션 13.3 (보안) 참고
- 출력: 수정된 Dockerfile,
SECURITY.md또는 운영 가이드 추가 - 완료 기준: 백엔드/프런트엔드 모두 비루트 사용자로 실행 확인
2.3 Phase 3: 모니터링 및 운영 준비 (우선순위: 중간)
배포 후 운영을 원활하게 하기 위한 작업이다.
-
✅ Add healthcheck and readiness endpoint in backend
- 목표: backend 헬스 체크 엔드포인트 추가
- 범위:
GET /health또는/ready엔드포인트 추가 (DB 연결 확인) - 입력:
server.js현재 코드 검토 - 출력: backend 에서 health 응답, docker-compose.prod.yaml에 healthcheck 설정
- 완료 기준:
curl http://localhost:3000/health응답 200, 컨테이너 헬스 상태 healthy 표시
-
✅ Add logging and log rotation guidance
- 목표: 컨테이너 로그 관리 정책 문서화
- 범위: Docker logging driver 설정, log rotation 정책, 저장소 경로 정의
- 입력:
/srv/itam/logs마운트 계획 - 출력: docker-compose.prod.yaml에 로깅 설정, docs에 로그 확인 가이드
- 완료 기준: 로그 파일이
/srv/itam/logs에 저장됨, rotation 정책 명시
-
✅ Document backup and restore procedures for DB and uploads
- 목표: 운영 데이터 백업/복구 절차 문서화
- 범위: 외부 MySQL 백업 정책,
/srv/itam/uploads백업, 복구 절차 스크립트 예시 - 입력: doc_readme3.md 섹션 14 참고
- 출력:
BACKUP_RESTORE.md또는 운영 가이드 추가 섹션 - 완료 기준: 백업 스크립트 예시 작성, 복구 절차 테스트 완료
-
✅ Add smoke tests and post-deploy checks
- 목표: 배포 후 빠른 검증 스크립트 작성
- 범위: 컨테이너 상태 확인, API 응답 테스트, 파일 업로드 테스트, DB 연결 확인
- 입력: doc_readme3.md 섹션 13 (점검 체크리스트) 참고
- 출력:
scripts/smoke-test.sh또는 배포 후 확인 스크립트 - 완료 기준: 스크립트 실행 후 모든 검사 통과
2.4 Phase 4: 자동화 및 CI/CD (우선순위: 중간)
장기 운영을 위한 자동화 작업이다.
-
✅ Prepare CI/CD build & push scripts (image registry)
- 목표: 이미지 빌드 및 레지스트리 푸시 자동화
- 범위:
docker build,docker tag,docker push스크립트 또는 GitHub Actions/GitLab CI 예시 - 입력: 이미지 레지스트리 주소 확인 (e.g., registry.example.com, Docker Hub, etc.)
- 출력:
.github/workflows/build.yml또는scripts/build-push.sh - 완료 기준: 수동 빌드/푸시 스크립트 작동 확인, 이미지 태그 정책 확정
-
✅ Create deploy directory with compose.prod and nginx configs
- 목표: 운영 배포 디렉터리 정리
- 범위:
/deploy/docker-compose.prod.yaml,/deploy/nginx/default.conf, 기타 설정 파일 조직화 - 입력: Phase 1-3 결과물
- 출력: 다음 구조로 정리됨:
deploy/ docker-compose.prod.yaml nginx/ default.conf tls-strategy.md scripts/ smoke-test.sh backup.sh - 완료 기준: 디렉터리 구조 확정, 모든 파일 위치 일관성 있음
2.5 Phase 5: 절차 및 문서화 (우선순위: 중간)
운영 절차와 문서를 정리하는 작업이다.
- ✅ Write rollout and rollback procedures (steps, checklist)
- 목표: 배포 및 복구 절차 문서화
- 범위: 배포 전 체크리스트, 배포 단계별 절차, 장애 시 롤백 절차
- 입력: doc_readme3.md 섹션 16 참고
- 출력:
DEPLOYMENT_PROCEDURES.md또는 운영 가이드 통합 - 완료 기준: 절차 문서 완성, 체크리스트 확인 가능
3. 작업 우선순위 및 권장 순서
3.1 필수 우선 작업 (Phase 1 완료 필수)
- Add production compose file
- Create production frontend Dockerfile (multi-stage build)
- Harden backend Dockerfile for production
- Define host paths and named volumes for persistence
목표: 기본 배포 구조 완성, Linux 서버에서 최소 기동 가능 상태
3.2 보안 필수 작업 (Phase 2 완료 권장)
- Provide Nginx reverse-proxy and frontend static config
- Externalize and secure environment variables
- Define TLS certificate handling strategy
- Security review: non-root users, image scan, secret rotation
목표: 운영 환경 최소 보안 기준 충족
3.3 운영 안정화 작업 (Phase 3 진행)
- Add healthcheck and readiness endpoint in backend
- Add logging and log rotation guidance
- Document backup and restore procedures
- Add smoke tests and post-deploy checks
목표: 배포 후 문제 식별 및 백업/복구 가능 상태
3.4 장기 운영 자동화 (Phase 4-5는 선택)
- Prepare CI/CD build & push scripts
- Create deploy directory with compose.prod and nginx configs
- Write rollout and rollback procedures
목표: 반복 배포 자동화, 절차 표준화
4. 작업 환경 및 검증 기준
4.1 개발/테스트 환경
- 로컬 Linux VM 또는 WSL에서 Phase 1-2 테스트
- Docker Desktop or Docker Engine 필수
- 외부 테스트 MySQL 또는 mock DB
4.2 스테이징 환경
- 실제 Linux 서버에서 전체 배포 절차 테스트
- 운영 환경과 동일 아키텍처
4.3 운영 배포
- 위 모든 Phase 완료 후 진행
- 백업 확인 후 배포
- 배포 후 smoke test 자동 실행
5. 진행 추적
진행 상황은 아래 상태로 추적한다.
not-started: 아직 시작 안 함in-progress: 현재 진행 중completed: 완료됨
현재 상태는 모두 not-started이며, Phase 1 우선 순위 항목부터 순차적으로 진행한다.
6. 예상 일정
- Phase 1 (핵심 배포 파일): 1-2일
- Phase 2 (네트워킹 및 보안): 1-2일
- Phase 3 (모니터링 및 운영 준비): 1일
- Phase 4-5 (자동화 및 절차): 1-2일
전체 예상 소요 시간: 4-7일
7. 추가 고려사항
- 현재
doc_readme3.md는 가이드 문서이고, 이 로드맵은 구현 작업 목록이다. - Phase 1-2 완료 후 실제 코드 커밋은
Dockerizing브랜치에만 한다. - 각 Phase 완료 후 관련 문서도 함께 업데이트한다.
- 운영 전환 전에 최소 1회 스테이징 환경에서 전체 배포 절차 테스트를 수행한다.