Skip to main content

Cloud Provider Migration Guide

This guide helps you migrate from older Zenoo Hub versions to the new cloud provider architecture. The good news: your existing configuration continues to work with zero changes required.

Overview of Changes

What Changed

Architecture:
  • AWS-specific code moved from backend to cloud-provider-aws module
  • New abstraction layer (cloud-provider-api) for provider independence
  • Domain models moved to hub-domain module
  • Backend now uses adapters to access cloud providers
What This Means:
  • Cleaner code organization
  • Support for multiple cloud providers
  • Better testability
  • Easier maintenance

What Didn’t Change

  • Configuration: Old hub.aws.* properties still work
  • Functionality: All features work exactly the same
  • Data: No migration of DynamoDB tables or secrets needed
  • API: No changes to Hub Client API or Admin API

Backward Compatibility Guarantee

The new architecture maintains 100% backward compatibility:
Nothing breaks. Your existing deployments will continue running without any configuration changes.

Migration Strategies

When to Use:
  • You’re happy with current configuration
  • No immediate need for multi-cloud support
  • Want to minimize changes
Action Required: None Your configuration continues to work as-is. The Hub automatically uses the AWS provider when it detects hub.aws.* properties.

Strategy 2: Adopt New Configuration Style

When to Use:
  • Starting a new deployment
  • Want to be explicit about provider selection
  • Planning for future multi-cloud support
Migration Steps:
  1. Add explicit provider selection:
  1. Keep existing AWS configuration:
  1. Test and deploy
Benefits:
  • Future-proof configuration
  • Clearer intent
  • Easier to switch providers later

Strategy 3: Full Migration with Reorganization

When to Use:
  • Major version upgrade
  • Infrastructure refresh
  • Opportunity to clean up configuration
Migration Steps:
  1. Review current configuration:
  1. Reorganize configuration with new structure:
Before:
After:
  1. Update dependencies in build.gradle (if building from source):
No changes needed - dependencies are automatically managed.
  1. Test in non-production environment:
  1. Deploy to production

Step-by-Step Migration

Prerequisites

  • Backup current configuration
  • Review current DynamoDB table structure
  • Document current secrets in Secrets Manager
  • Access to AWS console for verification
  • Non-production environment for testing

Phase 1: Preparation (No Downtime)

1. Inventory Current Resources:
2. Document Current Configuration: Create a configuration inventory:
  • Table prefixes
  • Secret prefixes
  • IAM roles/permissions
  • Multi-region setup (if any)
  • Tags
3. Review Dependencies: Check if any custom code depends on old package names:

Phase 2: Testing (Non-Production)

1. Update Configuration File: Add new provider configuration to your test environment:
2. Run Tests:
3. Verify Functionality: Test these key operations:
  • Component registration
  • Component retrieval
  • Configuration storage/retrieval
  • API key creation/validation
  • Sharable token operations
4. Performance Testing: Compare performance with old version:

Phase 3: Staging Deployment (Limited Downtime)

1. Deploy to Staging:
2. Monitor Logs:
3. Smoke Testing: Run smoke tests against staging:
4. Soak Test: Run staging under load for 24-48 hours:
  • Monitor error rates
  • Check DynamoDB metrics
  • Verify Secrets Manager API calls
  • Watch for memory leaks or performance degradation

Phase 4: Production Deployment (Planned Downtime)

Option A: Rolling Deployment (No Downtime) 1. Prepare:
2. Deploy:
3. Verify:
Option B: Blue-Green Deployment (Minimal Downtime) 1. Deploy Green Environment:
2. Smoke Test Green:
3. Switch Traffic:
4. Monitor:
5. Rollback if Needed:

Phase 5: Verification & Cleanup

1. Production Verification:
  • All components loading correctly
  • Configuration retrieval working
  • API keys validating properly
  • Sharables creating and expiring
  • No error spikes in logs
  • DynamoDB metrics normal
  • Secrets Manager calls within limits
2. Monitor Key Metrics:
3. Gradual Traffic Increase: If using canary deployment:
4. Cleanup Old Deployment: After 24-48 hours of stable operation:

Rollback Procedures

If Issues Arise

Immediate Rollback:
Configuration Rollback:

Common Issues and Solutions

Issue: Tables not found Solution:
Issue: Secrets not accessible Solution:
  • Verify IAM permissions
  • Check secret name format
  • Confirm region is correct
Issue: Performance degradation Solution:
  • Enable secrets caching
  • Check DynamoDB capacity
  • Review retry configuration

Testing Checklist

Before migrating to production:

Functional Tests

  • Component registration and retrieval
  • Component updates and versioning
  • Configuration storage and retrieval
  • API key creation and validation
  • Sharable token creation and expiration
  • Workflow execution end-to-end

Non-Functional Tests

  • Performance comparable to old version
  • No memory leaks
  • Error handling works correctly
  • Logging provides useful information
  • Metrics are being collected

Infrastructure Tests

  • DynamoDB tables created correctly
  • Secrets stored and retrieved
  • IAM permissions sufficient
  • Multi-region replication (if configured)
  • TTL working on sharables table

Post-Migration

Monitoring

Set up these CloudWatch alarms:

Optimization

After stabilization: 1. Enable Secrets Caching:
2. Tune DynamoDB:
3. Add Tags for Cost Tracking:

Getting Help

If you encounter issues during migration:
  1. Check the logs:
  2. Review configuration:
  3. Verify AWS resources:
  4. Consult documentation:

Summary

The cloud provider migration is designed to be zero-downtime and backward compatible. For most users:
  • No action required
  • Configuration continues to work
  • No data migration needed
  • All features work the same
For users who want to adopt the new configuration style, follow the step-by-step guide above and test thoroughly in non-production environments first.

See Also