-
Notifications
You must be signed in to change notification settings - Fork 0
07 Demo Deployment
데모도 배포입니다.
시연자 PC에서 LM Studio를 켜두는 방식은 최종 데모 구조가 아닙니다. 팀원이 동일한 URL로 접근할 수 있고, 재시작·장애·Secret·DB migration을 통제할 수 있는 환경에 배포합니다.
flowchart LR
U["Client / Worker"] -->|HTTPS| G["Gateway 또는 TLS Endpoint"]
G --> S["Spring Boot Server"]
S --> P[("PostgreSQL")]
S --> F["Local/S3 FileStorage"]
S -->|"Private S2S"| A["AI Runtime"]
K["Pinned Knowledge Bundle"] --> A
K -. "Workflow projection" .-> S
A --> L["External LLM / Cloud Endpoint"]
S -.-> O["Logs · Metrics · Traces"]
A -.-> O
| 항목 | 책임 저장소 | 비고 |
|---|---|---|
| Server image, Spring prod profile, DB migration | server |
#9 범위 |
| AI Runtime image, Prompt, Provider/model 설정 | ai |
Provider key도 이 환경에 저장 |
| Knowledge release artifact | knowledge |
version과 checksum 고정 |
| 서비스 네트워크, TLS, Secret 주입, 통합 Compose/Cloud |
infra 또는 통합 배포 설정 |
서비스별 Secret 분리 |
| 화면 build와 API base URL | client |
Server External API만 호출 |
Server #9는 Server의 deployability와 연결 smoke를 책임집니다. 여러 저장소를 하나로 배포하는 전체 환경은 별도 통합 배포 작업과 연결합니다.
MVP에서는 Knowledge CI가 version과 checksum이 고정된 release artifact를 만듭니다. 배포 과정이 전체 bundle을 AI Runtime image/mount에, 생성된 read-only Workflow projection을 Server image/mount에 주입합니다. 운영 요청마다 Knowledge를 network로 조회하지 않습니다.
한 번의 AI 업무 결과를 재현하려면 다음 조합을 알아야 합니다.
backend_version
ai_runtime_version / agent_version
model_provider / model_name / model_version
prompt_version
context_pack_version
workflow_catalog_version
request_id / trace_id
Server는 AiRun에 AI Runtime이 반환한 실제 version metadata를 저장합니다. Wiki에 “현재 모델”을 하드코딩하는 것으로 대신하지 않습니다.
| Secret | 주입 대상 | 금지 위치 |
|---|---|---|
| DB credential | Server | Client, AI Runtime, Git |
| JWT signing key | Server | Client, AI Runtime, Git |
| S2S credential | Server와 AI Runtime | 사용자 응답, log, Git |
| Provider API key | AI Runtime | Server, Client, Knowledge, Git |
| Object Storage credential | 접근하는 서비스 | Public URL, log, Git |
실제 값은 Issue·Wiki·PR·Docker image에 기록하지 않습니다.
- Liveness: Server process 자체가 살아 있는가?
- Readiness: 요청 처리에 필요한 PostgreSQL 등 핵심 의존성이 준비됐는가?
- AI integration health: AI Runtime에 연결할 수 있는가?
- Provider degraded: AI Runtime 내부 Provider가 제한 상태인가?
AI Runtime이나 Provider가 잠시 실패해도 기존 Task 조회·수동 처리가 가능하면 Server 전체를 restart loop에 넣지 않습니다. AI 기능만 degraded로 표시합니다.
-
mainCI와./gradlew test성공 - Java 17 production image 기동
- PostgreSQL 사용, H2와
ddl-auto:update미사용 - Flyway 순서·checksum·rollback 호환성 검토
- AiRun과 Durable Event table 준비
- seed·backup·snapshot에 실제 개인정보 없음
- Server가 AI Runtime URL과 S2S credential로만 연결
- AI Runtime이 외부 Provider 또는 Cloud Endpoint 사용
- LM Studio 없이 대표 요청 성공
- AI Runtime과 Knowledge bundle version·checksum 확인
- Internal OpenAPI와 Structured Output Contract test 성공
- Server와 AI Runtime의 retry budget이 중복 폭주하지 않음
- HTTPS와 최소 CORS origin
- 서비스별 Secret 분리
- Authorization·Worker token·PII log redaction
- Worker Link 만료·회전·폐기·rate limit
- upload 크기·MIME·격리·안전한 다운로드
- prod Swagger 공개 범위 결정
-
request_id/trace_id로 Client→Server→AI Runtime 구간 추적 - Provider span은 AI Runtime, Server Workflow span은 Server에 기록
- queue 지연·Run 실패·Event retry 최소 metric 확인
- 직전 정상 image와 version 조합 보존
- exporter 장애가 business transaction을 막지 않음
- Server liveness와 DB readiness를 확인합니다.
- HR 로그인 후 자신의 Company와 Role을 확인합니다.
- 테스트 근로자를 등록하고 타 Company 격리를 확인합니다.
-
POST /api/v1/ai-runs에 복합 요청을 보내202 + aiRunId를 받습니다. - 조회 API에서 최종
SUCCEEDED, 후보 두 개, 기록된 시작·완료 시각과 상태 이력을 확인합니다. 빠른 실행에서 중간 상태를 반드시 화면으로 관찰할 필요는 없습니다. - 후보 하나는 확정하고 하나는 폐기해 Task 중복이 없는지 확인합니다.
- HR 승인 전 Worker Link 발급이 차단되는지 확인합니다.
- 승인 후 링크를 발급하고 근로자 응답 또는 문서를 제출합니다.
- Evidence, 완료, Activity, Audit을 확인합니다.
- Server를 재시작하고 미완료 Run/Event가 복구되는지 확인합니다.
정확한 payload는 배포된 Swagger와 #10 제품 E2E 런북을 기준으로 합니다.
| 증상 | 먼저 볼 곳 | 안전한 다음 행동 |
|---|---|---|
| AI Runtime timeout/503 | Server AiRun error, circuit, Internal health | retry budget 후 수동 입력 또는 나중 재시도 |
| Provider 429/5xx | AI Runtime error와 Provider 상태 | AI Runtime 정책에 따라 제한적 retry |
| JSON Schema 오류 | 두 서비스의 contract version | 후보 차단, 계약 수정 후 재실행 |
outcome=NEEDS_INFO |
후보의 missingFields
|
HR이 정보를 보완한 새 Run 실행 |
| DB 연결 실패 | readiness, Flyway, DB 상태 | 반복 restart 전에 DB 원인 해결 |
| Worker Link 만료 | expiry/revoked Audit | HR이 rotate해 새 링크 발급 |
Fake 결과를 실제 AI 성공처럼 보여주거나 DB 상태를 수동 조작해 성공을 위장하지 않습니다. fixture를 사용한 시연이면 명확히 표시합니다.
AI Runtime Green version을 staging에서 smoke evaluation한 뒤 0% → 10% → 50% → 100%로 전환합니다. 문제 시 Blue로 되돌립니다. 이때 모델 하나가 아니라 Server·AI Runtime·Prompt·Knowledge·Workflow의 호환 조합을 함께 확인합니다.
M3에서는 version 기록, 이전 image 보존, 호환 가능한 migration, 명시적 rollback 절차까지만 구현합니다.