- Introduced Aggregator.sol for Chainlink-compatible oracle functionality, including round-based updates and access control. - Added OracleWithCCIP.sol to extend Aggregator with CCIP cross-chain messaging capabilities. - Created .gitmodules to include OpenZeppelin contracts as a submodule. - Developed a comprehensive deployment guide in NEXT_STEPS_COMPLETE_GUIDE.md for Phase 2 and smart contract deployment. - Implemented Vite configuration for the orchestration portal, supporting both Vue and React frameworks. - Added server-side logic for the Multi-Cloud Orchestration Portal, including API endpoints for environment management and monitoring. - Created scripts for resource import and usage validation across non-US regions. - Added tests for CCIP error handling and integration to ensure robust functionality. - Included various new files and directories for the orchestration portal and deployment scripts.
5.5 KiB
5.5 KiB
Deployment Comparison: AKS vs VM/VMSS
Overview
This document compares AKS (Azure Kubernetes Service) deployment with VM/VMSS (Virtual Machine/Virtual Machine Scale Set) deployment for the Besu network.
AKS Deployment
Advantages
-
Kubernetes Orchestration
- Automatic pod scheduling
- Service discovery
- Load balancing
- Rolling updates
- Self-healing
-
Auto-scaling
- Horizontal Pod Autoscaler (HPA)
- Cluster Autoscaler
- Automatic scaling based on metrics
-
Resource Management
- Resource quotas
- Limit ranges
- Resource requests and limits
- Namespace isolation
-
Service Mesh
- Can integrate with service mesh (Istio, Linkerd)
- Advanced traffic management
- Security policies
-
Monitoring Integration
- Prometheus operator
- Grafana dashboards
- ServiceMonitors
- Log aggregation
Disadvantages
-
Complexity
- Requires Kubernetes expertise
- More components to manage
- Steeper learning curve
-
Cost
- Control plane costs (~$73/month)
- Additional overhead
- More resources needed
-
Setup Time
- More initial setup
- Configuration complexity
- More moving parts
VM/VMSS Deployment
Advantages
-
Simplicity
- Direct Docker deployment
- Easier to understand
- Less abstraction
- Faster setup
-
Cost
- No control plane costs
- Pay only for VMs
- Lower overhead
- More predictable costs
-
Control
- Full VM access
- Direct Docker control
- Custom configurations
- Easier troubleshooting
-
Multi-Region
- Easier to deploy across regions
- Direct VM management
- Simpler networking
-
Flexibility
- Custom VM configurations
- Different OS options
- Custom init scripts
- Direct storage access
Disadvantages
-
Manual Scaling
- Manual VM scaling
- No automatic scaling
- Manual load balancing
- Manual updates
-
No Service Discovery
- Manual IP management
- Static configuration
- Manual DNS setup
- No automatic health checks
-
Updates
- Manual rolling updates
- Manual configuration updates
- Manual key rotation
- More operational overhead
-
Monitoring
- Manual monitoring setup
- Less integrated
- More configuration needed
- Manual alerting
Comparison Table
| Feature | AKS | VM/VMSS |
|---|---|---|
| Orchestration | ✅ Kubernetes | ❌ Manual |
| Auto-scaling | ✅ HPA/Cluster Autoscaler | ❌ Manual |
| Service Discovery | ✅ Kubernetes Services | ❌ Manual |
| Load Balancing | ✅ Kubernetes Services | ⚠️ Manual/Application Gateway |
| Rolling Updates | ✅ Kubernetes Deployments | ❌ Manual |
| Self-healing | ✅ Kubernetes | ❌ Manual |
| Resource Management | ✅ Kubernetes | ⚠️ Manual |
| Monitoring | ✅ Integrated | ⚠️ Manual setup |
| Cost | ⚠️ Higher (control plane) | ✅ Lower |
| Complexity | ⚠️ Higher | ✅ Lower |
| Setup Time | ⚠️ Longer | ✅ Shorter |
| Flexibility | ⚠️ Limited to K8s | ✅ Full control |
| Multi-Region | ⚠️ Complex | ✅ Easier |
| Troubleshooting | ⚠️ K8s knowledge needed | ✅ Direct access |
Use Cases
Use AKS When
- Production environment
- Need auto-scaling
- Need service discovery
- Have Kubernetes expertise
- Need advanced features (service mesh, etc.)
- Large scale deployment
- Need rolling updates
- Need self-healing
Use VM/VMSS When
- Development environment
- Small to medium scale
- Cost is a concern
- Simplicity is preferred
- Direct control needed
- Multi-region deployment
- No Kubernetes expertise
- Custom configurations needed
Cost Comparison
AKS Deployment
- Control plane: ~$73/month
- Node pools: VM costs
- Load balancer: ~$25/month
- Total: Higher initial cost
VM/VMSS Deployment
- VMs only: VM costs
- Load balancer: Application Gateway (~$200/month for WAF)
- Total: Lower initial cost (no control plane)
Recommendations
For Production
Recommended: AKS
- Better orchestration
- Auto-scaling
- Service discovery
- Self-healing
- Better monitoring integration
For Development
Recommended: VM/VMSS
- Simpler setup
- Lower cost
- Faster deployment
- Easier troubleshooting
For Multi-Region
Recommended: VM/VMSS
- Easier to deploy
- Direct VM management
- Simpler networking
- Lower complexity
Hybrid Approach
You can also use a hybrid approach:
- Validators on VMs: More control, lower cost
- RPC nodes on AKS: Auto-scaling, service discovery
- Sentries on VMs: Simpler, direct control
Migration Path
From VM to AKS
- Export VM configurations
- Create Kubernetes manifests
- Deploy to AKS
- Migrate data
- Switch traffic
- Decommission VMs
From AKS to VM
- Export Kubernetes configurations
- Create VM deployment scripts
- Deploy VMs
- Migrate data
- Switch traffic
- Decommission AKS cluster
Conclusion
Both deployment methods have their advantages. Choose based on your requirements:
- AKS: Better for production, auto-scaling, service discovery
- VM/VMSS: Better for development, cost-effective, simpler
The project supports both deployment methods, so you can choose based on your needs.