Skip to content

PaaS (Platform as a Service)

What is PaaS?

Platform as a Service (PaaS) is a cloud computing model that provides a complete development and deployment environment in the cloud. PaaS sits between Infrastructure as a Service (IaaS) and Software as a Service (SaaS) in the cloud service stack, offering a middle layer that abstracts away infrastructure complexity while providing the tools and services needed to build, deploy, and manage applications.

Unlike OnPrem deployments, PaaS enables your clients to self-serve and deploy your product on demand. They can request a deployment, configure it to their needs, and start using it immediately. This model enables Product-Led Growth (PLG) by removing manual bottlenecks from provisioning. Examples include AWS RDS and Confluent Cloud (Dedicated).

PaaS is ideal for SMBs and enterprises that have found product-market fit and want to scale their PLG motion by building self-serve deployments, usage-based billing, and automated operations at massive scale — reliably, securely, and cost-effectively.

Common PaaS Challenges

  • Seamless tenant onboarding and self-serve deployments with guardrails
  • End-to-End usage-based metering and billing
  • Automated operations to be able to operate at scale
  • Supporting a wide range of customer journeys — from trials to enterprise-grade deployments without rebuilding distribution infrastructure at every stage

Key Characteristics of PaaS

For Service Providers:

  • Abstraction Layer: Hide infrastructure complexity from customers
  • Managed Services: Handle provisioning, scaling, monitoring, and maintenance automatically
  • API-Driven: Provide programmatic access to platform capabilities
  • Self-Service: Enable customers to provision and manage resources independently

For Customers:

  • No Infrastructure Management: Focus on application development rather than server management
  • Rapid Deployment: Deploy applications quickly without setting up underlying infrastructure
  • Scalability: Automatically scale resources based on demand
  • Cost Efficiency: Pay only for resources used, with no upfront infrastructure costs
  • Built-in Services: Access databases, monitoring, security, and other services out of the box

Common PaaS Use Cases

  • Database as a Service (DBaaS): Managed PostgreSQL, MySQL, MongoDB, Redis
  • Application Hosting: Runtime environments for web applications and APIs
  • Analytics Platforms: Data processing, business intelligence, machine learning
  • Integration Platforms: API management, message queues, event streaming

Building PaaS with Omnistrate

Platform as a Service (PaaS) enables you to offer managed database and application services to your customers without them having to worry about the underlying infrastructure. With Omnistrate, you can quickly transform your database or application into a fully managed PaaS offering that your customers can consume on-demand.

PaaS offerings typically include:

  • Managed Databases: PostgreSQL, MySQL, MongoDB, Redis, and other data stores
  • Application Platforms: Runtime environments for various programming languages
  • Development Tools: CI/CD pipelines, testing environments, and deployment tools
  • Middleware Services: Message queues, caching layers, and API gateways

How Omnistrate Enables PaaS Success

Building and operating a successful PaaS requires expertise across three critical areas: Operations, Distribution, and Monetization. Omnistrate provides comprehensive solutions for each:

Operations Excellence

Automated Infrastructure Management

  • Multi-Cloud Orchestration: Deploy and manage services across AWS, GCP, and Azure from a single platform
  • Auto-Scaling: Automatically scale resources based on demand with configurable thresholds
  • Self-Healing: Detect and recover from failures automatically with built-in health checks
  • Zero-Downtime Updates: Roll out updates and patches without service interruption
  • Backup & Recovery: Automated backup scheduling with point-in-time recovery capabilities

Day-2 Operations

  • Monitoring & Alerting: Comprehensive observability with metrics, logs, and custom alerts
  • Security Management: Automated security patching, certificate rotation, and compliance monitoring
  • Performance Optimization: Continuous performance tuning and resource optimization
  • Multi-Tenancy: Secure isolation between customer instances with shared infrastructure efficiency
  • Disaster Recovery: Cross-region replication and automated failover capabilities

Operational Efficiency

  • Infrastructure as Code: Version-controlled infrastructure definitions with GitOps workflows
  • Policy Enforcement: Automated governance and compliance across all deployments
  • Cost Optimization: Intelligent resource allocation and usage-based cost tracking
  • Audit Trails: Complete audit logs for compliance and troubleshooting

Distribution & Go-to-Market

Multi-Channel Distribution

  • Self-Service Portals: White-labeled customer portals for service provisioning and management
  • API-First Architecture: RESTful APIs for programmatic access and third-party integrations
  • Marketplace Integration: Native integration with AWS, GCP, and Azure marketplaces
  • Partner Channels: Enable reseller and partner distribution models
  • Developer Experience: SDKs, CLI tools, and comprehensive documentation

Global Reach

  • Multi-Region Deployment: Deploy services in multiple regions for low latency and compliance
  • BYOC Support: Enable customers to deploy in their own cloud accounts for security and compliance
  • Hybrid Deployment: Support both provider-hosted and customer-hosted deployment models
  • Edge Computing: Deploy services closer to end-users for improved performance

Customer Onboarding

  • Instant Provisioning: Deploy new instances in minutes, not hours or days
  • Trial Management: Automated trial provisioning with usage limits and expiration
  • Migration Tools: Assist customers in migrating from existing solutions
  • Documentation & Support: Auto-generated documentation and integrated support systems

Monetization & Business Growth

Flexible Pricing Models

  • Usage-Based Billing: Charge customers based on actual resource consumption
  • Subscription Tiers: Create multiple service tiers with different feature sets
  • Marketplace Billing: Leverage cloud marketplace billing for simplified customer acquisition
  • Custom Pricing: Support enterprise contracts with custom pricing structures
  • Freemium Models: Offer free tiers to drive adoption and upselling

Revenue Operations

  • Automated Metering: Track resource usage across all customer instances automatically
  • Billing Integration: Connect with popular billing systems like Stripe, Chargebee, and others
  • Cost Attribution: Understand the true cost of serving each customer
  • Revenue Analytics: Detailed insights into revenue trends, customer lifetime value, and churn
  • Invoicing & Collections: Automated invoice generation and payment processing

PaaS Benefits with Omnistrate

Building a PaaS with Omnistrate provides several key advantages:

  • Rapid Time-to-Market: Transform your existing database or application into a managed service in days, not months
  • Multi-Cloud Support: Deploy across AWS, GCP, and Azure without vendor lock-in
  • Automated Operations: Handle provisioning, scaling, backups, monitoring, and maintenance automatically
  • Customer Self-Service: Provide intuitive portals for customers to manage their instances
  • Flexible Deployment Models: Support both provider-hosted and customer-hosted (BYOC) deployments
  • Built-in Observability: Comprehensive metrics, logging, and alerting out of the box
  • Scalable Business Model: Start small and scale to enterprise with built-in monetization tools
  • Reduced Operational Overhead: Focus on your core product while Omnistrate handles infrastructure complexity

PostgreSQL PaaS Example

Let's walk through creating a PostgreSQL PaaS service using Omnistrate. We'll start with a basic setup and incrementally add enterprise features.

Basic PostgreSQL Service

Here's a simple PostgreSQL service definition:

version: "3.9"

services:
  PostgreSQL:
    image: bitnami/postgresql:latest
    ports:
      - 5432:5432
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      - POSTGRESQL_PASSWORD=defaultpassword
      - POSTGRESQL_DATABASE=postgres
      - POSTGRESQL_USERNAME=postgres
      - POSTGRESQL_POSTGRES_PASSWORD=your-secure-password

While this works, it lacks the enterprise features needed for a production PaaS offering. Let's enhance it step by step.

Step 1: Configure Cloud Provider Account

First, specify where to deploy your PostgreSQL instances. You can deploy in your own account (provider-hosted) or your customers' accounts (BYOC).

Provider-Hosted Deployment (Multi-Cloud)

x-omnistrate-my-account:
  awsAccountId: 'your-aws-account-id'
  awsBootstrapRoleAccountArn: 'arn:aws:iam::your-aws-account-id:role/omnistrate-bootstrap-role'
  gcpProjectId: 'your-gcp-project-id'
  gcpProjectNumber: 'your-gcp-project-number'
  gcpServiceAccountEmail: '[email protected]'
  azureSubscriptionId: 'your-azure-subscription-id'
  azureTenantId: 'your-azure-tenant-id'

BYOC (Bring Your Own Cloud) Support

x-omnistrate-byoa:
  awsAccountId: 'your-aws-account-id'
  awsBootstrapRoleAccountArn: 'arn:aws:iam::your-aws-account-id:role/omnistrate-bootstrap-role'

Step 2: Add Observability and Integrations

Enable comprehensive monitoring and logging:

x-omnistrate-integrations:
  - omnistrateLogging
  - omnistrateMetrics

Step 3: Add Customer Customization

Allow customers to configure their PostgreSQL instances:

services:
  PostgreSQL:
    image: bitnami/postgresql:latest
    ports:
      - 5432:5432
    volumes:
      - ./data:/var/lib/postgresql/data
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          apiParam: instanceType
        - cloudProvider: gcp
          apiParam: instanceType
        - cloudProvider: azure
          apiParam: instanceType
    x-omnistrate-storage:
      aws:
        instanceStorageType: AWS::EBS_GP3
        instanceStorageSizeGiAPIParam: storageSize
        instanceStorageIOPSAPIParam: storageIOPS
      gcp:
        instanceStorageType: GCP::PD_SSD
        instanceStorageSizeGiAPIParam: storageSize
      azure:
        instanceStorageType: AZURE::PREMIUM_LRS
        instanceStorageSizeGiAPIParam: storageSize
    environment:
      - POSTGRESQL_PASSWORD=$var.postgresqlPassword
      - POSTGRESQL_DATABASE=$var.postgresqlDatabase
      - POSTGRESQL_USERNAME=$var.postgresqlUsername
      - POSTGRESQL_POSTGRES_PASSWORD=$var.postgresqlRootPassword
      - POSTGRESQL_PGAUDIT_LOG=READ,WRITE
      - POSTGRESQL_LOG_HOSTNAME=true
    x-omnistrate-api-params:
      - key: instanceType
        description: Instance Type for PostgreSQL
        name: Instance Type
        type: String
        modifiable: true
        required: true
        export: true
      - key: storageSize
        description: Storage Size in GB
        name: Storage Size (GB)
        type: Float64
        modifiable: true
        required: true
        export: true
        defaultValue: "100"
        limits:
          min: 20
          max: 1000
      - key: storageIOPS
        description: Storage IOPS
        name: Storage IOPS
        type: Float64
        modifiable: true
        required: false
        export: true
        defaultValue: "3000"
      - key: postgresqlUsername
        description: Database Username
        name: Database Username
        type: String
        modifiable: false
        required: true
        export: true
      - key: postgresqlPassword
        description: Database Password
        name: Database Password
        type: String
        modifiable: false
        required: true
        export: false
      - key: postgresqlDatabase
        description: Database Name
        name: Database Name
        type: String
        modifiable: false
        required: true
        export: true
        defaultValue: "postgres"
      - key: postgresqlRootPassword
        description: Root Password
        name: Root Password
        type: String
        modifiable: false
        required: false
        export: false
        defaultValue: "generate-secure-password"

Step 4: Add High Availability with Read Replicas

Create a master-replica setup for high availability:

services:
  Master:
    image: bitnami/postgresql:latest
    ports:
      - 5432:5432
    volumes:
      - ./data:/var/lib/postgresql/data
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          apiParam: masterInstanceType
        - cloudProvider: gcp
          apiParam: masterInstanceType
        - cloudProvider: azure
          apiParam: masterInstanceType
    x-omnistrate-capabilities:
      enableEndpointPerReplica: true
      enableMultiZone: true
    environment:
      - POSTGRESQL_PASSWORD=$var.postgresqlPassword
      - POSTGRESQL_DATABASE=$var.postgresqlDatabase
      - POSTGRESQL_USERNAME=$var.postgresqlUsername
      - POSTGRESQL_POSTGRES_PASSWORD=$var.postgresqlRootPassword
      - POSTGRESQL_REPLICATION_MODE=master
      - POSTGRESQL_REPLICATION_USER=repl_user
      - POSTGRESQL_REPLICATION_PASSWORD=$var.replicationPassword
      - POSTGRESQL_PGAUDIT_LOG=READ,WRITE
      - POSTGRESQL_LOG_HOSTNAME=true
    x-omnistrate-api-params:
      - key: masterInstanceType
        description: Master Instance Type
        name: Master Instance Type
        type: String
        modifiable: true
        required: true
        export: true
      - key: postgresqlUsername
        description: Database Username
        name: Database Username
        type: String
        modifiable: false
        required: true
        export: true
      - key: postgresqlPassword
        description: Database Password
        name: Database Password
        type: String
        modifiable: false
        required: true
        export: false
      - key: postgresqlDatabase
        description: Database Name
        name: Database Name
        type: String
        modifiable: false
        required: true
        export: true
      - key: postgresqlRootPassword
        description: Root Password
        name: Root Password
        type: String
        modifiable: false
        required: false
        export: false
        defaultValue: "rootpassword123"
      - key: replicationPassword
        description: Replication Password
        name: Replication Password
        type: String
        modifiable: false
        required: false
        export: false

  Replica:
    image: bitnami/postgresql:latest
    ports:
      - 5433:5432
    volumes:
      - ./data:/var/lib/postgresql/data
    x-omnistrate-compute:
      replicaCountAPIParam: numReadReplicas
      instanceTypes:
        - cloudProvider: aws
          apiParam: replicaInstanceType
        - cloudProvider: gcp
          apiParam: replicaInstanceType
        - cloudProvider: azure
          apiParam: replicaInstanceType
    x-omnistrate-capabilities:
      enableMultiZone: true
      enableEndpointPerReplica: true
    environment:
      - POSTGRESQL_PASSWORD=$var.postgresqlPassword
      - POSTGRESQL_MASTER_HOST=Master
      - POSTGRESQL_MASTER_PORT_NUMBER=5432
      - POSTGRESQL_REPLICATION_MODE=slave
      - POSTGRESQL_REPLICATION_USER=repl_user
      - POSTGRESQL_REPLICATION_PASSWORD=$var.replicationPassword
      - POSTGRESQL_PGAUDIT_LOG=READ,WRITE
      - POSTGRESQL_LOG_HOSTNAME=true
    x-omnistrate-api-params:
      - key: replicaInstanceType
        description: Replica Instance Type
        name: Replica Instance Type
        type: String
        modifiable: true
        required: true
        export: true
      - key: numReadReplicas
        description: Number of Read Replicas
        name: Number of Read Replicas
        type: Float64
        modifiable: true
        required: false
        export: true
        defaultValue: "1"
        limits:
          min: 0
          max: 5
      - key: postgresqlPassword
        description: Database Password
        name: Database Password
        type: String
        modifiable: false
        required: true
        export: false
      - key: replicationPassword
        description: Replication Password
        name: Replication Password
        type: String
        modifiable: false
        required: false
        export: false
        defaultValue: "replpassword123"

Step 5: Add Enterprise Features

Enable autoscaling, backup, and advanced capabilities:

x-omnistrate-capabilities:
  enableMultiZone: true
  enableEndpointPerReplica: true
  autoscaling:
    minReplicas: 1
    maxReplicas: 10
    idleMinutesBeforeScalingDown: 5
    idleThreshold: 20
    overUtilizedMinutesBeforeScalingUp: 2
    overUtilizedThreshold: 80
  backupConfiguration:
    backupRetentionInDays: 7
    backupPeriodInHours: 2

Complete PostgreSQL PaaS Example

Here's the complete compose specification for a production-ready PostgreSQL PaaS:

version: "3.9"

x-omnistrate-my-account:
  awsAccountId: 'your-aws-account-id'
  awsBootstrapRoleAccountArn: 'arn:aws:iam::your-aws-account-id:role/omnistrate-bootstrap-role'
  gcpProjectId: 'your-gcp-project-id'
  gcpProjectNumber: 'your-gcp-project-number'
  gcpServiceAccountEmail: '[email protected]'
  azureSubscriptionId: 'your-azure-subscription-id'
  azureTenantId: 'your-azure-tenant-id'

x-omnistrate-byoa:
  awsAccountId: 'your-aws-account-id'
  awsBootstrapRoleAccountArn: 'arn:aws:iam::your-aws-account-id:role/omnistrate-bootstrap-role'

x-omnistrate-integrations:
  - omnistrateLogging
  - omnistrateMetrics

services:
  Master:
    image: bitnami/postgresql:latest
    ports:
      - 5432:5432
    volumes:
      - ./data:/var/lib/postgresql/data
    x-omnistrate-compute:
      instanceTypes:
        - cloudProvider: aws
          apiParam: masterInstanceType
        - cloudProvider: gcp
          apiParam: masterInstanceType
        - cloudProvider: azure
          apiParam: masterInstanceType
    x-omnistrate-storage:
      aws:
        instanceStorageType: AWS::EBS_GP3
        instanceStorageSizeGiAPIParam: storageSize
        instanceStorageIOPSAPIParam: storageIOPS
      gcp:
        instanceStorageType: GCP::PD_SSD
        instanceStorageSizeGiAPIParam: storageSize
      azure:
        instanceStorageType: AZURE::PREMIUM_LRS
        instanceStorageSizeGiAPIParam: storageSize
    x-omnistrate-capabilities:
      enableEndpointPerReplica: true
      enableMultiZone: true
      autoscaling:
        minReplicas: 1
        maxReplicas: 3
        idleMinutesBeforeScalingDown: 5
        idleThreshold: 20
        overUtilizedMinutesBeforeScalingUp: 2
        overUtilizedThreshold: 80
    environment:
      - POSTGRESQL_PASSWORD=$var.postgresqlPassword
      - POSTGRESQL_DATABASE=$var.postgresqlDatabase
      - POSTGRESQL_USERNAME=$var.postgresqlUsername
      - POSTGRESQL_POSTGRES_PASSWORD=$var.postgresqlRootPassword
      - POSTGRESQL_REPLICATION_MODE=master
      - POSTGRESQL_REPLICATION_USER=repl_user
      - POSTGRESQL_REPLICATION_PASSWORD=$var.replicationPassword
      - POSTGRESQL_PGAUDIT_LOG=READ,WRITE
      - POSTGRESQL_LOG_HOSTNAME=true
      - POSTGRESQL_DATA_DIR=/var/lib/postgresql/data/dbdata
      - SECURITY_CONTEXT_USER_ID=1001
      - SECURITY_CONTEXT_FS_GROUP=1001
      - SECURITY_CONTEXT_GROUP_ID=0
    x-omnistrate-api-params:
      - key: masterInstanceType
        description: Master Instance Type
        name: Master Instance Type
        type: String
        modifiable: true
        required: true
        export: true
      - key: storageSize
        description: Storage Size in GB
        name: Storage Size (GB)
        type: Float64
        modifiable: true
        required: true
        export: true
        defaultValue: "100"
        limits:
          min: 20
          max: 1000
      - key: storageIOPS
        description: Storage IOPS
        name: Storage IOPS
        type: Float64
        modifiable: true
        required: false
        export: true
        defaultValue: "3000"
      - key: postgresqlUsername
        description: Database Username
        name: Database Username
        type: String
        modifiable: false
        required: true
        export: true
      - key: postgresqlPassword
        description: Database Password
        name: Database Password
        type: String
        modifiable: false
        required: true
        export: false
      - key: postgresqlDatabase
        description: Database Name
        name: Database Name
        type: String
        modifiable: false
        required: true
        export: true
        defaultValue: "postgres"
      - key: postgresqlRootPassword
        description: Root Password
        name: Root Password
        type: String
        modifiable: false
        required: false
        export: false
        defaultValue: "CHANGEME_SECURE_PASSWORD"
      - key: replicationPassword
        description: Replication Password
        name: Replication Password
        type: String
        modifiable: false
        required: false
        export: false
        defaultValue: "CHANGEME_SECURE_PASSWORD"
    x-omnistrate-mode-internal: true

  Replica:
    image: bitnami/postgresql:latest
    ports:
      - 5433:5432
    volumes:
      - ./data:/var/lib/postgresql/data
    x-omnistrate-compute:
      replicaCountAPIParam: numReadReplicas
      instanceTypes:
        - cloudProvider: aws
          apiParam: replicaInstanceType
        - cloudProvider: gcp
          apiParam: replicaInstanceType
        - cloudProvider: azure
          apiParam: replicaInstanceType
    x-omnistrate-capabilities:
      enableMultiZone: true
      enableEndpointPerReplica: true
    environment:
      - POSTGRESQL_PASSWORD=$var.postgresqlPassword
      - POSTGRESQL_MASTER_HOST=Master
      - POSTGRESQL_MASTER_PORT_NUMBER=5432
      - POSTGRESQL_REPLICATION_MODE=slave
      - POSTGRESQL_REPLICATION_USER=repl_user
      - POSTGRESQL_REPLICATION_PASSWORD=$var.replicationPassword
      - POSTGRESQL_PGAUDIT_LOG=READ,WRITE
      - POSTGRESQL_LOG_HOSTNAME=true
      - POSTGRESQL_DATA_DIR=/var/lib/postgresql/data/dbdata
      - SECURITY_CONTEXT_USER_ID=1001
      - SECURITY_CONTEXT_FS_GROUP=1001
      - SECURITY_CONTEXT_GROUP_ID=0
    x-omnistrate-api-params:
      - key: replicaInstanceType
        description: Replica Instance Type
        name: Replica Instance Type
        type: String
        modifiable: true
        required: true
        export: true
      - key: numReadReplicas
        description: Number of Read Replicas
        name: Number of Read Replicas
        type: Float64
        modifiable: true
        required: false
        export: true
        defaultValue: "1"
        limits:
          min: 0
          max: 5
      - key: postgresqlPassword
        description: Database Password
        name: Database Password
        type: String
        modifiable: false
        required: true
        export: false
      - key: replicationPassword
        description: Replication Password
        name: Replication Password
        type: String
        modifiable: false
        required: false
        export: false
        defaultValue: "CHANGEME_SECURE_PASSWORD"
    x-omnistrate-mode-internal: true

  Cluster:
    image: omnistrate/noop
    x-omnistrate-api-params:
      - key: instanceType
        description: Instance Type
        name: Instance Type
        type: String
        modifiable: true
        required: true
        export: true
        parameterDependencyMap:
          Master: masterInstanceType
          Replica: replicaInstanceType
      - key: postgresqlPassword
        description: Database Password
        name: Database Password
        type: String
        modifiable: false
        required: true
        export: false
        parameterDependencyMap:
          Master: postgresqlPassword
          Replica: postgresqlPassword
      - key: postgresqlUsername
        description: Database Username
        name: Database Username
        type: String
        modifiable: false
        required: true
        export: true
        parameterDependencyMap:
          Master: postgresqlUsername
      - key: postgresqlDatabase
        description: Database Name
        name: Database Name
        type: String
        modifiable: false
        required: true
        export: true
        defaultValue: "postgres"
        parameterDependencyMap:
          Master: postgresqlDatabase
      - key: numReadReplicas
        description: Number of Read Replicas
        name: Number of Read Replicas
        type: Float64
        modifiable: true
        required: false
        export: true
        defaultValue: "1"
        limits:
          min: 0
          max: 5
        parameterDependencyMap:
          Replica: numReadReplicas
      - key: storageSize
        description: Storage Size in GB
        name: Storage Size (GB)
        type: Float64
        modifiable: true
        required: true
        export: true
        defaultValue: "100"
        limits:
          min: 20
          max: 1000
        parameterDependencyMap:
          Master: storageSize
    depends_on:
      - Master
      - Replica
    x-omnistrate-mode-internal: false

Key Features of This PostgreSQL PaaS

This example demonstrates several important PaaS capabilities:

Multi-Cloud Support

  • Deploy on AWS, GCP, or Azure
  • Consistent experience across cloud providers
  • Cloud-specific optimizations (storage types, instance types)

High Availability

  • Master-replica architecture
  • Multi-zone deployment
  • Automatic failover capabilities

Customer Customization

  • Configurable instance types
  • Adjustable storage size and IOPS
  • Scalable read replicas (0-5 replicas)

Enterprise Features

  • Comprehensive monitoring and logging
  • Automated backups
  • Autoscaling based on utilization
  • Security and compliance best practices

Deployment Flexibility

  • Multi-cloud provider-hosted option with private networking capabilities
  • BYOC option for enterprises

Getting Started with your PaaS

To create your PaaS:

  1. Set up your accounts: Configure your cloud provider accounts using the bootstrap roles
  2. Customize the compose spec: Modify the example above to match your requirements
  3. Deploy your service: Use the Omnistrate platform to deploy your PaaS
  4. Test and iterate: Create test instances and refine your offering
  5. Launch to customers: Make your PaaS available to customers

For more detailed examples and advanced configurations, check out our examples section and build guides.

For concrete examples of creating a PostgreSQL PaaS using Docker Compose, Helm, and Kubernetes Operators, see the Omnistrate Community PostgreSQL PaaS repository.