惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

N
Netflix TechBlog - Medium
IT之家
IT之家
博客园_首页
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
美团技术团队
小众软件
小众软件
博客园 - 叶小钗
WordPress大学
WordPress大学
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 三生石上(FineUI控件)
罗磊的独立博客
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
宝玉的分享
宝玉的分享
博客园 - 【当耐特】
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
Pipeline Architecture: dati che fluiscono attraverso filtri
Dev-Iadicola · 2026-06-20 · via DEV Community
Cover image for Pipeline Architecture: dati che fluiscono attraverso filtri

Dev-Iadicola

L'idea: dati in ingresso, trasformazioni in sequenza, risultato in uscita

Un'immagine caricata dall'utente deve essere: validata (dimensioni, formato), ridimensionata, compressa, convertita in WebP, caricata su CDN, e il suo URL salvato nel database. Ogni passaggio e indipendente e potrebbe essere riordinato, rimosso o aggiunto senza influenzare gli altri. Questa catena di trasformazioni e una pipeline.

La Pipeline Architecture (o Pipes and Filters) organizza il processing come una sequenza di filtri collegati da pipe. Ogni filtro riceve un input, lo trasforma, e produce un output che diventa l'input del filtro successivo. I filtri non si conoscono tra loro — conoscono solo il formato dei dati che ricevono e producono.

Struttura: Pipe, Filter, Source, Sink

  • Source: il punto di ingresso dei dati (upload dell'utente, file CSV, request HTTP)
  • Filter: un componente che trasforma i dati. Ha un input e un output. Non ha stato condiviso con altri filtri.
  • Pipe: il connettore tra due filtri. Passa l'output di un filtro come input del successivo.
  • Sink: il punto di uscita (database, file, response HTTP)

Pipeline Architecture in PHP: il middleware

Il caso più evidente di Pipeline in PHP e il middleware HTTP. Ogni middleware e un filtro che riceve la request, la può modificare, la passa al filtro successivo, e può modificare la response al ritorno:

  • CsrfMiddleware: verifica il token CSRF. Se invalido, blocca. Se valido, passa al prossimo.
  • AuthMiddleware: verifica l'autenticazione. Aggiunge l'utente alla request.
  • RateLimitMiddleware: verifica il rate limit. Se superato, risponde 429.
  • CorsMiddleware: aggiunge gli header CORS alla response.

In Soft PHP MVC, il MiddlewarePipeline e un'implementazione pura della Pipeline Architecture: ogni middleware implementa la stessa interfaccia, viene eseguito in sequenza, e può interrompere la catena o modificare i dati che attraversano.

Esempio teorico: ETL (Extract-Transform-Load)

Un import di dati da un file CSV al database e una pipeline naturale:

  • Extract: legge il CSV riga per riga (generator PHP per memoria costante)
  • Validate: scarta le righe con dati invalidi, logga gli errori
  • Normalize: converte date, normalizza nomi, pulisce spazi
  • Deduplicate: rimuove duplicati per chiave unica
  • Enrich: aggiunge dati da API esterne (geocoding, validazione email)
  • Transform: mappa i campi CSV nei campi del database
  • Load: inserisce nel database in batch da 500

Ogni filtro e una classe indipendente, testabile e riutilizzabile. Puoi riordinare i filtri, aggiungerne di nuovi, o rimuoverne senza toccare gli altri.

Pipeline con Generator PHP

I generator PHP sono lo strumento ideale per implementare pipeline lazy:

$result = load(transform(enrich(deduplicate(normalize(validate(extract('data.csv')))))));

Ogni funzione e un generator che yielda i risultati uno alla volta. L'intera pipeline processa un record alla volta con memoria costante, indipendentemente dalla dimensione del file.

Quando usare la Pipeline Architecture

  • Usa Pipeline per processing sequenziale di dati: ETL, image processing, log parsing
  • Usa Pipeline per middleware HTTP: ogni step aggiunge o verifica qualcosa
  • Usa Pipeline quando i passaggi sono indipendenti e potenzialmente riordinabili
  • Non usare Pipeline quando i passaggi hanno dipendenze complesse tra loro e l'ordine e rigido
  • Non usare Pipeline per flussi con branching complesso: un albero di decisioni non e una pipeline

La Pipeline Architecture e la più antica e la più elegante: e la filosofia Unix applicata al software. Ogni filtro fa una cosa sola e la fa bene. Collegati insieme, risolvono problemi complessi con componenti semplici.


👉 Leggi l'articolo completo su iadicola.it