webalternatif/flysystem-failover-bundle
Symfony bundle that adds a failover adapter to Flysystem, automatically switching to a backup storage backend when the primary one fails. Configure multiple adapters with priorities so reads and writes keep working during outages or misconfigurations.
Baseline: v0.8.0 (pre-1.0). This is the initial assessment for webalternatif/flysystem-failover-bundle, a Symfony bundle that wires League Flysystem's failover adapter (FailoverFilesystemAdapter) into configuration, so a primary filesystem transparently hands off to one or more fallbacks when an operation fails.
write/read call. This package replaces that with declarative config — a clear buy for teams already on Flysystem.Consider it when:
league/flysystem failover adapter directly, so this bundle's value is config integration, not capability.config/packages/*.yaml rather than scattered through domain code.Look elsewhere when:
CHANGELOG.md; confirm the actual diff before committing — specifically whether config keys, the failover adapter name, or minimum Flysystem/PHP versions changed.For executives: A small, config-only dependency that keeps uploads and generated documents working when a cloud storage provider has an outage or a credential expires. It is cheap insurance against a class of incident that is otherwise invisible until it happens in production. Risk is contained: it is a thin layer over a widely used open-source filesystem library, costs nothing to license, and is isolated behind our storage interface so it can be removed.
For engineering: The bundle is a Symfony configuration wrapper around Flysystem's built-in failover adapter — it does not add new I/O semantics. Adoption means declaring primary and fallback adapters in config and pointing our storage service at the failover name, deleting whatever hand-rolled retry logic we maintain today. Two caveats to plan around: the project is pre-1.0 (v0.8.0), so pin the version and expose storage only through our own interface; and failover is per-operation best-effort, not replication — no reconciliation, no consistency guarantees, so we should not sell it internally as a backup or DR solution. Effort is roughly a day of integration plus test coverage for the degraded-path behaviour.
How can I help you explore Laravel packages today?