67 lines
6.4 KiB
Markdown
67 lines
6.4 KiB
Markdown
---
|
|
id: serverless-deployment
|
|
title: "Serverless Deployment"
|
|
category: "10_Wiki/Topics"
|
|
status: "draft"
|
|
verification_status: "conceptual"
|
|
canonical_id: ""
|
|
aliases: ["서버리스 배포", "API 배포"]
|
|
duplicate_of: ""
|
|
source_trust_level: "B"
|
|
confidence_score: 0.85
|
|
created_at: 2026-05-19
|
|
updated_at: 2026-05-19
|
|
review_reason: ""
|
|
merge_history: []
|
|
tags: ["research", "Comfyui workflow json 생성 방법"]
|
|
raw_sources: ["NotebookLM Synthesis"]
|
|
applied_in: ["new_pipeline.py", "pipeline.yaml", "fofr/any-comfyui-workflow"]
|
|
github_commit: "bc85382"
|
|
---
|
|
|
|
# [[Serverless Deployment]]
|
|
|
|
## 🎯 한 줄 통찰 (One-line insight)
|
|
ComfyUI 워크플로우의 서버리스 배포는 시각적 메타데이터를 제거하고 실행 로직만 남긴 **API 포맷 JSON(Backend Format)**을 통해 워크플로우를 독립적인 실행 가능한 프로그램으로 변환하는 과정이다 [1-4].
|
|
|
|
## 🧠 핵심 개념 (Core concepts)
|
|
1. **API 포맷 JSON (workflow_api.json):** 서버 사이드 실행에 최적화된 스트림라인드 그래프로, 노드 위치나 크기 같은 UI 메타데이터를 제외하고 오직 노드 타입, 입력값, 연결 정보만을 포함한다 [1, 4].
|
|
2. **서버리스 엔드포인트 (Serverless Endpoint):** GPU 관리, 오토스케일링, 플랫폼 최적화가 포함된 확장 가능한 API 지점으로, 사용자는 인프라 관리 없이 워크플로우를 실행할 수 있다 [3].
|
|
3. **입력 오버라이드 (Input Overrides):** 배포된 워크플로우를 호출할 때 프롬프트, 시드, 이미지 경로 등 특정 파라미터만을 동적으로 변경하여 전송하는 방식이다 [5, 6].
|
|
4. **종속성 패키징 (Dependency Packaging):** 서버리스 환경에서 워크플로우가 작동하도록 필요한 커스텀 노드, 모델 가중치, Python 라이브러리를 도커 이미지나 YAML 설정으로 정의하는 과정이다 [7, 8].
|
|
|
|
## 🧩 추출된 패턴 (Extracted patterns)
|
|
- **Bifurcation(이분화) 패턴:** 사용자 편집용 'Frontend JSON'과 실행 전용 'API JSON'을 분리하여 관리하며, API 요청 시에는 반드시 후자를 사용해야 한다 [1, 9, 10].
|
|
- **Pipeline-as-Code:** 워크플로우 실행 로직을 Python 스크립트(`new_pipeline.py`)로, 환경 설정을 YAML(`pipeline.yaml`)로 작성하여 인프라를 코드로 관리한다 [7].
|
|
- **Remote Asset Referencing:** 로컬 파일을 직접 사용하는 대신 URL 참조나 ZIP/TAR 압축 파일 업로드를 통해 서버리스 환경에 데이터를 공급한다 [11, 12].
|
|
|
|
## 📖 세부 내용 (Details)
|
|
* **API 포맷 획득 프로토콜:** 서버리스 배포를 위한 JSON을 얻으려면 ComfyUI 설정(Settings) 메뉴에서 **'Enable Dev mode Options'**를 활성화해야 한다 [2, 11, 13, 14]. 이후 제어판에 나타나는 **'Save (API format)'** 또는 **'Export (API)'** 버튼을 통해 추출할 수 있다 [2, 15].
|
|
* **플랫폼별 배포 방식:**
|
|
* **Mystic:** `pipeline.yaml`에 CUDA 및 Python 의존성을 정의하고, `new_pipeline.py`에서 ComfyUI 서버 시작 및 워크플로우 로드 로직을 구현한다 [7, 8]. 도커 이미지를 빌드하여 Mystic 계정에 푸시하면 엔드포인트가 생성된다 [8, 16].
|
|
* **Replicate:** `fofr/any-comfyui-workflow`와 같은 범용 모델을 활용하거나 전용 API 토큰을 사용하여 Python/JavaScript 클라이언트로 워크플로우 JSON을 전송한다 [17-19].
|
|
* **RunComfy:** 워크플로우를 'Serverless API (ComfyUI)'로 배포하며, 플랫폼이 내부적으로 `workflow_api.json`을 저장하고 API 호출 시 오버라이드 값만 적용하여 효율적으로 실행한다 [4, 6, 20].
|
|
* **데이터 처리 및 통신:**
|
|
* **입력:** 이미지 입력 시 `Load Image (Base64)` 노드를 사용하여 JSON 내에 데이터를 직접 포함하거나, URL을 통해 클라우드 저장소의 자원을 참조한다 [11, 21].
|
|
* **출력:** 결과물 확인을 위해 `SaveImageWebsocket` 노드를 사용하여 웹소켓 통신으로 이미지 바이너리를 수신하거나, 서버리스 플랫폼의 출력 디렉토리에 저장된 파일을 반환받는다 [21, 22].
|
|
* **자동화 및 변환 도구:** `comfyui-workflow-to-api-converter-endpoint`를 설치하면 `/workflow/convert` 엔드포인트를 통해 일반 `workflow.json`을 API 포맷으로 서버사이드에서 즉시 변환하여 실행할 수 있다 [10, 23, 24].
|
|
|
|
## ⚖️ 모순 및 업데이트 (Contradictions & updates)
|
|
* **호환성 문제:** 표준 `workflow.json`을 API 엔드포인트(`prompt`)에 직접 전송하면 백엔드 엔진이 시각적 메타데이터를 해석하지 못해 오류가 발생한다 [10, 13].
|
|
* **가독성 손실:** API JSON은 노드 위치 정보가 제거되었으므로, 이를 다시 ComfyUI UI로 드래그하면 노드들이 겹쳐진 '뼈대만 남은' 상태가 되어 편집이 극도로 어렵다 [25]. 따라서 원본 'Full Workflow' JSON을 반드시 별도로 보관해야 한다 [25].
|
|
* **종속성 취약점:** 배포된 환경에 필요한 커스텀 노드가 누락되면 'Red Boxes' 에러가 발생하며, 이를 해결하기 위해 `ComfyUI-Manager`를 통한 의존성 해결이나 도커 기반의 환경 구성이 필수적이다 [8, 26, 27].
|
|
|
|
## 🛠️ 적용 사례 (Applied in summary)
|
|
* **`new_pipeline.py`**: Mystic 플랫폼에서 서버리스 엔드포인트를 정의하는 핵심 파이썬 파일로, 입력 프롬프트를 JSON 워크플로우에 주입하고 실행하는 템플릿 역할을 한다 [7, 22].
|
|
* **`pipeline.yaml`**: Mystic 배포 시 CUDA 버전, Python 라이브러리 종속성, 오토스케일링 설정을 포함하는 구성 파일이다 [7, 8].
|
|
* **`fofr/any-comfyui-workflow`**: Replicate에서 어떤 API 포맷 JSON이든 수용하여 실행할 수 있도록 설계된 범용 서버리스 모델이다 [17, 19].
|
|
* **GitHub Commit `bc85382`**: `comfyui-workflow-to-api-converter-endpoint`에서 콤보 위젯의 대소문자 표기 오류(예: True vs true)를 수정하여 유효성 검사 실패 문제를 해결한 기록이 확인된다 [28, 29].
|
|
|
|
## ✅ 검증 상태 및 신뢰도
|
|
- **상태:** draft
|
|
- **검증 단계:** conceptual (실제 적용 사례 발견 시 applied/validated로 승격 가능)
|
|
- **출처 신뢰도:** B (Official Documentation / Primary Source via NotebookLM)
|
|
- **중복 검사 결과:** 신규 생성 (New discovery)
|
|
|
|
## 📝 변경 이력 (Change history)
|
|
- 2026-05-19: Initial draft generated via Datacollector_MAC P-Reinforce engine. |