BYOC 배포
BYOC(Bring Your Own Cloud)는 Fascia의 배포 모델입니다. 모든 런타임 인프라가 고객의 자체 GCP 프로젝트에 존재합니다. Fascia는 고객 비즈니스 데이터를 저장하거나 처리하지 않으며, 실행 아티팩트를 생 성하고 배포하기만 합니다.
BYOC의 의미
전통적인 SaaS 모델에서는 벤더가 애플리케이션 서버, 데이터베이스, 고객 데이터 모두를 벤더의 인프라에서 호스팅합니다. Fascia는 다른 접근 방식을 취합니다.
Fascia는 책임을 두 개의 플레인으로 분리합니다:
- Control Plane (Fascia 호스팅): 스펙 설계, 검증, 리스크 분석, 배포 오케스트레이션을 담당합니다. 스펙, 메타데이터, 배포 기록만 저장합니다.
- Data Plane (고객 GCP): 모든 실행 로직을 수행하고 모든 비즈니스 데이터를 저장합니다. 고객의 GCP 계정에서 소유하고 비용을 지불합니다.
이를 통해 고객은 자신의 데이터, 인프라, 비용에 대한 완전한 소유권과 제어권을 유지합니다. Fascia는 데이터 처리 레이어가 아닌, 설계 및 배포 레이어로 기능합니다.
실행 위치
고객 GCP 프로젝트
모든 런타임 컴포넌트는 고객의 자체 GCP 프로젝트 내에 프로비저닝됩니다:
| 리소스 | 서비스 | 설명 |
|---|---|---|
| Executor | Cloud Run | Tool Flow 그래프를 실행하는 Go 바이너리입니다. 고객 스펙에서 컴파일된 SpecBundle을 수신합니다. 유휴 시 0으로 스케일 다운되며, 약 50ms 내에 시작합니다. |
| 데이터베이스 | Cloud SQL (PostgreSQL) | 워크스페이스당 하나의 PostgreSQL 인스턴스입니다. 모든 비즈니스 Entity, 관계, 감사 로그를 저장합니다. 백업이 활성화된 상태로 자동 프로비저닝됩니다. |
| 스케줄러 | Cloud Scheduler | 설정된 스케줄에 따라 크론 트리거 Tool을 호출합니다. 각 크론 Tool에 전용 스케줄러 작업이 할당됩니다. |
| 시크릿 | Secret Manager | 모든 민감 값을 저장합니다: JWT 서명 키, OAuth 클라이언트 시크릿, API 키, 데이터베이스 자격 증명. 배포 중 Terraform을 통해 생성 및 관리됩니다. |
| 메시징 | Pub/Sub (선택 사항) | 큐 트리거 Tool과 Tool 간 비동기 이벤트 기반 워크플로를 활성화합니다. 큐 트리거가 사용될 때만 프로비저닝됩니다. |
Fascia 호스팅 (Control Plane)
| 컴포넌트 | 설명 |
|---|---|
| Chat Studio | 대화형 설계 인터페이스입니다. LLM 기반 스펙 생성을 제공합니다. |
| Flow Studio | 시각적 Flow 그래프 편집기입니다. |
| Spec Registry | Entity, Tool, Policy 스펙의 버전 관리 저장소입니다. |
| Safety Agent | AI 기반 스펙 분석 및 리스크 감지를 수행합니다. |
| Risk Engine | Flow 그래프 평가 및 Risk 분류를 수행합니다. |
| Deploy Pipeline | 고객 GCP 프로비저닝을 위한 Terraform 오케스트레이션입니다. |
데이터 주권
Fascia는 엄격한 데이터 격리를 적용합니다:
- 고객 비즈니스 데이터는 고객의 GCP 프로젝트를 벗어나지 않습니다. 모든 Entity 레코드, 관계, 상태 전이, 감사 로그는 고객의 Cloud SQL 인스턴스에 저장됩니다.
- Fascia는 스펙과 메타데이터만 저장합니다. Spec Registry에는 구조화된 정의(Entity 스펙, Tool 스펙, Policy 스펙)와 배포 기록이 포함됩니다. 고객 비즈니스 데이터는 포함되지 않습니다.
- 각 워크스페이스는 자체 데이터베이스를 가집니다. 워크스페이스 간 공유 데이터베이스가 없습니다. 각 워크스페이스는 전용 Cloud SQL 인스턴스를 가지며, 완전한 격리를 제공합니다.
- 시크릿은 고객의 프로젝트에 보관됩니다. JWT 서명 키, OAuth 클라이언트 시크릿, API 키는 고객의 GCP Secret Manager에 저장됩니다. Fascia는 초기 프로비저닝 후 이러한 시크릿에 접근하지 않습니다.