Skip to content

[Deploy] PostgreSQL·AI Runtime 기반 데모 배포 구성 #9

Closed

Description

@hywznn

한 줄 목표

시연자 PC의 LM Studio 없이 Client + Spring Boot Server + PostgreSQL 16 + AI Runtime이 재현 가능한 HTTPS 데모 환경에서 끝까지 동작하도록 배포 설정과 Smoke Test를 확정합니다.

현재 상태 (2026-08-19)

인프라 최초 적용은 완료됐습니다.

  • Namespace·PostgreSQL 16·Server·AI·Client Deployment/Service
  • Server /app/data/files PVC와 fsGroup: 10001
  • HTTPS Ingress와 Client·Server 공개 주소
  • postgres-secret, server-env, ai-env 주입 구조
  • Server GHCR 이미지 배포와 rollout 실패 감지
  • Prometheus 수집 구성
  • Swagger/OpenAPI·DB 문서 GitHub Pages 배포

따라서 기존의 “Infra #104 최초 적용 대기”는 더 이상 선행조건이 아닙니다.

현재 차단 원인

배포 환경의 Renewal 호출은 AI #69에서 다음 응답으로 중단됩니다.

guideFailureCode=LANGUAGE_ASSISTANT_NOT_CONFIGURED
guideReviewRequired=true

Server가 Renewal endpoint까지 호출하는 것은 확인됐지만, AI Pod의 Language Assistant 설정 또는 실제 Provider 초기화가 끝나지 않아 근로자 안내 초안과 다음 문서 단계로 진행하지 못합니다.

설정 소유권

Secret 담당 설정
postgres-secret PostgreSQL bootstrap·runtime·migration 계정
server-env DB·JWT·CORS·FileStorage·AI endpoint/credential·SMTP·SMS·Prometheus 인증
ai-env 내부 API Token·Intent 모델·Hugging Face·CLOVA OCR·LLM·Knowledge 경로

실제 Secret 값은 Git·Issue·Wiki·Actions 로그에 기록하지 않습니다.

Server가 사용하는 주요 AI 설정

AI_RUNTIME_ENABLED
AI_RUNTIME_ENDPOINT
AI_RUNTIME_RENEWAL_ENDPOINT
AI_DOCUMENT_GENERATION_ENDPOINT
AI_DOCUMENT_CONVERSION_ENDPOINT
AI_RUNTIME_SERVICE_CREDENTIAL
AI_RUNTIME_OVERALL_TIMEOUT
AI_OCR_ENABLED
AI_OCR_ENDPOINT
AI_OCR_SERVICE_CREDENTIAL

AI_RUNTIME_SERVICE_CREDENTIAL과 AI 내부 Bearer Token은 같은 값이어야 합니다. LLM·Hugging Face·CLOVA Provider Key는 Server가 아니라 ai-env에 둡니다.

남은 배포 작업

  • AI feat: 데모 사업장 및 근로자 시드 데이터 확장 #69 해결 후 guideFailureCode=null인 Renewal 응답 확인
  • Server Pod → AI PLAN/ANALYZE·Renewal·OCR·문서 생성/변환 접근 확인
  • 실제 Client 주소와 GitHub Pages Swagger CORS 확인
  • 배포 환경 Golden Case E2E 완료
  • Server·AI 재시작 뒤 미완료 Run·Outbox 복구 확인
  • 직전 정상 이미지 rollback rehearsal
  • Secret 값이 로그·오류 응답에 노출되지 않는지 확인

배포 Smoke 순서

  1. rollout·readiness·/health
  2. 로그인·/auth/me·타 사업장 차단
  3. POST /api/v1/ai-runs의 실제 PLAN → ANALYZE
  4. Candidate 채택 → Case·Task → 승인
  5. Renewal → Language Assistant → Worker Link 안내
  6. Worker Link → 응답·파일 → OCR → State 병합
  7. 생성 문서 저장·미리보기·다운로드
  8. 완료·감사로그·재시작 복구
  9. rollback rehearsal

완료 조건

  • 개발자 PC가 꺼져도 동일 HTTPS URL에서 대표 시나리오가 동작합니다.
  • Demo Seed는 합성 데이터만 사용하고 운영 prod에서는 비활성화됩니다.
  • 실제 Provider를 켠 Product Smoke와 rollback rehearsal가 통과합니다.
  • 배포 결과와 장애 복구 방법이 Runbook에 기록됩니다.

후속: #10 · 상위: #2 · 외부 차단: fowoco/ai#69

Activity

  1. added
    area:ai-integrationServer ↔ AI Runtime 내부 계약·Client·검증·trace 연동 영역; Prompt·모델·Provider 구현은 ai 저장소 소유
    area:infraServer Dockerfile·DB 설정·CI hook·배포 가능성 영역; 통합 인프라 운영은 infra 저장소와 조율
    priority:P0MVP 진행을 막는 최우선 핵심 작업
    security:privacy개인정보·접근권한·토큰·보안 영향이 있는 작업
    status:blocked선행 작업이나 외부 조건 때문에 현재 진행할 수 없는 작업
    type:integration외부 LLM·DB·스토리지 등 시스템 간 연동 작업
    on Jul 21, 2026
  2. changed the title [-][Deploy] PostgreSQL·외부 LLM 기반 데모 배포 구성[/-] [+][Deploy] PostgreSQL·AI Runtime 기반 데모 배포 구성[/+] on Jul 22, 2026
  3. BcKmini commented on Aug 10, 2026

    @BcKmini
    Member

    오늘(2026-08-10) infra 쪽에서 남은 배포 작업 중 아래 처리함:

    • ai-env Secret 신규 생성 + envFrom 연결 (infra#13) — Intent 모델 실제 활성화, CLOVA OCR 실키 연결, server↔ai Internal Bearer 인증 활성화
    • server-env에 DEMO_SEED_/JWT_ISSUER·AUDIENCE/AI_OCR_/OCR_RESULT_*/FILE_STORAGE_LOCAL_PATH 병합, AI_RUNTIME_SERVICE_CREDENTIAL을 ai의 새 Internal Bearer 값과 통일
    • infra#11 머지 + 라이브 postgres에 bootstrap 함수 7개 EXECUTE 권한 수동 GRANT (permission denied 크래시 해결)
    • /app/data PVC(2Gi) + fsGroup 10001 추가 (infra#14) — AccessDeniedException 해결, 데모시드/파일업로드 영속화

    데모 로그인·health·ai /docs 라이브 확인 완료. 남은 건 SMTP 앱 비밀번호(비밀번호 재설정 메일 발송, 아직 실값 없어서 보류), HTTPS/TLS, SERVER_PUBLIC_URL.

  4. krestar commented on Aug 16, 2026

    @krestar
    Member

    https://app.notion.com/p/localhost-run-3be0e15aa74e8068b676fce40e60941e

    localhost.run 사용 시 문제점 및 대안입니다

    tailscale 직접 테스트를 통해 모바일 환경에서의 워커 링크 작동 + 이미지 서버에 들어오는 것 확인

  5. hywznn commented on Aug 16, 2026

    @hywznn
    MemberAuthor

    @BcKmini 배포 환경 Renewal 연결 확인 부탁드립니다.

    로컬 .server-env에는 아래 설정이 준비되어 있습니다.

    • AI_RUNTIME_ENABLED=true
    • AI_RUNTIME_RENEWAL_ENDPOINT=http://ai:8000/internal/v1/workflows/renewal/run
    • AI_RUNTIME_SERVICE_CREDENTIAL 설정 완료

    현재 배포본에서는 일반 PLAN·ANALYZE 호출은 성공하지만, Task의 Renewal 실행만 재계약·연장 분석을 일시적으로 실행할 수 없습니다.로 실패합니다.

    다음 사항을 확인 부탁드립니다.

    1. Kubernetes server-env Secret에 AI_RUNTIME_RENEWAL_ENDPOINT가 반영됐는지
    2. Server의 AI_RUNTIME_SERVICE_CREDENTIAL과 AI의 FOWOCO_INTERNAL_API_TOKEN이 일치하는지
    3. Secret 적용 후 Server Pod가 재시작됐는지
    4. Server Pod에서 ai:8000/internal/v1/workflows/renewal/run에 접근 가능한지

    Secret 실제 값은 댓글에 남기지 않고, 정상 반영 여부만 알려주시면 이어서 배포 E2E를 진행하겠습니다.

  6. BcKmini commented on Aug 19, 2026

    @BcKmini
    Member

    요청하신 4가지 다 확인함:

    1. server-env Secret에 AI_RUNTIME_RENEWAL_ENDPOINT=http://ai:8000/internal/v1/workflows/renewal/run 반영됨
    2. server의 AI_RUNTIME_SERVICE_CREDENTIAL과 ai의 FOWOCO_INTERNAL_API_TOKEN 값 일치(해시 비교로 확인, 실제 값은 안 옮김)
    3. server pod 재시작 완료 상태(정상 Running, 재시작 0회)
    4. server pod → ai:8000으로 네트워크 접근 정상(401 응답 = 인증만 걸린 거고 연결 자체는 됨)

    그리고 실제로 배포본 API에 POST /api/v1/tasks/94000000-0000-0000-0000-000000000009/renewal-run 직접 쏴서 끝까지 확인함 — 200 OK, task_version 1→2로 정상 갱신, PLAN/ANALYZE 왕복 정상 동작. 배포 설정 자체는 더 이상 막힌 게 없는 걸로 보임.

    다만 응답에 "guide_failure_code": "LANGUAGE_ASSISTANT_NOT_CONFIGURED"가 같이 옴 — 이건 별개로 ai#69에 등록된 이슈고, ai-env에 FOWOCO_LLM_*가 아직 미설정이라 그럼(안내문구 생성만 실패, Renewal 분석 자체는 정상 완료). 배포 블로커는 풀린 걸로 보고 이쪽은 계속 진행하셔도 될 것 같습니다.

  7. added
    area:serverSpring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외
    on Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:ai-integrationServer ↔ AI Runtime 내부 계약·Client·검증·trace 연동 영역; Prompt·모델·Provider 구현은 ai 저장소 소유area:infraServer Dockerfile·DB 설정·CI hook·배포 가능성 영역; 통합 인프라 운영은 infra 저장소와 조율area:serverSpring Boot API·도메인·DB·tenant·Task Workflow 영역; Prompt·모델·Provider 구현 제외priority:P0MVP 진행을 막는 최우선 핵심 작업security:privacy개인정보·접근권한·토큰·보안 영향이 있는 작업status:blocked선행 작업이나 외부 조건 때문에 현재 진행할 수 없는 작업type:integration외부 LLM·DB·스토리지 등 시스템 간 연동 작업

Type

No type

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions