본문으로 건너뛰기

앱 템플릿

Connect Base 앱 템플릿 기능 심화 가이드입니다.

개요

앱 템플릿은 앱의 전체 설정을 JSON 파일로 내보내고, 다른 앱에 한 번에 적용할 수 있는 기능입니다. Terraform처럼 앱의 인프라 구성을 코드로 관리할 수 있습니다.

주요 사용 사례:

  • 개발 → 스테이징 → 프로덕션 환경 복제
  • 팀 간 앱 설정 공유
  • 앱 템플릿 생성 및 배포
  • 재해 복구를 위한 설정 백업

지원 리소스

앱 템플릿에 포함되는 리소스:

리소스포함 항목
JSON 데이터베이스DB, 테이블, 컬럼 스키마
Serverless 함수코드, 런타임, 환경변수
WebSocket카테고리, 타입, 설정
웹훅타겟 URL, 이벤트, 헤더
워크플로우스텝, 실행 타입, 스케줄
파일 스토리지버킷 설정 (파일 미포함)
WebRTC 채널채널 타입, 참여자 설정
OAuth 프로바이더활성화된 인증 프로바이더

보안상 제외 항목: API 키, 시크릿, AI API 키, 결제 설정, 도메인, 앱 멤버 데이터

앱 템플릿 JSON 구조

json
{
  "version": "1.0",
  "app_name": "my-app",
  "exported_at": "2026-02-17T12:00:00Z",
  "resources": {
    "databases": [
      {
        "name": "main-db",
        "tables": [
          {
            "name": "users",
            "columns": [
              { "name": "email", "type": "string", "required": true, "unique": true },
              { "name": "name", "type": "string" }
            ]
          }
        ]
      }
    ],
    "functions": [
      {
        "name": "send-email",
        "runtime": "nodejs20",
        "memory": 256,
        "timeout": 30,
        "code": "exports.handler = async (event) => { ... }",
        "environment_variables": { "SMTP_HOST": "smtp.example.com" }
      }
    ],
    "websocket_categories": [
      {
        "name": "chat",
        "type": "pubsub",
        "persist": true,
        "history_count": 50
      }
    ],
    "webhooks": [...],
    "workflows": [...],
    "storage_files": [...],
    "webrtc_channels": [...],
    "auth_providers": ["google", "naver"]
  }
}

Export (내보내기)

콘솔에서 내보내기

  1. 콘솔 > 설정 > 앱 템플릿
  2. 내보내기 탭 선택
  3. 내보낼 리소스 선택 (전체 또는 개별 선택)
  4. 앱 템플릿 내보내기 클릭
  5. JSON 파일 다운로드

API로 내보내기

bash
curl -X GET https://api.connectbase.world/v1/apps/:appID/app-template/export \
  -H "Authorization: Bearer user_access_token"

응답으로 전체 앱 템플릿 JSON이 반환됩니다.

Validate (검증)

Import 전에 앱 템플릿 파일의 유효성을 검증합니다.

검증 항목

  • JSON 스키마 유효성
  • 필수 필드 존재 여부
  • 리소스 이름 중복 확인 (앱에 이미 같은 이름이 있는지)
  • 리소스별 생성/건너뜀 미리보기

API로 검증

bash
curl -X POST https://api.connectbase.world/v1/apps/:appID/app-template/validate \
  -H "Authorization: Bearer user_access_token" \
  -H "Content-Type: application/json" \
  -d @app-template.json

응답:

json
{
  "valid": true,
  "summary": {
    "total_resources": 15,
    "by_type": {
      "databases": { "create": 1, "skip": 0 },
      "functions": { "create": 3, "skip": 1 },
      "websocket_categories": { "create": 2, "skip": 0 }
    }
  },
  "errors": []
}

Apply (적용)

검증된 앱 템플릿을 앱에 적용합니다.

적용 규칙

  • 같은 이름의 리소스가 이미 존재하면 건너뜁니다 (덮어쓰지 않음)
  • 의존성 순서대로 생성: DB → 테이블 → 컬럼 → 함수 → 워크플로우 → WebSocket → 기타
  • 하나의 리소스 생성이 실패해도 나머지는 계속 진행합니다

콘솔에서 적용

  1. 콘솔 > 설정 > 앱 템플릿
  2. 가져오기 탭 선택
  3. JSON 파일 드래그앤드롭 또는 클릭하여 업로드
  4. 자동 검증 결과 확인
  5. 앱 템플릿 적용 클릭
  6. 리소스별 생성/건너뜀/실패 결과 확인

API로 적용

bash
curl -X POST https://api.connectbase.world/v1/apps/:appID/app-template/apply \
  -H "Authorization: Bearer user_access_token" \
  -H "Content-Type: application/json" \
  -d @app-template.json

응답:

json
{
  "success": true,
  "summary": {
    "created": 12,
    "skipped": 2,
    "failed": 1
  },
  "results": [
    { "type": "database", "name": "main-db", "action": "created" },
    { "type": "function", "name": "send-email", "action": "created" },
    { "type": "function", "name": "process-order", "action": "skipped" },
    { "type": "webhook", "name": "slack-notify", "action": "failed", "error": "..." }
  ]
}

모범 사례

1. 환경별 앱 템플릿 관리

app-template-my-app-dev.json    # 개발 환경
app-template-my-app-staging.json # 스테이징 환경
app-template-my-app-prod.json   # 프로덕션 환경

2. 버전 관리

앱 템플릿 파일을 Git에 커밋하여 변경 이력 추적:

bash
git add app-template-*.json
git commit -m "Update app template: add notification function"

3. 선택적 내보내기

전체 리소스 대신 필요한 리소스만 선택하여 내보내기:

  • DB 스키마만 공유할 때 → 데이터베이스만 선택
  • 함수 코드만 백업할 때 → 함수만 선택

4. 적용 전 검증

1. Export (원본 앱)
2. Validate (대상 앱) ← 반드시 검증 먼저
3. 미리보기 확인 (생성/건너뜀 확인)
4. Apply (대상 앱)

5. 민감 정보 주의

앱 템플릿에는 API 키, 시크릿 등이 포함되지 않지만, 함수의 환경 변수에 민감한 값이 포함될 수 있습니다. 공유 전에 환경 변수 값을 확인하세요.