# Docker Deployment Guide

# Architecture Overview

The persistence system consists of two separate Docker containers:

  1. Engine container (writes command logs)
  2. Snapshotter container (generates snapshots and manages archival)

These containers must share access to the persistence volume, but can handle archived data separately.

# Volume Configuration

# Required Directory Structure

/app/persistence/           # Main persistence directory
└── archived/              # Archive subdirectory

# Volume Considerations

  • Engine requires read/write access to /app/persistence
  • Snapshotter requires read/write access to both /app/persistence and /app/persistence/archived
  • Archived directory can optionally be mounted as a separate volume

# Cloud Deployment Considerations

# Storage Classes

  • Main persistence volume:

    • Requires high IOPS
    • Should use SSD-backed storage
    • Example: AWS EBS gp3 or io2
    • Size based on expected daily command log generation
  • Archive volume:

    • Can use slower, cheaper storage
    • Consider automated lifecycle policies
    • Example: AWS EBS st1 or sc1
    • Size based on retention requirements

# Volume Management

volumes:
  persistence:
    driver: ebs  # Example for AWS
    driver_opts:
      type: gp3
      size: 100
      iops: 3000
  archive:
    driver: ebs
    driver_opts:
      type: st1
      size: 500

# Operational Considerations

# Process Flow

  1. Engine writes command logs to /app/persistence
  2. Engine rotates to new command log periodically
  3. Snapshotter detects completed command logs
  4. Snapshotter generates new snapshot
  5. Snapshotter moves older files to /app/persistence/archived

# Latency and Throughput

  1. Engine implements write-ahead, persisting all commands before processing
  2. Persistence volume iops setting will impact latency.
  3. Higher iops will enable lower latency through the engine.

# Monitoring

Monitor:

  • Available space in both volumes
  • Rate of command log generation
  • Snapshot generation frequency
  • Archive directory growth

# Backup Strategies

  • Archive volume can be backed up independently
  • Consider point-in-time snapshots of the persistence volume
  • Implement retention policies for archived data