DocumentationFauxDB Documentation

FauxDB Production Deployment

Production Checklist

Essential items to configure before deploying to production:

Critical

  • Enable TLS/SSL - Encrypt all client connections
  • Configure Authentication - Enable and enforce user authentication
  • Backup Strategy - Regular PostgreSQL backups

Important

  • Set Resource Limits - Configure connection and memory limits
  • Enable Monitoring - Set up Prometheus metrics and alerts
  • Configure Logging - Set up structured JSON logging
  • Performance Tuning - Optimize connection pool and caching

Optional

  • High Availability - Deploy with load balancer and replicas

TLS/SSL Configuration

Secure client connections with TLS/SSL encryption.

Generate Certificates

Generate SSL certificates

# Generate CA key and certificate
openssl genrsa -out ca-key.pem 4096
openssl req -new -x509 -days 3650 -key ca-key.pem -out ca-cert.pem

# Generate server key and certificate
openssl genrsa -out server-key.pem 4096
openssl req -new -key server-key.pem -out server-req.pem
openssl x509 -req -days 3650 -in server-req.pem -CA ca-cert.pem -CAkey ca-key.pem -CAcreateserial -out server-cert.pem

# Set permissions
chmod 600 server-key.pem
chmod 644 server-cert.pem ca-cert.pem

Configure FauxDB

TLS configuration

[security]
tls_enabled = true
tls_cert = "/etc/fauxdb/certs/server-cert.pem"
tls_key = "/etc/fauxdb/certs/server-key.pem"
client_ca = "/etc/fauxdb/certs/ca-cert.pem"
require_client_cert = false  # Set to true for mutual TLS

Docker Deployment

Production-ready Docker Compose configuration.

docker-compose.yml

version: '3.8'

services:
  postgres:
    image: postgres:16
    environment:
      POSTGRES_DB: fauxdb
      POSTGRES_USER: fauxdb
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U fauxdb"]
      interval: 10s
      timeout: 5s
      retries: 5

  fauxdb:
    image: pgelephant/fauxdb:latest
    ports:
      - "27017:27017"  # MongoDB
      - "3306:3306"    # MySQL
      - "9090:9090"    # Prometheus metrics
    environment:
      FAUXDB_PG_CONNECTION_STRING: "postgresql://fauxdb:${POSTGRES_PASSWORD}@postgres:5432/fauxdb"
      FAUXDB_LOG_LEVEL: "info"
      FAUXDB_PROMETHEUS_ENABLED: "true"
    depends_on:
      postgres:
        condition: service_healthy
    restart: unless-stopped

volumes:
  postgres_data:

Kubernetes Deployment

Deploy FauxDB on Kubernetes for production scalability.

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fauxdb
spec:
  replicas: 3
  selector:
    matchLabels:
      app: fauxdb
  template:
    metadata:
      labels:
        app: fauxdb
    spec:
      containers:
      - name: fauxdb
        image: pgelephant/fauxdb:latest
        ports:
        - containerPort: 27017
          name: mongodb
        - containerPort: 3306
          name: mysql
        - containerPort: 9090
          name: metrics
        env:
        - name: FAUXDB_PG_CONNECTION_STRING
          valueFrom:
            secretKeyRef:
              name: fauxdb-secrets
              key: postgres-connection
        resources:
          requests:
            memory: "512Mi"
            cpu: "500m"
          limits:
            memory: "2Gi"
            cpu: "2000m"
        livenessProbe:
          httpGet:
            path: /health
            port: 9090
          initialDelaySeconds: 30
          periodSeconds: 10
        readinessProbe:
          httpGet:
            path: /health
            port: 9090
          initialDelaySeconds: 5
          periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
  name: fauxdb
spec:
  type: LoadBalancer
  selector:
    app: fauxdb
  ports:
  - name: mongodb
    port: 27017
    targetPort: 27017
  - name: mysql
    port: 3306
    targetPort: 3306

High Availability

Deploy FauxDB with redundancy and failover capabilities.

PostgreSQL Replication

  • Primary-replica setup with synchronous replication
  • Configure FauxDB to use read replicas for queries
  • Use pgpool-II or pgbouncer for connection pooling

Load Balancing

  • 3+ FauxDB instances for redundancy
  • HAProxy or NGINX for TCP load balancing
  • Health checks on /health endpoint

Backup & Recovery

Implement backup strategies for data protection.

Backup Strategy

  • Automated daily backups
  • Point-in-time recovery
  • Cross-region replication
  • Test restore procedures
  • Backup verification
  • Disaster recovery plan

PostgreSQL backup example

# Automated backup script
pg_dump -h localhost -U fauxdb -d fauxdb -F c -f /backups/fauxdb_$(date +%Y%m%d_%H%M%S).dump

# Restore from backup
pg_restore -h localhost -U fauxdb -d fauxdb -c /backups/fauxdb_20240101_120000.dump

Related Documentation