Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Etl Core Bundle Laravel Package

boutdecode/etl-core-bundle

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture Fit

  • Domain-Driven Design (DDD) Alignment: The bundle’s architecture (workflows, pipelines, steps) aligns well with DDD principles, making it suitable for complex data processing workflows where domain clarity is critical. The separation of Workflow (template) and Pipeline (execution instance) mirrors DDD’s distinction between domain logic and runtime state.
  • Symfony Ecosystem Fit: Leverages Symfony’s Messenger (CQS), Workflow (state management), and Doctrine ORM (persistence), reducing friction for Symfony-based applications. The bundle’s reliance on these components ensures consistency with Symfony’s design patterns.
  • Extensibility: The strategy pattern (via ExecutableStep tagged services) and middleware support (pipeline/step-level) allow for pluggable, reusable ETL logic without modifying core bundle code. This is ideal for teams needing custom extract/transform/load steps.
  • Observability: Built-in history tracking (PipelineHistory, StepHistory) and state management (Symfony Workflow) provide audit trails and debugging capabilities, critical for production ETL pipelines.

Integration Feasibility

  • Symfony Compatibility: Requires Symfony 6.4+ and PHP 8.2+, which is a blocker for legacy Symfony 5.x projects. However, the bundle’s modular design (e.g., abstract entities) allows for partial adoption (e.g., using only the Context DTO or middleware patterns).
  • Doctrine ORM Dependency: Mandatory for persistence, but the bundle provides abstract base classes for entities, simplifying integration. Teams using other ORMs (e.g., Eloquent) would need to implement custom persistence layers.
  • Flow-PHP ETL Dependency: The bundle depends on flow-php/etl (~0.25), which may introduce additional dependencies or version constraints. This could complicate dependency management in large projects.
  • CQS Adoption: Requires familiarity with Symfony Messenger and CQS patterns, which may require upskilling for teams new to these concepts.

Technical Risk

  • Immaturity: Low GitHub stars (2) and no dependents suggest limited real-world adoption. The last release (2026-06-01) indicates active maintenance, but long-term stability is unproven.
  • Complexity Overhead: The bundle introduces multiple abstractions (workflows, pipelines, steps, history, middleware, CQS), which may increase cognitive load for teams unfamiliar with ETL patterns or Symfony’s Messenger/Workflow components.
  • Custom Entity Requirement: Teams must implement 5 Doctrine entities (Workflow, Step, Pipeline, StepHistory, PipelineHistory) from scratch, adding initial setup time. While templated, this is non-trivial for teams without DDD experience.
  • Middleware and Step Resolution: The dynamic step resolution (via StepResolver) and middleware chain add runtime complexity. Misconfigurations (e.g., incorrect step codes or middleware priorities) could lead to subtle bugs.
  • Scheduling: The bundle integrates with Symfony Scheduler, but teams using alternative schedulers (e.g., cron, AWS EventBridge) would need to build adapters.

Key Questions

  1. Symfony Version: Is Symfony 6.4+ a hard requirement, or can the bundle be backported to Symfony 5.x with effort?
  2. ORM Flexibility: Can the bundle work with Eloquent or other ORMs, or is Doctrine ORM mandatory?
  3. Performance: How does the bundle handle large-scale ETL jobs (e.g., millions of records)? Are there known bottlenecks in the middleware chain or state management?
  4. Error Handling: What mechanisms exist for retrying failed steps or notifying on failures (e.g., Slack, email)? Is this handled via middleware or custom logic?
  5. Testing: Are there pre-built test fixtures or examples for validating custom steps or workflows? The current test suite is unit-focused, with no integration tests for real-world scenarios.
  6. Concurrency: Does the bundle support parallel step execution (e.g., running independent transform steps concurrently), or is it strictly sequential?
  7. Configuration: How dynamic is the configuration? Can step configurations be overridden at runtime (e.g., via API or CLI), or are they static per workflow?
  8. Monitoring: Are there built-in metrics (e.g., execution time, step success rates) or integrations with tools like Prometheus or Datadog?
  9. Migration Path: What effort is required to migrate from a legacy ETL system (e.g., custom scripts, Airflow) to this bundle?
  10. Community Support: Given the low adoption, what support channels (Slack, forum) or documentation exist for troubleshooting?

Integration Approach

Stack Fit

  • Symfony Applications: Ideal for Symfony 6.4+/7.x projects, especially those already using Messenger, Workflow, or Doctrine ORM. The bundle’s design assumes these components are in place.
  • PHP 8.2+: Requires modern PHP features (e.g., enums, typed properties), which may limit adoption in legacy environments.
  • ETL-Centric Projects: Perfect for teams building data pipelines, ETL workflows, or batch processing systems. The bundle’s focus on configurable, reusable steps reduces boilerplate for common ETL patterns.
  • Non-Symfony Projects: Poor fit. The bundle’s tight coupling to Symfony components (Messenger, Workflow) makes it unsuitable for Laravel, custom PHP, or non-PHP stacks.

Migration Path

  1. Assessment Phase:

    • Audit existing ETL workflows to identify extract/transform/load steps and their dependencies.
    • Map legacy steps to the bundle’s ExecutableStep interface (e.g., a CsvExtractor becomes a class tagged with #[AsExecutableStep(code: 'csv_extract')]).
    • Evaluate Symfony version compatibility and upgrade path if needed.
  2. Incremental Adoption:

    • Phase 1: Core Integration
      • Install the bundle and implement the 5 required Doctrine entities (Workflow, Step, Pipeline, StepHistory, PipelineHistory).
      • Set up Messenger buses and Workflow state machine (minimal configuration required).
      • Create a proof-of-concept workflow with 1–2 steps to validate the pipeline execution model.
    • Phase 2: Step Migration
      • Refactor one legacy ETL script into a custom ExecutableStep (e.g., convert a Python script to a PHP ApiExtractorStep).
      • Replace hardcoded logic with configurable steps (e.g., move validation rules from workflow code to step configuration).
    • Phase 3: Full Replacement
      • Migrate all ETL jobs to the bundle’s workflow/pipeline model.
      • Replace custom schedulers with Symfony Scheduler or adapt existing ones via middleware.
      • Integrate monitoring (e.g., log step history to a dashboard).
  3. Dependency Management:

    • Use Composer’s replace or platform constraints to manage the flow-php/etl dependency if version conflicts arise.
    • Consider monorepo isolation if the bundle’s dependencies conflict with existing project dependencies.

Compatibility

  • Symfony Components:
    • Messenger: Required for CQS. Ensure async handlers are configured for long-running steps.
    • Workflow: Required for pipeline state management. Customize the pipeline_lifecycle if additional states (e.g., paused) are needed.
    • Doctrine ORM: Mandatory for persistence. Teams using Doctrine DBAL or Eloquent will need to implement custom repositories.
  • Third-Party Libraries:
    • Flow-PHP ETL: May introduce additional dependencies (e.g., CSV parsing, API clients). Review its license and compatibility.
    • Symfony Scheduler: Optional but recommended for production workflows. Alternative schedulers (e.g., cron) can trigger pipelines via CLI commands.
  • Custom Code:
    • Existing ETL scripts (Python, Bash, etc.) can be wrapped in custom ExecutableStep classes using Symfony’s Process component for interop.
    • Legacy databases can be integrated via custom ExtractorStep/LoaderStep implementations.

Sequencing

  1. Prerequisites:
    • Upgrade Symfony to 6.4+ and PHP to 8.2+.
    • Set up Doctrine ORM and Messenger if not already in use.
  2. Bundle Installation:
    • Install via Composer: composer require boutdecode/etl-core-bundle.
    • Register the bundle in config/bundles.php and import the config.
  3. Entity Setup:
    • Create the 5 abstract entities and generate migrations.
    • Run migrations to initialize the database schema.
  4. Step Development:
    • Implement custom ExecutableStep classes for each ETL stage (extract/transform/load).
    • Tag steps with `#[AsExecutable
Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
emuniq/filament-browser-notifications
syriable/filament-translator
hungnm28/livewire-form
wenprise/eloquent
crudly/encrypted
fadion/bouncy
cuci/prototurk-sdk
gos/pubsub-router-bundle
cuci/prototurk-sdk-symfony
clementtalleu/easyadmin-markdown-bundle
codeflextech/permission-manager
karnoweb/livewire-datepicker
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui