The Bootstrapping & Reliability Framework for Apache Flink. Fail fast on configuration, serialize natively without Kryo, and bootstrap stream pipelines with zero boilerplate.
Flinkboot is a comprehensive, production-grade development and reliability framework designed to bootstrap, configure, and secure Apache Flink applications with zero boilerplate.
In standard Flink deployments, misconfigurations, missing parameters, state backend errors, and silent fallbacks to slow Kryo serialization often go unnoticed until runtime—leading to costly cluster failures or degraded pipeline throughput. Flinkboot eliminates these risks before your code ever reaches the TaskManagers:
- Fail-Fast Startup & Multi-Source Configuration: Unifies hierarchical YAML configurations, CLI arguments, and environment variables into immutable, validated Java records using Jakarta Bean Validation (JSR-380). Every parameter, numeric boundary, and regex is verified on the JobManager before resources are provisioned.
- High-Performance Native Serialization: Built-in
@TypeInfofactories and optimized serializers for Java 8 date/time types, collections (List<E>,Map<K, V>), andDuration(encoded in a compact 12-byte binary format) ensure pure native Flink serialization without slow Kryo fallback. - Deep POJO Compliance Verification: Unit testing utilities (
FlinkbootAssertions.assertThat(...).isPojo()) recursively inspect entire data model hierarchies—including nested objects, generics, collections, arrays, tuples, andEithertypes—guaranteeing 100% native Flink serialization compliance at build time. - Declarative Execution & Pre-Built Connectors: Bootstrap Flink's
StreamExecutionEnvironment(checkpointing, RocksDB state backends, restart strategies, savepoints, Web UI) and production-ready connectors (e.g. Apache Kafka, Apache Fluss sources/sinks) with a single method call.
Follow these 3 essential steps to get started with Flinkboot:
-
Setup POM & Avoid Conflicts (MUST READ)
Configure your project's Maven POM, BOM dependencies, and shading relocations to prevent Jackson/Log4j runtime conflicts on your Flink cluster. -
Configure Your Jobs (Load & Merge Configurations)
Define your YAML configurations (defaults toclasspath:job-configuration.yaml), load them into strongly-typed Java models, and apply CLI/environment overrides. -
Create an Execution Environment
Configure execution modes, checkpointing, restart strategies, and RocksDB state backends to instantiate Flink'sStreamExecutionEnvironmentwith zero boilerplate.
- Unified Configuration Loading — Parse and merge multiple YAML files, CLI arguments, and environment variables into immutable Java records.
- Fail-Fast Validation — Catch missing parameters, invalid ranges, and syntax errors on the JobManager before resources are allocated.
- Declarative Execution Environment — Configure and instantiate Flink's
StreamExecutionEnvironmentwith zero boilerplate. - Native JDK Type Serialization — Built-in
@TypeInfofactories forDuration, Java 8 time types, and generic collections without Kryo fallback. - Deep POJO Compliance Verification — Test utility (
FlinkbootAssertions.assertThat(...).isPojo()) to recursively verify that data models serialize natively without Kryo. - Testing Helpers — Load and validate configurations directly in JUnit 5 tests.
- Unified Resource Loading — Load files and assets seamlessly across classpath and file systems with a unified URI syntax (
Resource.of). - Auto-configured Connectors — Production-ready sources and sinks (e.g. Apache Kafka, Apache Fluss) built directly from configuration.
Note
Version-Specific Documentation: The documentation on the main branch tracks the latest development version. If you are using a specific release of Flinkboot, please switch to the corresponding Git tag (e.g. v0.4.0-1.20) to ensure the guides and API references match your exact version.
- How-To Guides Index — Step-by-step guides for configurations, connectors, POJO compliance, and testing.
- Compatibility Matrix — Supported Apache Flink versions and Java (JDK) runtimes.
- Contributing Guide — Guidelines for reporting issues, submitting pull requests, and coding standards.
- Changelog — Release notes and user-facing change history.
Apache®, Apache Flink®, Apache Kafka®, and Apache Fluss™ are trademarks of the Apache Software Foundation. Flinkboot is an independent open-source project and is not affiliated with, endorsed by, or sponsored by the Apache Software Foundation.