Skip to main content

Cloud Provider Support

The Zenoo Hub features a multi-cloud architecture that allows you to deploy on different cloud platforms without changing your business logic. Through a pluggable cloud provider abstraction layer, the Hub decouples storage, configuration, and secrets management from the core workflow engine.

Overview

The cloud provider abstraction enables:
  • Multi-cloud deployment - Deploy on AWS, Azure, GCP, or local infrastructure
  • Provider flexibility - Switch cloud providers without code changes
  • Testability - Test locally without cloud dependencies
  • Future-proof architecture - Add new providers as requirements evolve

Supported Providers

Production Ready

AWS (Amazon Web Services)

The AWS provider is fully supported and production-ready, using:
  • DynamoDB for component and API key storage
  • Secrets Manager for configuration and secrets management
  • CloudWatch for metrics publishing
Learn more about AWS provider

Local Provider

The local provider is production-ready for development and testing:
  • In-memory storage using thread-safe ConcurrentHashMap
  • Zero external dependencies - no AWS, Docker, or cloud services
  • Instant startup with no configuration overhead
  • Automatic cleanup for expired sharables
Best for: Local development, integration testing, CI/CD pipelines, prototyping Learn more about local provider

GCP (Google Cloud Platform)

The GCP provider is fully supported and production-ready, using:
  • Cloud Firestore (Native Mode) for component and API key storage
  • Secret Manager for configuration and secrets management
  • Cloud Monitoring for metrics publishing
Learn more about GCP provider

Development Tools

LocalStack

For local testing with AWS service emulation:
  • DynamoDB, Secrets Manager, and other AWS services
  • Useful for testing AWS-specific behavior locally
Learn more about local development

Future Support

The architecture is designed to support additional providers:
  • Azure - Cosmos DB, Key Vault, Application Insights
  • Custom - Implement your own provider for specialized infrastructure
Learn how to implement a provider

How It Works

The Hub uses a clean abstraction layer that separates business logic from infrastructure:
The backend only depends on cloud-agnostic interfaces. The actual implementation is injected by Spring Boot based on your configuration.

Choosing a Provider

Select your cloud provider in application.yml:
Available providers:
  • aws - Production deployments on AWS (default for backward compatibility)
  • gcp - Production deployments on Google Cloud Platform
  • local - Local development and testing (zero dependencies)
If not specified, the Hub defaults to AWS for backward compatibility.

Key Features

Component Storage

All cloud providers implement the ComponentStore interface for:
  • Storing and retrieving Hub components with versioning
  • Managing component revisions
  • Supporting optimistic locking for concurrent updates

Configuration Management

Providers implement ComponentConfigStorage for:
  • Storing component configuration securely
  • Version management
  • Encrypted storage where supported

Secrets Management

Providers implement ApiKeySecretStorage for:
  • Managing API key secrets
  • Permission management
  • Secure storage with encryption

Sharable Token Storage

Providers implement SharableStore for:
  • Temporary token storage with TTL
  • Automatic expiration
  • High-performance retrieval

Configuration Overview

Each provider has specific configuration properties. Here’s a comparison:

Getting Started

Using AWS Provider (Default)

  1. Configure AWS credentials:
  1. Ensure IAM permissions for DynamoDB and Secrets Manager
  2. Deploy - Tables and secrets are created automatically
Complete AWS setup guide

Using Local Provider

  1. Add dependency to build.gradle:
  1. Configure local provider in application.yml:
  1. Run Hub - that’s it! No external services needed.
Features:
  • Instant startup (<100ms)
  • No AWS credentials
  • No Docker/LocalStack
  • Perfect for testing and CI/CD
Complete local provider guide

Using GCP Provider

  1. Add dependency to build.gradle:
  1. Enable GCP APIs:
  1. Configure GCP provider in application.yml:
  1. Deploy - Firestore collections and secrets are created automatically
Features:
  • Application Default Credentials (ADC) support
  • Firestore Native Mode for storage
  • Secret Manager for configuration
  • Cloud Monitoring for metrics
  • Workload Identity on GKE
Complete GCP provider guide

Using LocalStack (AWS Emulation)

For testing AWS-specific behavior locally:
  1. Start LocalStack:
  1. Configure Hub for LocalStack:
Complete local development guide

Architecture Deep Dive

For a detailed explanation of the cloud provider architecture, including:
  • Module structure
  • Interface design
  • Adapter pattern
  • Exception handling
  • Testing strategies
Read the architecture documentation

Migration Guide

If you’re upgrading from an older version of the Hub:
  • Your existing hub.aws.* configuration continues to work
  • No code changes required
  • Migration is optional but recommended
Read the migration guide

Configuration Reference

For a complete reference of all configuration properties: View configuration reference

See Also