Pipeline nedir? Hattı kur
What is a pipeline
Bu derste neler öğreneceksin
- Pipeline kavramını tanımlar
- Kestra yı Docker Compose ile çalıştırır
- İlk YAML flow yazar
Pipeline Tanımı
Bir pipeline, verinin bir kaynaktan hedefe ulaşana kadar geçtiği adımlar dizisidir. Her adım bir görev (task), adımlar arası geçişler bağımlılık (dependency). Pipeline’ı bir DAG (Directed Acyclic Graph) olarak modelliyoruz — yönlü, döngüsüz.
Endüstriyel örnek: kullanıcı davranışı event’leri Kafka’dan gelir → dlt ile Postgres’e yazılır → dbt ile temizlenir → Metabase dashboard’a servis edilir. Her ok bir edge, her kutu bir node.
Kestra: YAML-First Orkestrasyon
Kestra (2022, Ludwig Music), Airflow’un Python decorator ağırlığına alternatif olarak çıktı. Temel fark: flow tanımı deklaratif YAML, execution ise plugin. Hata ayıklamak için Python trace’e girmek gerekmez, her execution’ın log’u UI’da kronolojik akar.
# docker-compose.yml
services:
postgres:
image: postgres:18-alpine
environment:
POSTGRES_PASSWORD: lemonade
ports: ["5432:5432"]
pgadmin:
image: dpage/pgadmin4:latest
environment:
PGADMIN_DEFAULT_EMAIL: admin@lemonade.io
PGADMIN_DEFAULT_PASSWORD: admin
ports: ["5050:80"]
kestra:
image: kestra/kestra:latest
ports: ["8080:8080"]
environment:
KESTRA_DB_URL: jdbc:postgresql://postgres:5432/kestra
docker compose up -d → 3 servis ayağa kalkar. localhost:8080 Kestra UI, localhost:5050 pgAdmin, localhost:5432 Postgres.
İlk Production-Grade Flow
id: hello_production
namespace: prod
description: "İlk üretim flow'umuz"
labels:
env: dev
owner: senin-adin
inputs:
- id: username
type: STRING
defaults: "engineer"
tasks:
- id: log_greeting
type: io.kestra.core.tasks.log.Log
message: "Merhaba {{ inputs.username }}, Kestra çalışıyor."
- id: query_postgres
type: io.kestra.plugin.jdbc.postgresql.Query
url: jdbc:postgresql://postgres:5432/kestra
username: postgres
password: lemonade
sql: |
SELECT NOW() AS sunucu_zamani,
current_user AS aktif_kullanici;
fetch: true
Kestra panelinde Execute with inputs ile username parametresi geçersin. İki task sırayla çalışır, ikincinin çıktısı UI’da görünür.
Neden Kestra Bu Kurs İçin?
- YAML-first — akış görsel olarak okunur, decorator/magic yok.
- 200+ plugin — Postgres, BigQuery, GCS, S3, Slack, HTTP, dbt, dlt hepsi native.
- Git sync — flow’lar GitHub’da durur, Kestra periyodik çeker (production standardı).
- Backfill UI — tarih aralığı seçip geriye dönük çalıştırmak 2 tık.
Airflow güçlü ama öğrenme eşiği dik (Python + DAG dosyaları + scheduler kavramı). Kestra ile başlayıp production’da Airflow’a geçmek, kursun amaçlarından biri.
Bugün Yaptık
- Pipeline’ın endüstriyel tanımını ve DAG yapısını öğrendik
- Kestra + Postgres 18 + pgAdmin üçlüsünü Docker Compose ile ayağa kaldırdık
- İlk production-grade YAML flow yazdık (Log + Postgres query)
Ellerini Kirlet
- Yukarıdaki
docker-compose.yml’i repo köküne kaydet,docker compose up -dçalıştır. - Kestra paneline git,
hello_productionflow’unu ekle. query_postgrestask’ına ikinci bir SQL ekle:SELECT version()— Postgres versiyonunu gör.- Execution log’unda hata varsa: Postgres konteyneri hazır olmadan Kestra başlamış olabilir.
docker compose restart kestradene.