배포 플랫폼 중립 원칙
ProcessCenter는 특정 배포 플랫폼에 종속되지 않는다. 애플리케이션은 API와 SPA를 함께 제공하는 단일 Node 프로세스(node dist/index.js)이며, 호스팅 종류는 운영자가 환경변수로 명시한다. 이 문서는 그 원칙과 2026-09 정리 내역을 기록한다.
1. 원칙
- 플랫폼 전용 설정 파일이나 서버리스 진입점을 저장소에 두지 않는다. 컨테이너·VM·관리형 클라우드 모두
pnpm run build+pnpm start로 동일하게 기동한다. - 배포 프로파일 값은 호스팅 이름이 아니라 운영 형태를 나타낸다:
CLOUD(기본) /ON_PREM. - 비밀값은 플랫폼 secret store에만 두고, 애플리케이션은 환경변수로만 읽는다.
2. 제거한 플랫폼 종속 요소
| 구분 | 내용 |
|---|---|
| 설정 파일 | 플랫폼 전용 설정 파일 삭제 — 재유입은 server/platformNeutrality.test.ts 가 막는다 |
| 서버리스 진입점 | api/index.ts, api/[...path].ts, api/auth/*, api/trpc/[...path].ts 삭제, tsconfig.json include에서 api/**/* 제거 |
| 공용 패키지 | 플랫폼 라벨을 하드코딩한 @hohyun94/ui-center-runtime 배지 사용 중단, 의존성·vendor tarball 제거 |
| 문서 | 배포 문서를 중립 절차로 재작성, 아키텍처·발표 자료의 플랫폼 명칭 정리 |
3. 기존 데이터·환경 호환
- 미설정 기본값은
CLOUD이며, 이전의 “플랫폼 미감지 시ON_PREM” 동작은 더 이상 사용하지 않는다.
4. 검증 방법
bash
pnpm check # 타입 검사
pnpm exec vitest run server/runtimeSettings.test.ts
pnpm build # dist/public + dist/index.js
pnpm start # 컨테이너·VM 공통 기동배포 플랫폼 이름·전용 API·전용 환경변수가 코드·설정에 남아 있지 않은지 확인하려면 가드를 돌린다.
bash
pnpm exec vitest run server/platformNeutrality.test.ts금지 항목 목록(플랫폼 이름·전용 API·전용 env·전용 설정 파일)은 그 가드가 소유한다 — 금지 이름을 문서에 다시 적지 않는다.
과거 마이그레이션 파일(drizzle/0020_*.sql, drizzle/postgres-migrations/0001_*.sql)의 옛 값은 이력이므로 수정하지 않는다. 새 마이그레이션이 이를 정리한다.