- 동시접속자 기반 월간 대역폭 자동 추정 - DAU(일일활성사용자) 추정치 표시 (동접 × 10-14) - 대역폭 기반 Linode/Vultr 자동 선택 로직 - 비용 분석에 대역폭 비용 포함 - 지역 미선택시 서울/도쿄/오사카/싱가포르 기본 표시 - 지역별 서버 분리 표시 (GROUP BY instance + region) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.6 KiB
2.6 KiB
Server Recommendation System - Setup Guide
1. Create Cloudflare Resources
Create D1 Database
# Create D1 database
npx wrangler d1 create server-recommend-db
# Copy the database_id from output and update wrangler.toml
Create KV Namespace
# Create KV namespace for caching
npx wrangler kv:namespace create CACHE
# Copy the id from output and update wrangler.toml
2. Initialize Database Schema
# Execute schema.sql against your D1 database
npx wrangler d1 execute server-recommend-db --file=schema.sql
3. Seed Sample Data (Optional)
Create a file seed.sql with sample server data and run:
npx wrangler d1 execute server-recommend-db --file=seed.sql
4. Development
# Start local development server
npm run dev
# Type checking
npm run typecheck
5. Deployment
# Deploy to Cloudflare Workers
npm run deploy
API Endpoints
Health Check
curl https://your-worker.workers.dev/api/health
Get Servers
curl "https://your-worker.workers.dev/api/servers?minCpu=4&minMemory=8"
Request Recommendations
curl -X POST https://your-worker.workers.dev/api/recommend \
-H "Content-Type: application/json" \
-d '{
"cpu_cores": 4,
"memory_gb": 8,
"storage_gb": 100,
"network_bandwidth_mbps": 1000,
"sla_requirement": 99.9,
"budget_monthly": 200,
"regions": ["us-east-1", "us-west-2"]
}'
Environment Variables
No environment variables needed - all bindings are configured in wrangler.toml:
AI: Workers AI binding (automatic)DB: D1 Database bindingCACHE: KV namespace binding
Testing Workers AI Integration
The worker uses @cf/meta/llama-3.1-8b-instruct model. Test with:
# Local development automatically uses Workers AI
npm run dev
# Make test request
curl -X POST http://localhost:8787/api/recommend \
-H "Content-Type: application/json" \
-d '{
"cpu_cores": 2,
"memory_gb": 4,
"storage_gb": 50
}'
Cache Strategy
Recommendations are cached in KV for 1 hour based on request parameters:
- Cache key format:
recommend:cpu:X|mem:Y|stor:Z|... - TTL: 3600 seconds (1 hour)
- Cache hit/miss logged in console
Error Handling
All endpoints return proper HTTP status codes:
200: Success400: Invalid request (validation error)404: Endpoint not found500: Internal server error
CORS is enabled for all origins (Access-Control-Allow-Origin: *).
Monitoring
Enable observability in wrangler.toml:
[observability]
enabled = true
View logs:
npx wrangler tail