# 운영 배포 체크리스트

**문서 목적**: 로컬/개발 환경에서 운영 환경으로 전환 시 필요한 변경사항 정리
**작성일**: 2025-11-07
**상태**: 내부 개발용 → 추후 운영 배포 시 참고

---

## 🔴 필수 변경 사항 (운영 배포 전 필수)

### 1. Frontend URL 변경
**현재 설정** (로컬 개발용):
```bash
# .env.local
NEXT_PUBLIC_FRONTEND_URL=http://localhost:3000
```

**운영 배포 시 변경**:
```bash
# .env.production 또는 배포 플랫폼 환경 변수
NEXT_PUBLIC_FRONTEND_URL=https://your-production-domain.com
# 예시: https://5130.co.kr
```

**영향 범위**:
- `src/lib/api/auth/auth-config.ts:8` - CORS 설정
- 백엔드 PHP API의 CORS 허용 도메인 추가 필요

---

### 2. API Key 보안 강화 ⚠️

**현재 상태** (내부 개발용):
```bash
# .env.local
NEXT_PUBLIC_API_KEY=42Jfwc6EaRQ04GNRmLR5kzJp5UudSOzGGqjmdk1a
```

**보안 위험**:
- `NEXT_PUBLIC_` 접두사로 인해 브라우저에서 API Key 노출
- 개발자 도구 → Network/Console에서 키 확인 가능
- 클라이언트 측 JavaScript에서 접근 가능

**운영 배포 시 해결 방안** (택 1):

#### 방안 A: 서버 전용 API Key로 전환
```bash
# .env.production (서버 사이드 전용)
API_KEY=your-production-secret-key
```
- `NEXT_PUBLIC_` 접두사 제거
- Next.js API Routes에서만 사용
- 브라우저 접근 불가

#### 방안 B: 운영용 별도 Public API Key 발급
```bash
# PHP 백엔드 팀에 운영용 Public API Key 요청
NEXT_PUBLIC_API_KEY=production-public-safe-key
```
- 제한된 권한으로 발급 (읽기 전용 등)
- IP 화이트리스트 적용
- Rate Limiting 설정

**코드 수정 필요 위치**:
- `src/lib/api/client.ts:40` - API Key 사용 로직
- `.env.example:32` - 문서 불일치 해결

---

## 🟡 권장 변경 사항

### 3. 백엔드 CORS 설정
**PHP API 서버 설정 확인**:
```php
// Laravel sanctum config 예시
'allowed_origins' => [
    'http://localhost:3000',      // 개발
    'https://5130.co.kr',         // 운영 (추가 필요)
],
```

**Sanctum 쿠키 도메인**:
```php
// config/sanctum.php
'stateful' => explode(',', env(
    'SANCTUM_STATEFUL_DOMAINS',
    'localhost,localhost:3000,127.0.0.1,5130.co.kr'
)),
```

---

### 4. Next.js 운영 최적화
**next.config.ts 추가 권장**:
```typescript
const nextConfig: NextConfig = {
  turbopack: {},

  // 운영 환경 추가 설정
  reactStrictMode: true,
  poweredByHeader: false,        // 보안: X-Powered-By 헤더 제거
  output: 'standalone',          // Docker 배포용
  compress: true,                // Gzip 압축
};
```

---

### 5. 빌드 스크립트 추가
**package.json 추가 권장**:
```json
{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "eslint",

    // 추가 권장
    "build:prod": "NODE_ENV=production next build",
    "type-check": "tsc --noEmit",
    "lint:fix": "eslint --fix"
  }
}
```

---

## 🟢 배포 플랫폼별 설정

### Vercel 배포
**프로젝트 설정 → Environment Variables**:
```
NEXT_PUBLIC_API_URL=https://api.5130.co.kr
NEXT_PUBLIC_FRONTEND_URL=https://your-app.vercel.app
NEXT_PUBLIC_AUTH_MODE=sanctum
API_KEY=<서버 전용 키>
```

### Docker 배포
**docker-compose.yml 예시**:
```yaml
version: '3.8'
services:
  nextjs-app:
    build: .
    environment:
      - NEXT_PUBLIC_API_URL=https://api.5130.co.kr
      - NEXT_PUBLIC_FRONTEND_URL=https://your-domain.com
      - API_KEY=${API_KEY}
    ports:
      - "3000:3000"
```

### 전통적인 서버 배포
**`.env.production` 파일 생성**:
```bash
NEXT_PUBLIC_API_URL=https://api.5130.co.kr
NEXT_PUBLIC_FRONTEND_URL=https://your-domain.com
NEXT_PUBLIC_AUTH_MODE=sanctum
API_KEY=<서버 전용 키>
```

---

## 📋 최종 배포 체크리스트

### 환경 변수
- [ ] `NEXT_PUBLIC_FRONTEND_URL` → 운영 도메인으로 변경
- [ ] `NEXT_PUBLIC_API_KEY` → 보안 방안 적용 (서버 전용 또는 제한된 Public Key)
- [ ] `NEXT_PUBLIC_AUTH_MODE` → `sanctum` 또는 `bearer` 확인
- [ ] `.env.local` Git 커밋 안 됨 확인 (`.gitignore:100`)

### 백엔드 연동
- [ ] PHP API CORS 설정에 운영 도메인 추가
- [ ] Sanctum 쿠키 도메인 설정 확인
- [ ] 운영용 API Key 발급 (필요 시)
- [ ] API 엔드포인트 테스트 (`https://api.5130.co.kr`)

### 빌드 & 테스트
- [ ] `npm run build` 로컬 테스트
- [ ] `npm run lint` 통과 확인
- [ ] `tsc --noEmit` TypeScript 타입 체크
- [ ] 브라우저 콘솔 에러 없는지 확인

### 보안
- [ ] API Key 브라우저 노출 문제 해결
- [ ] HTTPS 사용 확인
- [ ] 민감 정보 환경 변수로 분리
- [ ] `X-Powered-By` 헤더 제거 (`poweredByHeader: false`)

### 성능
- [ ] 이미지 최적화 (Next.js Image 컴포넌트 사용)
- [ ] 번들 사이즈 확인 (`npm run build` 출력 확인)
- [ ] Gzip/Brotli 압축 활성화
- [ ] CDN 설정 (필요 시)

---

## 🔧 현재 상태 (2025-11-07)

**개발 환경**:
- ✅ API URL: `https://api.5130.co.kr` (운영 API 사용 중)
- ⚠️ Frontend URL: `http://localhost:3000` (로컬)
- ⚠️ API Key: `NEXT_PUBLIC_API_KEY` (브라우저 노출)
- ✅ Auth Mode: `sanctum` (쿠키 기반 인증)

**내부 개발용 사용 중**:
- 현재는 개발/테스트 목적으로 API Key 노출 허용
- 운영 배포 시 반드시 위 체크리스트 검토 필요

---

## 📌 참고 문서

- `claudedocs/api-key-management.md` - API Key 관리 가이드
- `claudedocs/authentication-design.md` - 인증 시스템 설계
- `claudedocs/authentication-implementation-guide.md` - 구현 가이드
- `.env.example` - 환경 변수 템플릿

---

## 📞 배포 전 확인 담당

- **API Key 발급**: PHP 백엔드 팀
- **CORS 설정**: PHP 백엔드 팀
- **인프라 설정**: DevOps 팀
- **보안 검토**: 보안 담당자

---

**마지막 업데이트**: 2025-11-07
**다음 검토 예정**: 운영 배포 1주 전