At a Glance
| Component | Version | Purpose | Recommended Deployment |
|---|---|---|---|
| Kubernetes | v1.29+ | Container orchestration | Managed (GKE, EKS, AKS) |
| PostgreSQL | v17+ | Primary data store | Outside Kubernetes |
| ClickHouse | v24.9+ | Analytics and logs | Outside Kubernetes |
| Redis (×2) | v7.0+ | Cache and state management | Dedicated deployment |
| OpenSearch | v1.3+ | Full-text search | External service |
| Temporal | v1.25+ | Workflow orchestration | In-cluster or external |
| NATS | v2.10+ | Message broker | In-cluster or external |
| Object Storage | — | Files, attachments, media | AWS S3 / Azure Blob / GCS |
Core Infrastructure
Kubernetes Cluster
- Version: Kubernetes v1.29+
- Purpose: Container orchestration for SuprSend services
- Deployment: Can be deployed on any Kubernetes distribution (GKE, EKS, AKS, DigitalOcean, etc.)
Storage Requirements
| Requirement | Details |
|---|---|
| Persistent Volumes | Required for stateful services |
| Storage Classes | Must support ReadWriteOnce access mode |
| Recommended | SSD storage for optimal performance |
| Size | Minimum 100–200 GB per database instance |
Temporal
- Version: Temporal v1.25+
- Purpose: Workflow orchestration and state management
- Deployment: Can be deployed in-cluster or as external service
- Use Case: Reliable workflow execution and state management
Database Dependencies
PostgreSQL
- Version: PostgreSQL v17+ (required)
- Purpose: Primary data store for users, templates, workflows, and notifications
| Extension | Purpose |
|---|---|
pg_cron | Scheduled jobs |
pgcrypto | Cryptographic functions |
pg_stat_statements | Query performance monitoring |
btree_gin | GIN indexes |
btree_gist | GiST indexes |
| Database | Purpose |
|---|---|
suprsend | Main application database |
defaultdb | Default database for cron jobs |
pronto | Pronto service database |
svix | Svix webhook service database |
temporal | Temporal workflow database |
temporal_visibility | Temporal visibility database |
ClickHouse
- Version: ClickHouse v24.9+
- Purpose: Analytics and logs storage
- Deployment: Recommended outside Kubernetes for better performance
- Storage: High-performance storage recommended (SSD)
- Configuration: Single-node or clustered setup based on scale requirements
OpenSearch
- Version: OpenSearch v1.3+
- Purpose: Full-text search and advanced query capabilities
- Deployment: External service recommended
- Use Case: Advanced search and log analysis features
Data Stores and Messaging
Redis
- Version: Redis v7.0+
- Purpose: Cache and short-term state management
- Deployment: Dedicated deployment preferred (outside Kubernetes)
- Configuration: High availability setup recommended
| Instance | Purpose |
|---|---|
| Redis 1 | Short-term load management |
| Redis 2 | Workflow states and data processing |
NATS
- Version: NATS v2.10+
- Purpose: Message broker for scalable event ingestion
- Deployment: Can be deployed in-cluster or as external service
- Use Case: High-volume event processing scenarios
Object Storage
- Purpose: Object storage for files, attachments, and media assets
- Supported Providers:
- AWS S3 — Amazon Simple Storage Service
- Azure Blob Storage — Microsoft Azure object storage
- Google Cloud Storage — Google Cloud object storage
| Bucket | Purpose |
|---|---|
| Private Bucket | Sensitive files, user uploads, and internal assets |
| Public Bucket | Publicly accessible content and media files |
- Template assets and media files
- User-uploaded attachments
- Backup storage for database dumps
- Access Control: IAM policies for secure access to private bucket
- Public Access: Public read access for public bucket
Setup Guides
PostgreSQL
Primary data store setup and configuration.
Redis
Cache and worker state store setup.
ClickHouse
Analytics and logs storage setup.
OpenSearch
Full-text search and indexing setup.
Temporal
Workflow orchestration engine setup.
Blob Store
Object storage configuration.