- 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.
246 lines
5.5 KiB
Markdown
246 lines
5.5 KiB
Markdown
# 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
|
|
|
|
1. **Kubernetes Orchestration**
|
|
- Automatic pod scheduling
|
|
- Service discovery
|
|
- Load balancing
|
|
- Rolling updates
|
|
- Self-healing
|
|
|
|
2. **Auto-scaling**
|
|
- Horizontal Pod Autoscaler (HPA)
|
|
- Cluster Autoscaler
|
|
- Automatic scaling based on metrics
|
|
|
|
3. **Resource Management**
|
|
- Resource quotas
|
|
- Limit ranges
|
|
- Resource requests and limits
|
|
- Namespace isolation
|
|
|
|
4. **Service Mesh**
|
|
- Can integrate with service mesh (Istio, Linkerd)
|
|
- Advanced traffic management
|
|
- Security policies
|
|
|
|
5. **Monitoring Integration**
|
|
- Prometheus operator
|
|
- Grafana dashboards
|
|
- ServiceMonitors
|
|
- Log aggregation
|
|
|
|
### Disadvantages
|
|
|
|
1. **Complexity**
|
|
- Requires Kubernetes expertise
|
|
- More components to manage
|
|
- Steeper learning curve
|
|
|
|
2. **Cost**
|
|
- Control plane costs (~$73/month)
|
|
- Additional overhead
|
|
- More resources needed
|
|
|
|
3. **Setup Time**
|
|
- More initial setup
|
|
- Configuration complexity
|
|
- More moving parts
|
|
|
|
## VM/VMSS Deployment
|
|
|
|
### Advantages
|
|
|
|
1. **Simplicity**
|
|
- Direct Docker deployment
|
|
- Easier to understand
|
|
- Less abstraction
|
|
- Faster setup
|
|
|
|
2. **Cost**
|
|
- No control plane costs
|
|
- Pay only for VMs
|
|
- Lower overhead
|
|
- More predictable costs
|
|
|
|
3. **Control**
|
|
- Full VM access
|
|
- Direct Docker control
|
|
- Custom configurations
|
|
- Easier troubleshooting
|
|
|
|
4. **Multi-Region**
|
|
- Easier to deploy across regions
|
|
- Direct VM management
|
|
- Simpler networking
|
|
|
|
5. **Flexibility**
|
|
- Custom VM configurations
|
|
- Different OS options
|
|
- Custom init scripts
|
|
- Direct storage access
|
|
|
|
### Disadvantages
|
|
|
|
1. **Manual Scaling**
|
|
- Manual VM scaling
|
|
- No automatic scaling
|
|
- Manual load balancing
|
|
- Manual updates
|
|
|
|
2. **No Service Discovery**
|
|
- Manual IP management
|
|
- Static configuration
|
|
- Manual DNS setup
|
|
- No automatic health checks
|
|
|
|
3. **Updates**
|
|
- Manual rolling updates
|
|
- Manual configuration updates
|
|
- Manual key rotation
|
|
- More operational overhead
|
|
|
|
4. **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:
|
|
|
|
1. **Validators on VMs**: More control, lower cost
|
|
2. **RPC nodes on AKS**: Auto-scaling, service discovery
|
|
3. **Sentries on VMs**: Simpler, direct control
|
|
|
|
## Migration Path
|
|
|
|
### From VM to AKS
|
|
|
|
1. Export VM configurations
|
|
2. Create Kubernetes manifests
|
|
3. Deploy to AKS
|
|
4. Migrate data
|
|
5. Switch traffic
|
|
6. Decommission VMs
|
|
|
|
### From AKS to VM
|
|
|
|
1. Export Kubernetes configurations
|
|
2. Create VM deployment scripts
|
|
3. Deploy VMs
|
|
4. Migrate data
|
|
5. Switch traffic
|
|
6. 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.
|
|
|
|
## References
|
|
|
|
- [AKS Documentation](https://docs.microsoft.com/azure/aks/)
|
|
- [VM Documentation](https://docs.microsoft.com/azure/virtual-machines/)
|
|
- [VMSS Documentation](https://docs.microsoft.com/azure/virtual-machine-scale-sets/)
|
|
- [Deployment Guide](DEPLOYMENT.md)
|
|
- [VM Deployment Guide](VM_DEPLOYMENT.md)
|
|
|