앱 템플릿
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 (내보내기)
콘솔에서 내보내기
- 콘솔 > 설정 > 앱 템플릿
- 내보내기 탭 선택
- 내보낼 리소스 선택 (전체 또는 개별 선택)
- 앱 템플릿 내보내기 클릭
- 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 → 기타
- 하나의 리소스 생성이 실패해도 나머지는 계속 진행합니다
콘솔에서 적용
- 콘솔 > 설정 > 앱 템플릿
- 가져오기 탭 선택
- JSON 파일 드래그앤드롭 또는 클릭하여 업로드
- 자동 검증 결과 확인
- 앱 템플릿 적용 클릭
- 리소스별 생성/건너뜀/실패 결과 확인
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 키, 시크릿 등이 포함되지 않지만, 함수의 환경 변수에 민감한 값이 포함될 수 있습니다. 공유 전에 환경 변수 값을 확인하세요.