architecture-paradigm-pipeline
Applies pipes-and-filters for sequential data transformations. Use when data flows through discrete stages like ETL, streaming analytics, or CI/CD pipelines.
What this skill does
# The Pipeline (Pipes and Filters) Paradigm ## When to Employ This Paradigm - When data must flow through a fixed sequence of discrete transformations, such as in ETL jobs, streaming analytics, or CI/CD pipelines. - When reusing individual processing stages is needed, either independently or to scale bottleneck stages separately from others. - When failure isolation between stages is a critical requirement. ## Adoption Steps 1. **Define Filters**: Design each stage (filter) to perform a single, well-defined transformation. Each filter must have a clear input and output data schema. 2. **Connect via Pipes**: Connect the filters using "pipes," which can be implemented as streams, message queues, or in-memory channels. validate these pipes support back-pressure and buffering. 3. **Maintain Stateless Filters**: Where possible, design filters to be stateless. Any required state should be persisted externally or managed at the boundaries of the pipeline. 4. **Instrument Each Stage**: Implement monitoring for each filter to track key metrics such as latency, throughput, and error rates. 5. **Orchestrate Deployments**: Design the deployment strategy to allow each stage to be scaled horizontally and upgraded independently. ## Key Deliverables - An Architecture Decision Record (ADR) documenting the filters, the chosen pipe technology, the error-handling strategy, and the tools for replaying data. - A suite of contract tests for each filter, plus integration tests that cover representative end-to-end pipeline executions. - Observability dashboards that visualize stage-level Key Performance Indicators (KPIs). ## Risks & Mitigations - **Single-Stage Bottlenecks**: - **Mitigation**: Implement auto-scaling for individual filters. If a single filter remains a bottleneck, consider refactoring it into a more granular sub-pipeline. - **Schema Drift Between Stages**: - **Mitigation**: Centralize schema definitions in a shared repository and enforce compatibility tests as part of the CI/CD process to prevent breaking changes. - **Back-Pressure Failures**: - **Mitigation**: Conduct rigorous load testing to simulate high-volume scenarios. Validate that buffering, retry logic, and back-pressure mechanisms behave as expected under stress. ## Concrete Components These vocabulary items name the concrete tools and abstractions that show up when the paradigm is implemented. They are not required dependencies and they are not part of the skill's ``tools:`` frontmatter (which is reserved for Claude Code tool restrictions). Use this list to disambiguate during architecture discussions. - ``stream-processor``: the runtime that executes a filter (e.g. Flink, Apache Beam, Faust) - ``message-queue``: the durable pipe between filters (e.g. Kafka, RabbitMQ, in-memory channel) - ``data-validator``: schema-checks every record at filter input and output
Related in architectural-pattern
architecture-paradigm-layered
IncludedApplies layered n-tier architecture with enforced boundaries. Use when designing moderate systems needing clear presentation, domain, and persistence layers.
architecture-paradigm-microservices
IncludedApplies microservices for independent deployment and per-service scaling. Use when teams need autonomous release cycles with distinct capability scaling needs.
architecture-paradigm-client-server
IncludedApplies client-server architecture for web/mobile apps. Use when designing systems with centralized backend services, trust boundaries, or offline-first sync.
architecture-paradigm-cqrs-es
IncludedApplies CQRS and Event Sourcing for read/write separation and audit trails. Use when designing systems with complex domain logic or full state-change history.
architecture-paradigm-event-driven
IncludedApplies event-driven async messaging to decouple producers and consumers. Use when designing real-time or multi-subscriber systems needing loose coupling.
architecture-paradigm-functional-core
IncludedApplies Functional Core, Imperative Shell to isolate logic from side effects. Use when business logic is entangled with I/O or unit tests are slow and brittle.