provisioning-outreach/presentations/rust-laspalmas-250926/demos/04-developer-environments.nu

105 lines
No EOL
3.9 KiB
Text

#!/usr/bin/env nu
# Demo 4: Developer Environment Automation
# Shows local development setup automation
# Target audience: Developers, development teams
print "=== Demo 4: Developer Environment Automation ==="
print "\n1. Setting up standardized development environments..."
# Create development environment template
print "Creating development environment template..."
run-external "provisioning" template create --name "full-stack-dev" --type development
print "\n2. Development stack components:"
let dev_stack = [
{component: "Database", service: "PostgreSQL 15", purpose: "Local development"},
{component: "Cache", service: "Redis 7", purpose: "Session + caching"},
{component: "Message Queue", service: "RabbitMQ", purpose: "Async processing"},
{component: "Search", service: "Elasticsearch", purpose: "Full-text search"},
{component: "Monitoring", service: "Prometheus", purpose: "Local metrics"},
{component: "Storage", service: "MinIO", purpose: "S3-compatible storage"}
]
$dev_stack | table
print "\n3. One-command environment setup:"
print "\n# Developer runs this single command:"
print "provisioning dev setup --template full-stack-dev --project my-app"
# Simulate the setup process
print "\n🚀 Setting up development environment..."
sleep 1sec
print "✅ PostgreSQL: Started on localhost:5432"
sleep 500ms
print "✅ Redis: Started on localhost:6379"
sleep 500ms
print "✅ RabbitMQ: Started on localhost:5672"
sleep 500ms
print "✅ Elasticsearch: Started on localhost:9200"
sleep 500ms
print "✅ Prometheus: Started on localhost:9090"
sleep 500ms
print "✅ MinIO: Started on localhost:9000"
print "\n4. Environment configuration:"
run-external "provisioning" dev status --project "my-app" | head 15
print "\n5. Integration with popular IDEs:"
let ide_integration = [
{ide: "VS Code", extension: "provisioning-dev", features: "Auto-connect, debugging"},
{ide: "IntelliJ", plugin: "provisioning-plugin", features: "Database tools, containers"},
{ide: "Vim/Neovim", plugin: "provisioning.nvim", features: "Status line, commands"},
{ide: "Cursor", integration: "Built-in", features: "AI-assisted provisioning"}
]
$ide_integration | table
print "\n6. Team synchronization:"
# Sync development environment across team
print "Synchronizing team environments..."
run-external "provisioning" dev sync --team "backend-team" --template "full-stack-dev"
print "\n📊 Team Environment Status:"
let team_status = [
{developer: "Alice", status: "✅ Synced", version: "v2.1.0", last_update: "2024-01-15"},
{developer: "Bob", status: "⚠️ Outdated", version: "v2.0.5", last_update: "2024-01-10"},
{developer: "Carol", status: "✅ Synced", version: "v2.1.0", last_update: "2024-01-15"},
{developer: "David", status: "🔄 Updating", version: "v2.0.8", last_update: "2024-01-12"}
]
$team_status | table
print "\n7. Environment versioning and rollback:"
run-external "provisioning" dev snapshot --project "my-app" --name "before-feature-x"
print "\n8. Production parity:"
let parity_check = [
{component: "PostgreSQL", dev: "15.2", prod: "15.2", status: "✅ Match"},
{component: "Redis", dev: "7.0.8", prod: "7.0.8", status: "✅ Match"},
{component: "Node.js", dev: "20.10.0", prod: "20.10.0", status: "✅ Match"},
{component: "Environment vars", dev: "Loaded", prod: "Loaded", status: "✅ Match"}
]
$parity_check | table
print "\n9. Performance metrics:"
let performance = {
"Setup time": "45 seconds (vs 2+ hours manual)",
"Resource usage": "2GB RAM (vs 6GB Docker)",
"Startup time": "5 seconds (vs 30 seconds Docker)",
"Disk usage": "1.5GB (vs 4GB Docker)"
}
print "\n⚡ Performance Comparison:"
$performance | table
print "\n✅ Result: Consistent, fast, lightweight development environments"
print "👥 Team: Perfect synchronization, no 'works on my machine'"
print "🚀 Productivity: 10x faster setup, instant onboarding"
print "💻 Local: Native performance, no virtualization overhead"