Render Service Management - Shared Skill
Overview
This skill provides standardized patterns for managing Render platform services, including service provisioning, configuration management, and lifecycle operations.
When to Use
- When creating new Render services
- When configuring render.yaml files
- When provisioning Render databases
- When managing service scaling
- When setting up auto-deployments
- When handling Render-specific deployments
Core Procedures
Service Creation
# render.yaml - Web Service
services:
- type: web
name: my-service
env: node # or python, go, ruby, etc.
region: oregon # or frankfurt, singapore, etc.
branch: main
repo: https://github.com/org/repo
plan: starter # starter, pro, performance
# Build & Run
buildCommand: npm ci && npm run build
startCommand: npm start
healthCheckPath: /health
# Auto-deploy
autoDeploy: true
# Scaling
numInstances: 1
# Environment
envVars:
- key: NODE_ENV
value: production
- key: API_KEY
sync: false # don't sync between environments
Database Provisioning
# render.yaml - PostgreSQL
databases:
- name: my-database
databaseName: myapp_db
plan: starter # starter, pro
color: blue
ipAllowList: [] # restrict access
# render.yaml - Redis
backgroundWorkers:
- name: my-worker
branch: main
repo: https://github.com/org/repo
buildCommand: pip install -r requirements.txt
startCommand: python worker.py
numInstances: 1
Environment Variable Sync
envVars:
# Sync'd across all environments
- key: COMMON_SETTING
value: "value"
# Environment-specific (not synced)
- key: DATABASE_URL
fromDatabase:
name: my-database
property: connectionString
- key: API_KEY
sync: false
Custom Domain Configuration
domains:
- alias: www.example.com
type: redirect
- alias: app.example.com
type: primary
Service Scaling
Auto-Scaling Configuration
services:
- type: web
name: my-service
env: node
branch: main
# Manual scaling
numInstances: 2
# Auto-scaling (Pro plan)
autoScaling:
minInstances: 1
maxInstances: 5
targetCPUPercent: 70
targetMemoryPercent: 80
Health Check Configuration
healthCheckPath: /health
# Custom health check in code:
app.get('/health', (req, res) => {
const healthy = checkDependencies();
res.status(healthy ? 200 : 503).json({
status: healthy ? 'healthy' : 'unhealthy',
timestamp: new Date().toISOString()
});
});
Deployment Patterns
Branch-Based Deployment
services:
- type: web
name: production
branch: main
autoDeploy: true
- type: web
name: staging
branch: develop
autoDeploy: true
Environment Separation
Production: main branch → production service
Development: dev branch → dev service (or staging)
Preview: feature/* branches → preview services
Monitoring & Logs
Log Access
# Via CLI
render logs my-service
# Via Dashboard
# Render Dashboard → Service → Logs
Metrics
metrics_available:
- CPU usage
- Memory usage
- Request count
- Latency
- Error rate
monitoring:
- Render Dashboard
- External: Datadog, New Relic, etc.
Common Issues & Solutions
Build Failures
troubleshooting:
- Check build logs in Render Dashboard
- Verify Node version matches local
- Ensure environment variables are set
- Check for missing dependencies
Slow Response
solutions:
- Upgrade plan for more CPU/memory
- Increase instance count
- Enable auto-scaling
- Check database query performance
- Add caching layer (Redis)
Deployment Not Triggering
checklist:
- [ ] Auto-deploy enabled
- [ ] Correct branch name
- [ ] Valid GitHub repo connection
- [ ] Push event occurred
Pricing Reference
| Plan | Price | Instances | Custom Domain | Auto-Scale |
|---|---|---|---|---|
| Starter | Free | 1 | ✗ | ✗ |
| Pro | $25/mo | 3 | ✓ | ✗ |
| Pro Plus | $75/mo | 6 | ✓ | ✓ |
| Performance | $125/mo | 10+ | ✓ | ✓ |
Best Practices
- Use render.yaml for reproducible deployments
- Enable health checks for auto-restart on failure
- Set up auto-scaling for production services
- Use environment variables for secrets, not in code
- Monitor logs and set up alerting
- Test locally before deploying to Render
- Use staging for testing before production