Introduction
Flamingock brings Change-as-Code (CaC) to your entire stack.
It applies versioned, auditable changes to the external systems your application depends on — such as schemas, message brokers, databases, APIs, cloud services, and any other external system your application needs.
Unlike infrastructure-as-code tools, Flamingock runs inside your application (or via the CLI).
It ensures these systems evolve safely, consistently, and in sync with your code at runtime.
What Flamingock manages
Flamingock focuses on application-level changes that your code requires to run safely:
- Database schemas and reference data
- Message queues and schemas
- APIs and configuration values
- Cloud service resources directly tied to your application
- Configuration changes (feature flags, secrets, runtime values)
What Flamingock does not manage
Flamingock is not an infrastructure-as-code tool. It does not provision servers, clusters, or networks — those belong in Terraform, Pulumi, or similar. Instead, Flamingock complements them by handling the runtime changes your application depends on.
Core principles
🔒 Safety by default
When Flamingock cannot guarantee a safe outcome, it stops and requires manual intervention. This prevents silent data corruption and ensures predictable deployments.
📝 Complete auditability
Every change execution is tracked in an audit store, providing a complete history of what was applied, when, by whom, and with what result.
🔄 Recovery strategies
Configurable mechanisms determine how Flamingock handles failures:
- Manual intervention (default): stops on failure and requires human review
- Always retry: automatically retries idempotent operations
Target systems
Flamingock can apply changes to any external service your application interacts with. Examples include:
- Message brokers: e.g. Kafka, RabbitMQ, AWS SQS
- Cloud services: e.g. S3, Lambda, API Gateway
- Databases: SQL (e.g. PostgreSQL, MySQL) and NoSQL (e.g. MongoDB, DynamoDB)
- APIs: e.g. REST endpoints, GraphQL schemas
- Configuration systems: e.g. feature flags, vault secrets
- And any other external system your application needs to evolve
Architecture overview
Changes
The fundamental unit of change. Each Change:
- Has a unique identifier and execution order
- Targets a specific system
- Contains execution logic (and optionally rollback logic)
- Is executed exactly once
Audit store vs target system
- Audit store → where Flamingock tracks execution history (managed by Flamingock).
- Target system → where your business changes are applied (any external service your application interacts with).
Execution flow
- Application startup (or CLI invocation) triggers Flamingock
- Flamingock discovers all Changes
- Checks audit store for pending changes
- Acquires a distributed lock
- Executes changes in order
- Records results in the audit store
- Handles failures according to the configured recovery strategy
Next steps
- Quick start – minimum setup to run Flamingock
- Core concepts – detailed explanation of key concepts
- Changes – anatomy and execution of Changes