Vebende Akademi - airflow-data-pipeline-kurulumu
Uzmanla Konuşun
Blog
MAKALE

Airflow Data Pipeline Kurulumu: Adım Adım Mühendis Rehberi

Apache Airflow ile güvenilir, izlenebilir ve üretime hazır veri boru hattı (data pipeline) kurulumu: mimari, operasyon, ölçek ve en iyi uygulamalar.

Airflow Data Pipeline Kurulumu: Adım Adım Mühendis Rehberi

Apache Airflow ile güvenilir, izlenebilir ve üretime hazır veri boru hattı (data pipeline) kurulumu: mimari, operasyon, ölçek ve en iyi uygulamalar.

1. Giriş

Verinin zamanında ve doğru şekilde taşınması, dönüştürülmesi ve kullanıma sunulması modern veri ekosisteminin temel gereksinimidir. Apache Airflow, DAG (Directed Acyclic Graph) temelli iş orkestrasyonu sağlayarak ETL/ELT süreçlerini, zamanlanmış görevleri ve bağımlılık yönetimini sistematik hale getirir. Bu nedenle Airflow; veri mühendisleri, platform mühendisleri ve SRE ekipleri için kritik bir araçtır.

Bu makale, Airflow kurulumu, mimarisi, veri akışı, üretim ölçeklendirmesi ve operasyonel olgunluğu ele alan teknik ve uygulamalı bir rehberdir. Hem tek sunuculu geliştirme ortamından başlayarak yüksek erişilebilir (HA) mimarilere ve cloud-native dağıtımlara kadar adım adım ilerleyeceğiz.

Bu teknoloji neden konuşuluyor?

  • Veri boru hatlarının karmaşıklığı arttı; bağımlılıkları, retry/yedekleme ve izlemeyi otomatikleştirmek gerekiyor.
  • Airflow açık kaynak, esnek ve geniş eklenti ekosistemi ile birçok organizasyonun tercih ettiği orkestratördür.
  • Cloud-native mimarilerle entegrasyon ve operator'lar (KubernetesPodOperator, DockerOperator vb.) ile iş akışları kolayca konteynerize edilebiliyor.

Kimler için önemli?

Veri mühendisleri, platform mühendisleri, ML mühendisleri, ETL geliştiricileri ve veri operasyon ekipleri için Airflow yetkinliği kritiktir.

Hangi problemleri çözüyor?

Çeşitli veri kaynaklarından düzenli olarak veri çekme, veri kalitesi kontrolleri, bağımlılık yönetimi, retry ve alerting ile hataların hızlı tespiti ve recovery süreçlerini standartlaştırır.

2. Kavramsal Temeller

Airflow'un temel kavramları ve mimari bileşenlerini açıklayalım.

Kavramlar

  • DAG: Görevlerin bağımlılık ilişkilerini tanımlayan yönlendirilmiş yönsüz olmayan graf.
  • Task: DAG içinde yürütülen atomik iş birimi (ör. bir SQL çalıştırma, bir Python fonksiyonu, bir container çalıştırma).
  • Operator: Task oluşturan soyutlama (PythonOperator, BashOperator, KubernetesPodOperator vb.).
  • Scheduler: DAG'ları zamanlayıp task'ları çalıştırmak üzere worker'lara atayan bileşen.
  • Executor: Task'ların yürütülme stratejisini belirleyen mekanizma (LocalExecutor, CeleryExecutor, KubernetesExecutor).

Mimari

Temel Airflow mimarisi şu bileşenlerden oluşur: Webserver (UI), Scheduler, Metadata Database (Postgres, MySQL), Executor & Worker'lar ve Broker/Queue (Celery/RabbitMQ/Redis) opsiyonel olarak kullanılır. KubernetesExecutor veya CeleryExecutor gibi dağıtık executor'lar üretim ölçeği için yaygın seçimlerdir.

Terminoloji

  • Backfill: Geçmiş tarihli DAG run'larını çalıştırma işlemi.
  • DagRun: Bir DAG tanımının belirli bir zaman için tetiklenmiş örneği.
  • XCom: Task'lar arası küçük veri paylaşımları için kullanılan mekanizma.

Bileşenler

Metadata DB, Scheduler, Webserver, Worker'lar, Executor, Broker (Celery için) ve Storage (artifacts, logs) başlıca bileşenlerdir. Ayrıca Secret backend (Vault, KMS), Monitoring (Prometheus, Grafana) ve Observability (logs, traces) entegrasyonları önemlidir.

3. Nasıl Çalışır?

Airflow veri akışı ve çalışma mantığını teknik ayrıntılarla anlatıyoruz.

Sistem Mimarisi

Airflow bir DAG dosyasını parse eder ve metadata DB'ye plan bilgisini yazar. Scheduler, DAG'ları periyodik olarak kontrol eder, çalıştırılması gereken task'ları belirler ve executor'a iletir. Executor, task'ları worker'larda çalıştırır; worker'lar çalıştırma sonucu ve logları metadata DB / storage'a yazar. Webserver, kullanıcıların DAG ve task durumlarını görmesini sağlar.

Executor Seçimleri

  • SequentialExecutor: Geliştirme için, tek thread ile çalışır.
  • LocalExecutor: Aynı host üzerinde parallel task çalıştırma sağlar.
  • CeleryExecutor: Dağıtık worker mimarisi; RabbitMQ/Redis broker gerektirir.
  • KubernetesExecutor: Her task için dinamik Pod oluşturur; ölçeklenebilir ve izole çalıştırma sağlar.

Veri Akışı (Örnek ETL Pipeline)

  1. Scheduler, günlük DAG run'ını tetikler.
  2. Ingest task: kaynak API'den veriyi çekip raw storage'a (S3) yazar.
  3. Transform task: Spark veya Pandas job'u çalıştırır ve veriyi temizler.
  4. Load task: temizlenmiş veriyi data warehouse'a (Snowflake/Redshift/BigQuery) yükler.
  5. Quality checks: veri bütünlüğü ve beklenen satır sayısı doğrulanır; hata varsa alert tetiklenir.
  6. Notification: İşlem tamamlandığında Slack/e-mail ile bildirim gönderilir.

Çalışma Mantığı (Idempotency & Retries)

Airflow task'ları idempotent olacak şekilde yazılmalıdır: yeniden çalıştırma durumunda veri kopyalama veya bozulma olmamalı. Retry ve backoff parametreleri ile transient hatalardan otomatik kurtarma sağlanabilir. Ayrıca sensor'lar (ExternalTaskSensor, S3KeySensor) ile dış bağımlılıklar izlenebilir.

4. Gerçek Dünya Kullanımları

Airflow'un farklı sektörlerde kullanım örnekleri:

Netflix

Data engineering pipeline'ları, içerik telemetri işleme ve günlük batch işler için orkestrasyon kullanır. Airflow benzeri orkestratörler pipeline otomasyonu ve dependency yönetimini sağlar.

Uber

Yüksek hacimli event processing ve ETL işler için schedule ve orchestration kritik rol oynar; Airflow görev yönlendirmeleri büyük veri iş akışlarını yönetir.

Amazon

Faturalama, raporlama ve veri entegrasyonları gibi periyodik pipeline'lar için orkestrasyon araçları kullanılır.

OpenAI / ML Altyapıları

Model eğitim pipeline'ları, veri hazırlama ve evaluation job'larının zamanlanması için workflow orkestrasyonu kullanılır.

Stripe

Finansal veri işleme, reconciliation ve raporlama pipeline'ları için güvenilir schedule mekanizmaları gereklidir.

5. Avantajlar ve Sınırlamalar

Avantajlar

  • Esneklik: Python tabanlı DAG tanımı ile kompleks iş akışları kolayca modellenir.
  • Ecosystem: Çok sayıda operator ve entegrasyon (Spark, BigQuery, S3, Kubernetes vb.).
  • Observability: UI, logs ve SLA monitoring ile görevlerin durumu izlenebilir.

Dezavantajlar

  • State management: Airflow metadata DB'ye dayanır; DB performansı ve migration kritik.
  • Operasyonel yük: Celery/RabbitMQ veya Kubernetes altyapısının yönetimi ek yük getirir.
  • Complex DAGs: Çok büyük DAG'lar parse süresini uzatabilir; DAG tasarımına dikkat edilmeli.

6. Alternatifler ve Karşılaştırma

Aşağıda Airflow ile bazı alternatiflerin karşılaştırması yer almaktadır:

TeknolojiAvantajDezavantaj
Apache AirflowPython DAG, geniş operator ekosistemi, olgun communityMetadata DB bağımlılığı, büyük DAG'larda parsing maliyeti
PrefectModern API, flow orchestration, daha hafif state yönetimiDaha küçük ekosistem, öğrenme eğrisi değişken
DagsterTyped IO, geliştirme ergonomisi ve test odaklıAirflow kadar olgun değil
Kubernetes CronJobs + ArgoCloud-native, Kubernetes yerleşikComplex dependency management için ekstra tasarım gerekir

7. En İyi Pratikler

Airflow üretiminde dikkate alınması gereken uzman önerileri:

Production kullanımı

  • Metadata DB için güçlü yönetilen Postgres/Mysql kullanın; DB yedekleme ve maintenance planı oluşturun.
  • Scheduler ve Webserver için HA / multiple replicas planlayın; Scheduler failover süreçlerini test edin.
  • DAG dosyalarını küçük modüllere bölün; kod tekrarı yerine modüler operator ve helper fonksiyonları kullanın.

Performans optimizasyonu

  • DAG parse süresini azaltmak için basit DAG tanımları ve lazy imports kullanın.
  • KubernetesExecutor ile task izolasyonu sağlayın; worker node'ları tiplerine göre (GPU/CPU-heavy) ayırın.
  • Logging için merkezi bir çözüm (ELK/EFK veya Loki) kullanın ve log retention politikaları belirleyin.

Güvenlik

  • Secret yönetimi için Vault/KMS kullanın; DAG içinde plaintext credential saklamayın.
  • RBAC ve Webserver auth (OIDC/LDAP) ile erişimi kontrol altına alın.
  • Network policy ve least-privilege prensipleri ile task'ların erişimlerini sınırlandırın.

Ölçeklenebilirlik

  • Executor seçimini iş yüküne göre planlayın: CeleryExecutor yatay ölçek, KubernetesExecutor dinamik pod ölçeklemesi sağlar.
  • Task concurrency ve pool ayarları ile paralellik kontrolü uygulayın.
  • CI/CD ile DAG deployment, otomatik test ve linting süreçleri kurun.

8. Sık Yapılan Hatalar

  • DAG içinde büyük veri işlemleri doğrudan yapıp task sürelerini çok uzun tutmak; bunun yerine worker üzerinde job çağırın (Spark/Kubernetes pod).
  • Secrets'leri DAG dosyasında saklamak — sızma riski oluşturur.
  • DAG'ları revize ederken backward compatibility düşünmemek — eski DagRun'lar bozulabilir.
  • Monitoring eksikliği: Scheduler lag, failed task rate ve worker health metriklerini izlememek.

9. Gelecek Trendler

  • Cloud-native orchestration: Kubernetes-tightly entegre executor'lar ve serverless iş yükleri artacak.
  • Observability ve AI-assist: Anomaly detection ile pipeline failures otomatik tespit edilecek.
  • Data contracts ve lineage: Veri kalitesi kontrolü için pipeline'larda şema ve sözleşme yönetimi daha fazla önem kazanacak.

Ek Bölümler

Sık Sorulan Sorular (FAQ)

  1. S: Airflow hangi executor ile başlamalıyım?

    C: Geliştirme için LocalExecutor, üretim için dağıtık ihtiyaç varsa CeleryExecutor veya KubernetesExecutor tercih edin.

  2. S: Metadata DB için hangi ayarları yapmalıyım?

    C: Postgres kullanıyorsanız connection pool, autovacuum, ve disk I/O optimizasyonlarını yapılandırın; DB yedeklerini otomatikleştirin.

  3. S: Secrets nasıl yönetilmeli?

    C: Vault veya cloud KMS kullanın, DAG içinde secrets retrieval mekanizmasını sağlayın; asla plaintext saklamayın.

  4. S: DAG parse süresi çok yavaşsa ne yapmalı?

    C: DAG dosyalarını modülerleştir, büyük kütüphane importlarını lazy import yap, ve DAG sayısını azaltmak için dag factory yaklaşımları kullan.

  5. S: Task retry stratejileri nasıl olmalı?

    C: Transient hatalar için exponential backoff ile sınırlı retry, kalıcı hatalar için alert ve manuel müdahale tasarla.

  6. S: Airflow upgrade süreçleri nasıl yönetilmeli?

    C: Önce staging ortamında test et, DB migration'larını rollback planı ile birlikte uygula ve monitoring ile smoke testler yap.

  7. S: Logging ve observability için öneriler?

    C: Centralized logging (ELK/Loki), Prometheus metrikleri (scheduler lag, task duration) ve Grafana dashboard'ları kurun.

  8. S: Airflow yerine tamamen managed bir hizmet mi almalıyım?

    C: Yönetim yükünü azaltmak istiyorsanız managed Airflow (MWAA, Cloud Composer) tercih edilebilir; ancak vendor lock-in ve maliyeti değerlendirin.

Anahtar Kavramlar

DAG
Directed Acyclic Graph — iş akışının bağımlılık ağını temsil eder.
Executor
Task'ların nasıl yürütüleceğini belirleyen mekanizma (Celery, Kubernetes, Local).
Scheduler Lag
Scheduler ile gerçek zamanlı olması gereken DagRun'lar arasındaki gecikme metriği.
XCom
Task'lar arası küçük veri paylaşımları için kullanılan mekanizma.

Öğrenme Yol Haritası

Aşağıdaki adımlar Airflow uzmanlığına ulaşmak isteyenler için önerilmiştir:

  1. Temel Kavramlar (1-2 hafta): DAG, task, operator, scheduler, executor kavramlarını öğrenin.
  2. Local Kurulum (1-2 hafta): Docker veya pip ile lokal Airflow kurun, basit DAG'lar yazıp çalıştırın.
  3. Executor ve Deployment (2-4 hafta): CeleryExecutor veya KubernetesExecutor ile dağıtık çalışma deneyimi kazanın.
  4. Observability & Ops (2-4 hafta): Monitoring, logging, alerting ve DB yönetimi konularında uygulama yapın.
  5. Production Hardening (sürekli): HA, backup/restore, secrets yönetimi ve security best practices üzerinde çalışın.

Bu yol haritası pratik projeler ve gerçek dünyadaki pipeline'larla desteklendiğinde en etkili şekilde öğrenilir. Küçük bir ETL pipeline'ı inşa etmek ve production-like bir ortamda test etmek, öğrenmeyi hızlandıracaktır.