BackupAlly

Framework backup-as-code para backups automatizados e seguros.

Visão Geral

BackupAlly é um framework backup-as-code desenvolvido em Rust, projetado para automatizar backups de bancos de dados e arquivos com segurança enterprise-grade e configuração declarativa.

Aspecto Valor
Versão Atual 0.9.8
Linguagem Rust
Licença Proprietária
Status Production-ready

Objetivos do Projeto

Objetivo Principal

Fornecer uma solução de backup que seja:

  1. Declarativa: Configuração como código (TOML)
  2. Segura: Criptografia end-to-end por padrão
  3. Flexível: Suporte a múltiplos drivers e storages
  4. Automatizada: Agendamento inteligente com condições
  5. Observável: Logs estruturados e métricas

Objetivos Específicos

Simplicidade Operacional

  • Instalação em um comando
  • Configuração sem curva de aprendizado íngreme
  • Hot-reload de configurações sem downtime

Segurança por Padrão

  • Criptografia RSA-4096 + AES-256-GCM em todos os backups
  • Secrets nunca expostos em logs ou configurações
  • Key fingerprinting para disaster recovery

Eficiência de Recursos

  • Deduplicação FastCDC para economia de espaço
  • Backups incrementais para economia de tempo
  • Compressão adaptativa (Zstd, Gzip, LZ4)

Flexibilidade de Integração

  • Múltiplos drivers de banco de dados
  • Múltiplos backends de storage
  • API MCP para integração com assistentes de IA

Hipótese de Solução

Problema

Soluções de backup existentes apresentam:

  1. Complexidade: Configuração complexa e pouco intuitiva
  2. Vendor lock-in: Dependência de um único storage provider
  3. Segurança opcional: Criptografia como feature adicional
  4. Monitoramento limitado: Difícil integração com observabilidade

Solução Proposta

BackupAlly resolve esses problemas através de:

Arquitetura Modular

┌─────────────────────────────────────────────────────┐
│                     CLI / MCP                       │
├─────────────────────────────────────────────────────┤
│                   Core Engine                       │
│  ┌─────────┐  ┌──────────┐  ┌─────────────────┐    │
│  │Scheduler│→ │TaskManager│→ │    Executor     │    │
│  └─────────┘  └──────────┘  └─────────────────┘    │
├─────────────────────────────────────────────────────┤
│                    Pipeline                         │
│  ┌─────────┐  ┌──────────┐  ┌─────────────────┐    │
│  │Collector│→ │  Packer  │→ │  Notification   │    │
│  └─────────┘  └──────────┘  └─────────────────┘    │
├─────────────────────────────────────────────────────┤
│     Drivers          │         Storage              │
│  ┌────────────────┐  │  ┌─────────────────────┐    │
│  │MySQL, Postgres │  │  │ Local, S3, B2, MinIO│    │
│  │MongoDB, SQLite │  │  │                     │    │
│  │ClickHouse      │  │  │                     │    │
│  └────────────────┘  │  └─────────────────────┘    │
├─────────────────────────────────────────────────────┤
│                 Security Layer                      │
│         RSA-4096 + AES-256-GCM + Secrets           │
└─────────────────────────────────────────────────────┘

Configuração Declarativa

# Backup como código - versionável, auditável, reproduzível
[task]
id = "mysql-prod"
schedule = "0 2 * * *"

[target]
kind = "database"
driver = "mysql"
password = "${secret:mysql_password}"  # Nunca em plaintext

[[storage]]
driver = "s3"
retention = "daily 7, weekly 4, monthly 6"

Segurança por Design

Camada Implementação
Transporte TLS 1.3
Dados em repouso AES-256-GCM
Chaves RSA-4096
Secrets Encrypted store local
Auditoria Logs estruturados

Multi-Storage

Backups enviados simultaneamente para múltiplos destinos:

Backup → Storage 1 (Local)     → Retenção 7 dias
      → Storage 2 (S3)         → Retenção 30 dias
      → Storage 3 (B2 Archive) → Retenção 1 ano

Validação da Hipótese

Métrica Alvo Status
Tempo de configuração < 5 min ✅ Atingido
Overhead de criptografia < 10% ✅ Atingido
Economia com dedup > 30% ✅ Atingido
Suporte multi-storage ≥ 4 ✅ Atingido (Local, S3, B2, MinIO)
Drivers de BD ≥ 5 ✅ Atingido (MySQL, PG, Mongo, CH, SQLite)

Versionamento

Política de Versões

BackupAlly segue Semantic Versioning:

MAJOR.MINOR.PATCH[-SUFIXO]

MAJOR: Breaking changes na API ou configuração
MINOR: Novas funcionalidades compatíveis
PATCH: Correções de bugs
SUFIXO: rc (release candidate), beta

Histórico de Versões

v0.9.x - Estabilização (Atual)

Versão Data Mudanças
0.9.8 2026-02 Fixes de volume mounting, MCP resources/prompts
0.9.7 2026-02 Melhorias no scheduler
0.9.6 2026-01 Fixes de concorrência

v0.8.x - Security Features

Versão Data Mudanças
0.8.0 2026-01 Key fingerprinting, encrypted secrets, installation wizard

v0.7.x - Modular Tasks

Versão Data Mudanças
0.7.0 2026-01 Arquitetura modular de tasks, hot-reload, CLI de gerenciamento

v0.6.x - Storage Backends

Versão Data Mudanças
0.6.0 2025-12 Suporte a Backblaze B2, MinIO

v0.5.x - Database Drivers

Versão Data Mudanças
0.5.0 2025-11 Drivers MongoDB, ClickHouse, SQLite

Roadmap

v1.0.0 - GA (General Availability)

  • Web UI para monitoramento
  • Kubernetes operator
  • Métricas Prometheus
  • Documentação completa

v1.1.0 - Enterprise Features

  • Multi-region replication
  • Continuous Data Protection (CDP)
  • Binary diff para incrementais
  • Azure Blob e Google Cloud Storage

Compatibilidade

Breaking Changes Policy

  • Breaking changes apenas em versões MAJOR
  • Deprecation warnings por 2 versões MINOR antes de remoção
  • Migration guides para todas as mudanças breaking

Compatibilidade de Configuração

Versão Config Suportada até
v1 (atual) v2.0.0

Requisitos

Sistema

Componente Mínimo Recomendado
CPU 2 cores 4+ cores
RAM 2 GB 4+ GB
Disco 20 GB 100+ GB
OS Linux 5.4+ Ubuntu 22.04+

Dependências Runtime

  • OpenSSL 1.1+ ou LibreSSL
  • glibc 2.31+

Dependências de Build (desenvolvimento)

  • Rust 1.75+
  • OpenSSL dev headers

Suporte

Canais

Canal Uso
GitHub Issues Bugs e feature requests
Documentação Guias e referência
MCP Server Integração com Claude

SLA

Severidade Tempo de Resposta
Crítico (perda de dados) 4 horas
Alto (backup não funciona) 24 horas
Médio (funcionalidade degradada) 72 horas
Baixo (melhorias) Best effort

Próximos Passos