Airflow ile Argo Workflows: Python zamanlayıcı mı, Kubernetes yerli motor mu?
Karşılaştırma

Airflow ile Argo Workflows: Python zamanlayıcı mı, Kubernetes yerli motor mu?

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Airflow Python ile yazılan veri hatlarını zamanlar; Argo Workflows her adımı Kubernetes üzerinde bir konteyner olarak çalıştırır. Hangi iş yüküne hangisi uyar?

Benzer görünen iki farklı araç sınıfı

Airflow ve Argo Workflows ilk bakışta aynı işi yapar: bağımlılıkları olan adımları bir grafik halinde sıralar, zamanlar, paralel çalıştırır ve arayüzde izletir. Ancak ikisi farklı dünyalardan gelir.

Airflow, veri ekipleri için tasarlanmış, zamanlanmış toplu iş akışlarını geliştirmeye ve izlemeye yönelik bir platformdur; iş akışları Python ile Dag olarak yazılır ve Airflow'un kendi zamanlayıcısı, meta veri veritabanı ve API sunucusu vardır. Argo Workflows ise Kubernetes üzerinde paralel işleri orkestre eden, konteyner yerli (container-native) açık kaynak bir iş akışı motorudur. Bir Kubernetes özel kaynak tanımı (CRD) olarak çalışır; her adım bir konteynerdir ve iş akışları adım (steps) ya da bağımlılık grafiği (DAG) biçiminde bildirimsel olarak tanımlanır. Argo, Cloud Native Computing Foundation'ın (CNCF) mezun (graduated) projeleri arasındadır.

Temel farklar ölçüt ölçüt

  • Ölçüt, tanım dili: Airflow'da iş akışı Python kodudur; döngüler, koşullar ve fonksiyonlarla Dag üretilebilir / Argo Workflows'ta iş akışı bir Kubernetes kaynağıdır ve YAML ile yazılır; Python ile yazmak isteyenler için topluluk SDK'ları vardır.
  • Ölçüt, çalışma birimi: Airflow'da görev, operatörün çalıştırdığı bir Python süreci ya da dış sistem çağrısıdır / Argo'da her adım ayrı bir pod içinde çalışan bir konteynerdir; adımın dili ve bağımlılıkları imajın içindedir.
  • Ölçüt, altyapı bağımlılığı: Airflow sanal makinede, Docker ile ya da Kubernetes'te kurulabilir / Argo Workflows yalnız Kubernetes üzerinde çalışır.
  • Ölçüt, durum saklama: Airflow görev durumlarını kendi meta veri veritabanında tutar / Argo iş akışı durumunu Kubernetes kaynağı olarak saklar; uzun süreli arşiv için ayrıca yapılandırma gerekir.
  • Ölçüt, veri aktarımı: Airflow'da görevler arasında küçük meta veriler XCom ile taşınır, büyük veri dış depoda kalır / Argo'da adımlar arasında parametreler ve S3, GCS, Azure Blob, Git gibi depolardaki yapıtlar (artifacts) aktarılır.
  • Ölçüt, entegrasyon: Airflow'un sağlayıcı paketleri veritabanları, ambarlar ve SaaS araçları için hazır operatörler sunar / Argo'da entegrasyon, ilgili aracı içeren bir konteyner imajı çalıştırmak demektir.
  • Ölçüt, kullanıcı kitlesi: Airflow veri mühendisleri ve analitik ekipleri / Argo platform mühendisleri, MLOps ve Kubernetes'e alışkın DevOps ekipleri.

Kullanım alanları: veri hattı, ML hattı, CI/CD

Argo Workflows'un resmî tanıtımı makine öğrenmesi hatlarını, veri ve toplu işlemeyi, altyapı otomasyonunu ve CI/CD'yi kullanım alanları arasında sayar. Bu işlerin ortak özelliği, adımların ağır hesaplama gerektirmesi ve her adımın farklı bir konteyner ortamına (farklı kütüphaneler, GPU, bellek ihtiyacı) ihtiyaç duymasıdır. Örneğin bir model eğitim hattında veri hazırlama adımı küçük bir CPU pod'unda, eğitim adımı GPU'lu düğümde, değerlendirme adımı yine küçük bir pod'da çalışabilir; Kubernetes kaynak istekleri her adım için ayrı tanımlanır.

Airflow'un güçlü olduğu alan ise kurumsal veri hatlarıdır: kaynak sistemlerden veri çekmek, ambara yüklemek, dbt dönüşümünü tetiklemek, raporu dağıtmak. Bu işlerde ağır hesaplama genellikle ambar ya da Spark gibi dış sistemlerde yapılır; Airflow'un görevi bu sistemleri doğru sırayla ve doğru takvimle tetiklemektir. Zengin operatör kütüphanesi ve geçmiş tarih aralıklarını yeniden doldurma (backfill) bu senaryoda belirgin avantaj sağlar.

İşletim yükü ve ekip yetkinliği

Argo Workflows'u işletmek, Kubernetes'i işletmekten ayrı düşünülemez. Ekibin pod, kaynak isteği, servis hesabı, RBAC ve kalıcı depolama kavramlarına hâkim olması gerekir. Buna karşılık Argo ek bir veritabanı ya da ayrı zamanlayıcı kümesi istemez; denetleyici ve arayüz küme içinde çalışır, iş akışları kubectl ya da argo komut satırı aracıyla gönderilir ve GitOps araçlarıyla diğer Kubernetes kaynakları gibi yönetilebilir.

Airflow'da işletim yükü zamanlayıcı, Dag işlemcisi, meta veri veritabanı ve yürütücü seçimi etrafında toplanır. Kubernetes yürütücüsü ya da KubernetesPodOperator kullanılarak görevler Kubernetes pod'larında çalıştırılabilir; böylece Airflow'un zamanlama ve arayüz gücü ile konteyner izolasyonu birleştirilebilir. Yönetilen Airflow hizmetleri bu işletim yükünü azaltır.

Sık yapılan hatalar: • Kubernetes deneyimi olmayan bir veri ekibine Argo'yu yalnız konteyner izolasyonu için seçtirmek. • Argo'da her küçük SQL çağrısı için ayrı konteyner adımı açıp gereksiz pod başlatma süresi yaratmak. • Airflow görevlerinin içinde ağır hesaplama yapıp çalışanları tıkamak.

Hangi durumda Airflow, hangi durumda Argo Workflows?

Airflow'u seçmek için güçlü işaretler: • İş akışları ağırlıklı olarak veri taşıma, dönüştürme tetikleme ve raporlama. • Takvime bağlı çalışmalar ve geçmiş tarihleri yeniden doldurma ihtiyacı. • Ekip Python ile rahat, Kubernetes ile sınırlı deneyimli. • Çok sayıda kurumsal veri kaynağına hazır bağlayıcı gerekiyor.

Argo Workflows'u seçmek için güçlü işaretler: • Altyapı zaten Kubernetes üzerine kurulu ve platform ekibi güçlü. • Adımlar farklı dillerde yazılmış, farklı konteyner imajlarına ve donanım kaynaklarına ihtiyaç duyuyor. • Yüksek paralellikte, kısa ömürlü hesaplama işleri (model eğitimi, simülasyon, toplu dönüşüm) çalıştırılıyor. • İş akışlarının da diğer küme kaynakları gibi Git'te tutulup aynı araçlarla dağıtılması isteniyor.

Birlikte kullanım

İki araç sık sık aynı kurumda birlikte bulunur. Yaygın bir düzende Airflow kurumun veri takvimini ve iş bağımlılıklarını yönetir, ağır hesaplama gerektiren bir adıma geldiğinde Kubernetes üzerinde bir Argo iş akışını tetikler ve tamamlanmasını bekler. Böylece veri ekibi tanıdık arayüzünde kalırken ML ekibi kendi konteyner tabanlı hatlarını Argo'da yönetir.

Bu düzende sorumluluk sınırı net çizilmelidir: tetikleme ve takvim Airflow'da, adımların içeriği ve kaynak tanımları Argo'da. Hata durumunda hangi arayüze bakılacağı ve uyarıların hangi kanala düşeceği baştan belirlenirse iki sistemin arasında kaybolan hata kalmaz.

Mindset programlarında Airflow ve Kubernetes tabanlı orkestrasyon

Airflow ile Veri Pipeline'ları eğitimi Airflow mimarisi, zamanlama ve tetikleyiciler, üretim ortamında ölçeklendirme konularıyla veri mühendislerine yöneliktir. Airflow İleri Seviye: Dinamik DAG ve Operatör Geliştirme eğitimi ise özel operatör geliştirme ile kaynak yönetimi ve ölçekleme başlıklarıyla Airflow'u Kubernetes gibi altyapılarla bütünleştiren ekipler için uygundur.

Argo Workflows'a odaklanan ayrı bir program bulunmuyor; Argo'nun dayandığı iş yükü kaynakları, ölçekleme ve kaynak yönetimi konuları Kubernetes ile Orkestrasyon eğitiminde çalışılır. Platform ve MLOps ekipleri bu temeli Argo gibi Kubernetes yerli araçlara geçmeden önce oturtabilir.

İlgili Mindset programı

Airflow ile Veri Pipeline'ları

Sık sorulanlar

Sık sorulan sorular

Argo Workflows ile Argo CD aynı şey mi?

Hayır. İkisi de Argo proje ailesindendir ama farklı işler yapar. Argo Workflows Kubernetes üzerinde adımlı iş akışları ve toplu işler çalıştırır. Argo CD ise Git deposundaki uygulama tanımlarını kümeye senkronize eden bir GitOps sürekli teslimat aracıdır. Aynı kümede birlikte kullanılabilirler.

Argo Workflows zamanlanmış iş çalıştırabilir mi?

Evet. Argo, cron ifadesiyle zamanlanmış iş akışlarını destekler ve sık kullanılan iş akışlarını kümede şablon olarak saklamaya izin verir. Ancak Airflow'daki gibi geçmiş tarih aralıklarını otomatik yeniden doldurma ve tarih aralığına bağlı çalışma modeli Argo'nun merkezinde değildir; bu ihtiyaç parametrelerle ayrıca kurgulanır.

Airflow'u Kubernetes üzerinde çalıştırmak Argo'ya gerek bırakır mı?

Birçok veri hattı ihtiyacında bırakabilir. Kubernetes yürütücüsü ya da pod operatörüyle her görev kendi konteynerinde çalışır. Ancak iş akışlarının kendisini Kubernetes kaynağı olarak yönetmek, çok yüksek paralellikte kısa işler çalıştırmak ya da Airflow altyapısı kurmadan küme içinde kalmak isteniyorsa Argo daha doğal bir seçimdir.

Argo Workflows için Python bilmek gerekir mi?

Gerekmez; iş akışı tanımları YAML ile yazılır ve adımlar herhangi bir dilde yazılmış konteynerler olabilir. Yine de iş akışlarını Python ile üretmeyi sağlayan topluluk SDK'ları bulunur. Asıl gerekli yetkinlik Kubernetes kavramları ve konteyner imajı hazırlamaktır.

Airflow mu Argo Workflows mu? Kubernetes'te Seçim