Obsah
Pipeline (Potrubí)
Pipeline je sekvence prvků pro zpracování dat, uspořádaná tak, aby výstup každého prvku byl vstupem dalšího. Hlavním cílem je automatizace, efektivita a paralelizace úkolů.
V moderním IT se s tímto pojmem setkáváme ve třech hlavních oblastech:
1. Shell Pipeline (Linux/Unix)
V příkazové řádce se pro pipeline používá znak svislítka |. Umožňuje propojit malé, jednoúčelové nástroje do komplexních řetězců.
- Příklad:
cat log.txt | grep „ERROR“ | wc -l
1. cat načte soubor.
2. ''grep'' vyfiltruje řádky s chybou. 3. ''wc -l'' spočítá jejich počet.
2. CI/CD Pipeline (Software Engineering)
V rámci DevOps je pipeline automatizovaný proces, který kód programátora „protlačí“ přes několik fází až k uživateli:
- Build: Kompilace kódu.
- Test: Automatické spuštění unit a integračních testů.
- Deploy: Nasazení do testovacího nebo produkčního prostředí.
Nástroje jako Jenkins, GitLab CI, GitHub Actions nebo Azure DevOps umožňují tyto kroky definovat jako kód (Pipeline as Code).
3. Data & ML Pipeline (Data Science)
V oblasti strojového učení pipeline zajišťuje, že data protékají systémem bezpečně a reprodukovatelně:
- Ingest: Sběr dat z různých zdrojů do datového jezera.
- Preprocessing: Čištění, normalizace a transformace dat.
- Evaluation: Ověření přesnosti modelu.
Díky pipeline (např. v Kubeflow nebo Apache Airflow) lze celý proces trénování AI zopakovat stisknutím jednoho tlačítka.
4. Hardware Pipeline (CPU)
Na úrovni procesoru znamená pipelining techniku, kdy procesor začne zpracovávat novou instrukci dříve, než dokončí tu předchozí (podobně jako na montážní lince v továrně). To výrazně zvyšuje propustnost procesoru.
5. Hlavní výhody
- Modularita: Každý krok pipeline lze vyvíjet a testovat samostatně.
- Rychlost: Kroky mohou běžet paralelně (zatímco se jedna část dat čistí, druhá už se trénuje).
- Snížení chybovosti: Automatizace eliminuje lidský faktor při opakujících se úkonech (např. ruční kopírování souborů na server).
Zajímavost: Koncept pipeline zpopularizoval Douglas McIlroy pro systém Unix. Jeho filosofie byla: „Pište programy tak, aby dělaly jednu věc a dělaly ji dobře. Pište programy tak, aby spolupracovaly. Pište programy tak, aby zpracovávaly textové proudy, protože to je univerzální rozhraní.“
