Last chance! 50% off DataCamp Premium
Sale ends in
LinkedIn’de her aşağı kaydırışınızda, zaten kalabalık olan veri dünyasında yeni bir aracın ortaya çıktığını görür gibisiniz. Veri ekipleri “veri yığınlarına” bileşenler eklemeye devam ettikçe, bu farklı araçları yönetmenin ve birbirine bağlamanın bir yoluna ihtiyaç duyarlar.
Veri orkestrasyonu, tüm veri ekosistemi boyunca verileri birleştiren, dönüştüren ve düzenleyen süreçlerin geliştirilmesi, yürütülmesi ve izlenmesi sürecidir. Bunu yapmak için veri mühendisleri veri orkestrasyon araçlarını kullanır. Burada, en popüler orkestrasyon araçlarından ikisini — Apache Airflow ve Dagster — inceleyeceğiz. Haydi başlayalım!
Airflow, veri hatlarını kod olarak oluşturmak, çalıştırmak ve izlemek için sektör standardıdır. İlk olarak 2014’te Airbnb’nin Veri Mühendisliği ekibi tarafından geliştirildi. O zamandan beri proje Apache Software Foundation tarafından benimsendi ve lisansları altındaki en popüler çözüm haline geldi.
Airflow her ay otuz milyondan fazla kez indirilir ve canlı bir katkıcı ve kullanıcı topluluğuna sahiptir. Airflow’da veri hatlarına DAG (directed acyclic graph — yönlendirilmiş çevrimsiz grafik) denir.
Airflow hakkında daha fazla bilgiyi Apache Airflow’a başlangıç öğreticimizde bulabilirsiniz.
Airflow gibi, Dagster da kullanıcıların veri hatlarını kod olarak yazmasına olanak tanıyan bir orkestrasyon aracıdır. Açık kaynaktır ve ilk olarak 2019’da yayınlanmıştır. Dagster, bir veri hattının yapı taşları olan “varlıkları” (asset) tanımlamak için Python kullanır.
Dagster, nispeten kalabalık olmayan bir alanda Airflow’a rakip olarak ortaya çıktı. Proje açık kaynak topluluğu tarafından sürdürülmekte ve ticari olarak Dagster Labs tarafından desteklenmektedir.
Peki Airflow ve Dagster modern bir veri yığınına nerede oturur? Aşağıdaki mimari diyagramla başlayalım.

Modern veri yığınında yaygın olarak kullanılan araçlardan bir örneklem içeren bir mimari diyagram.
Bu mimari diyagram, pek çok kişinin standart bir veri yığını olarak gördüğü yapıyı gösterir. Kaynak sistemlerden, veri ambarı ve dönüşüm araçlarından ve Tableau ile Looker gibi aşağı yönlü “hedeflerden” oluşur.
Burada, Airflow ve Dagster bu veri ekosistemini birbirine bağlayan oklardır. Bir orkestrasyon aracı olmadan, veriyi bir araçtan diğerine taşımak zordur.
Airflow ve Dagster gibi orkestrasyon araçları ayrıca, verinin kaynaktan hedefe nerede, nasıl ve ne zaman hatlar halinde aktığını ve bu süreçte nasıl dönüştürüldüğünü anlamayı kolaylaştıran bir gözlemlenebilirlik katmanı sağlar.
Tahmin edebileceğiniz gibi, Airflow ve Dagster amaçlanan kullanım ve modern veri yığınındaki rolleri açısından bir dizi benzerliği paylaşır. Bunlar şunları içerir:
Bununla birlikte, her birinin tek başına öne çıkmasını sağlayan benzersiz özellik ve işlev seti vardır.
Airflow’un başlıca özelliklerinden bazılarına bakalım:
Airflow’da veri hatlarına DAG denir — yönlendirilmiş çevrimsiz grafiklerin kısaltması. Bir DAG’i belirli bir sırayla birbirine bağlanan görevlerin bir koleksiyonu olarak düşünün. Bir DAG’in en temel yapı taşı bir görevdir. Örneğin, çıkarma, dönüştürme ve yükleme (ETL) yapan bir hatta “transform” adımı kendi başına bir görev olur.
Bu görevler genellikle Airflow operatörleri kullanılarak tanımlanır. Ancak az sonra göreceğiniz gibi, görevleri TaskFlow API ile tanımlamanın başka bir yolu daha vardır.
Airflow’da bir hattı zamanlamak son derece esnektir. Bir hattı günlük mü çalıştırmak istiyorsunuz? Sorun değil. Her ayın ilk Cumasında mı yürütülsün? Bu da kolay. Peki yöneticiniz bir veri kümesi güncellendiğinde bir DAG’in tetiklenmesini isterse? Airflow bunu da halledebilir.
Airflow, DAG’lerinizi zamanlama konusunda bolca özelleştirme seçeneği sunar. CRON, Timetable’lar ve veriye duyarlı zamanlama gibi özelliklerle DAG’leri ihtiyacınız olan her an çalışacak şekilde ayarlayabilirsiniz.
DAG yazımını veri profesyonelleri için daha erişilebilir kılmak amacıyla Airflow topluluğu TaskFlow API’yi tanıttı. Geleneksel operatör yaklaşımı yerine TaskFlow API, görevleri sadece fonksiyonları süsleyerek (decorator) tanımlamanıza olanak tanır. Bu, görevler arasında veri paylaşımını ve görev bağımlılıklarını kurmayı çok daha kolay ve sezgisel hale getirir.
Ayrıca, Astro SDK gibi araçlar TaskFlow API’nin üzerine inşa edilerek yeteneklerini daha da genişletmiştir.
Dagster nasıl karşılaştırılıyor, inceleyelim:
Dagster, veri hatları kurarken benzersiz bir varlık tabanlı yaklaşım benimser. Dagster’da kalıcı depolamada tutulan herhangi bir veri nesnesine — bir dosya veya tablo gibi — varlık denir.
Bu varlıklar Python fonksiyonları kullanılarak kodda tanımlanır. Bu fonksiyonlar yürütüldüğünde, Dagster otomatik olarak bağımlılıkları oluşturur ve varlığı somutlaştırır (materialize eder). Bu varlık merkezli yöntem, bir hattın içinde verinin nasıl üretildiğini ve tüketildiğini izlemeyi kolaylaştırır.
Dagster’daki bir başka temel kavram “op”lerdir; Airflow’daki görevlere bir ölçüde benzerler. Op’ler, bir veri hattındaki bireysel adımları temsil eder ve her op’un girdileri ve çıktıları vardır; bunlar varlıklardan oluşabilir. Dahası, bu giriş ve çıkışlar, işlenen veriyi net biçimde tanımlamak için türlenebilir.
Peki op’ler ile varlıkların ilişkisi nedir? Op’ler, varlıklar üzerinde çalışan (extract, transform, load gibi) adımlardır; varlıklar ise bizzat veri nesneleridir.
Bir hattan akan veriye açıklık getirmek için Dagster, her op’un giriş ve çıkışlarını doğrulamak üzere sağlam bir tür sistemi kullanır. Airflow Python tür tanımlarını desteklese de Dagster, türlendirmeyi hat yazım deneyiminin merkezine koymuştur.
Sadece op’leri değil, varlık tanımlarını da türleyebilir, böylece bir varlığın ürettiği verinin doğru ve doğrulanmış olmasını sağlayabilirsiniz.
Bir orkestrasyon aracı seçerken özellik yoğunluğu, toplam sahip olma maliyeti ve ölçeklenebilirlik gibi unsurlar kabul kriterleri listesinde yer alabilir. Bununla birlikte, geliştirici deneyimini akılda tutmak önemlidir. Sezgisel, verimli ve sağlam bir geliştirici deneyimi, hızlı yinelemeyi mümkün kılar ve birim testleri çalıştırma ile bağımlılıkları yönetme gibi zorluklara proaktif şekilde çözüm getirir.
Çözemediğiniz bir Airflow sorusu veya hatası mı var? Büyük olasılıkla daha önce çözülmüştür. Airflow, herhangi bir Apache projesi içindeki en büyük Slack topluluklarından birine sahiptir ve üç binden fazla katkıcıdan oluşan bir topluluğa övünür. Airflow projesi etrafında binlerce blog, öğretici ve kurs geliştirilmiştir. Topluluk, Airflow kullanıcılarını desteklemenin yanı sıra Airflow projesini inşa etmek ve sürdürmekten sorumludur.
Apache Airflow projesinin arkasındaki ticari geliştirici Astronomer, Airflow geliştirici deneyimini bir üst seviyeye taşıdı. astro CLI, Airflow yardımcı programları için ek bir soyutlama ve işlevsellik katmanı sağlar. Astronomer ayrıca, geliştiricilerin aklına gelebilecek her türlü Airflow sorusunu ele almak için kendi kayıt defterini ve “Ask Astro” sohbet botunu sunar.
Airflow’u orkestrasyon için bu kadar cazip kılan özelliklerden biri yerelde geliştirme ve test etme olanağıdır. airflow CLI kullanarak bir geliştirici saniyeler içinde bir Airflow örneği ayağa kaldırabilir. Ardından, kodda yerel değişiklikler yapılıp UI veya CLI üzerinden test edilebilir. Bu, özellikle Airflow ağırlıklı ekiplerde hızlı yineleme ve daha kısa bir yayın döngüsü sağlar.
Bir süre boyunca bir Airflow DAG’ini tanımlamanın tek yolu geleneksel operatörlerdi. TaskFlow API bunu hızla değiştirdi ve DAG oluşturma için alternatif sundu. Şimdi, dag-factory ve gusty gibi araçlar, DAG yazmaya ve çalıştırmaya başlamayı her zamankinden kolay hale getiriyor.
Dagster’ın yerel geliştirme deneyiminin büyük bölümü, yerelde hat geliştirip test edip çalıştırabilme dahil olmak üzere Airflow ile örtüşür. Her ikisi de CI/CD gibi kurumsal düzeyde yaygın SDLC uygulamalarına destek verir.
Bununla birlikte, Airflow’un topluluğunun salt büyüklüğünü Dagster’ınkiyle kıyaslamak zordur. Airflow’un binlerce topluluk kaynağı varken Dagster hâlâ yetişmeye çalışıyor. Dagster ile veri hatları geliştirip sorun giderirken, uygulayıcılar bir çözümü hayata geçirmek için ihtiyaç duydukları kaynakları bulmakta zorlanabilir.
Dagster’ın varlık tabanlı hat geliştirme yaklaşımı, test etmeyi oldukça kolaylaştırır. Nitekim test, Dagster’ın değer önerisinin temel taşlarından biridir. Yukarıda bahsedilen tür sistemiyle birlikte Dagster, veri hatlarının bir yazılım ürünü test edilir gibi test edilmesini öncelik haline getirmiştir.
Dagster’ın dokümantasyonu, herhangi bir hat tanımında iç içe geçmiş iş mantığının oluşturduğu zorlukları ve test sırasında bunu ele almak için yaygın teknikleri vurgular. Birçok kişinin Airflow geliştirici deneyiminde eksik bulduğu bir alan budur.
Airflow ve Dagster’ı kullanmanın nasıl bir şey olduğuna dair fikir oluşmaya başladı mı? Şimdi, her bir aracın diğerine göre nerede öne çıktığını ve bilinen birkaç eksik yönü inceleyelim.
Klişe olacak ama Airflow ile sınır gökyüzü. Projenin genişletilebilirliği eşi benzeri yoktur. Airflow geliştiricileri kendi operatörlerini, sensörlerini, yürütücülerini ve hatta zaman çizelgelerini (timetable) oluşturabilir. Benzersiz kullanım senaryolarına sahip veri ekipleri için bu oldukça çekicidir. Kendi özel entegrasyonlarınızı oluşturmak istemiyor musunuz?
Endişelenmeyin, büyük olasılıkla gerek kalmayacak. Basit bir pip kurulumu sonrası kullanıma hazır 1.600’den fazla mevcut entegrasyon var. Veri orkestrasyonunda sektör standardı olmak, Airflow’un sürekli yenilikten faydalanmasını sağlar ve bir tür “pozitif geri besleme döngüsü” yaratır.
Gerçek anlamda açık kaynak bir ürün olarak Airflow’u üretimde çalıştırmanın sayısız yolu vardır. Şirket içi Kubernetes kümelerinden tam yönetilen bir hizmete kadar binlerce işletme Airflow’u üretim ortamında kullanır.
Devlet ve raporlama düzenlemeleri, veri gizliliği ve güvenliğine bağlılıklar ve ağ ormanları, veri ekiplerini bazen hayal edilemeyecek biçimlerde araçları yapılandırmaya zorlar. Bu tür ekipler, Airflow gibi bir aracı üretimde çalıştırırken mümkün olduğunca fazla esneklik ve özelleştirilebilirlik ister. Diğer ekipler tüm ağır işi bir yönetilen hizmet sağlayıcısının yapmasını isteyebilir. Airflow ile bu iki uç (ve aradaki her seçenek) mümkündür.
Airflow genişletilebilir ve binlerce eklentiye sahiptir. DAG’ler çeşitli tekniklerle tanımlanabilir, hatlar veriye duyarlı zamanlamayla tetiklenebilir ve özel bir gizli anahtar arka ucu yapılandırılabilir.
Tüm bunlar, Airflow’u en geniş kapsamıyla kullanmanın bir miktar öğrenme eğrisi gerektirdiği anlamına gelir.
Veri hatlarını hızla yazıp çalıştırmak isteyen Veri Mühendisleri için Airflow bir giriş bariyeri oluşturur. Bu durum sıklıkla Veri Mühendislerini ve benzerlerini Dagster gibi daha yalın bir çözüme yönlendirir.
Dagster ile veri hatları kurmak sezgiseldir. Varlık tabanlı yaklaşım, hattı mümkün olan en az ek yükle üretime almak isteyen veri uygulayıcıları için çekicidir.
Dagster, özellikle veri hatlarını oluşturmak için Python fonksiyonları yazmaya alışkın kullanıcılar açısından, geleneksel Airflow operatörleriyle çalışmaya kıyasla çok daha düşük bir öğrenme eğrisi sunar. Bu, Dagster’ın en büyük güçlerinden biridir ve çoğu zaman bir veri ekibinin veri hatlarını çalıştırmak için Dagster’a güvenmesinin başlıca nedenidir.
Airflow topluluğu ile rekabet etmek Dagster için bile zordur. Açık kaynak projeye katkı sunmaktan veri yığınına yeni eklenen araçlar için bağlayıcılar geliştirmeye, soruları yanıtlamaya ve dokümantasyonu derlemeye kadar Airflow topluluğunun sunmadığı pek bir şey yoktur. Bununla birlikte Dagster topluluğu hızla büyüyor. Kurumsal düzeyde, bu filizlenen topluluk hem bir risk hem de Dagster projesine etki katmak için bir fırsattır.
Artık her iki aracı da karşılaştırdığımıza göre, hangisi sizin için doğru? Aşağıdaki tabloda her birini karşılaştırdık:
|
Özellik/Boyut |
Airflow |
Dagster |
|
Hat Kavramı |
Hatları temsil etmek için Yönlendirilmiş Çevrimsiz Grafikler (DAG) kullanır; temel birimler görevlerdir. |
Depolanan herhangi bir veri nesnesine varlık (asset) denilen varlık tabanlı bir yaklaşım kullanır; işlemler “op” olarak adlandırılır. |
|
Görev Temsili |
Görevler operatörlerle veya fonksiyon tabanlı görev tanımı için TaskFlow API ile tanımlanır. |
Boru hattındaki adımları temsil etmek için op’ler kullanılır; daha iyi açıklık için giriş ve çıkışlar türlenmiştir. |
|
Zamanlama |
CRON, zaman çizelgeleri ve veriye duyarlı tetikleyicilerle son derece esnek zamanlama. |
Zamanlama daha az vurgulanır ancak varlıklara ve bunların bağımlılıklarına bağlıdır. |
|
Yerel Geliştirme |
Hızlı yineleme ve test için Airflow CLI aracılığıyla yerel geliştirmeyi destekler. |
Yerel geliştirme ve test desteklenir, ancak topluluk kaynakları daha azdır. |
|
Tür Sistemi |
Python tür ipuçlarını destekler, ancak temel bir özellik değildir. |
Her adımda giriş ve çıkışları doğrulamak için güçlü bir tür sistemi; hattın tasarımının merkezindedir. |
|
Genişletilebilirlik |
1.600+ entegrasyon, özel operatörler, sensörler ve daha fazlasıyla son derece genişletilebilir. |
Airflow’a göre daha sınırlı genişletilebilirlik, ancak Python fonksiyonu kullananlar için sezgisel. |
|
Topluluk Desteği |
Binlerce katkıcı ve kapsamlı kaynaklarla (ör. bloglar, öğreticiler) büyük, olgun bir topluluk. |
Daha küçük ama hızla büyüyen topluluk; etki ve katkı için fırsat sunar. |
|
Öğrenme Kolaylığı |
Genişletilebilirlik ve özel özellikler nedeniyle daha dik öğrenme eğrisi. |
Sezgisel hat yazımı ve varlık tabanlı yaklaşım sayesinde daha düşük öğrenme eğrisi. |
|
Test |
Test mümkündür ancak temel odak değildir. |
Teste güçlü vurgu; varlık tabanlı yaklaşım hatların testini kolaylaştırır. |
|
Üretime Alma |
Şirket içi Kubernetes’ten tam yönetilen hizmetlere kadar çeşitli ortamlarda çalıştırılabilir. |
Üretim seçenekleri açısından daha az olgun, ancak kurumsal kullanım senaryoları için yine de esnektir. |
|
Özel Entegrasyonlar |
Binlerce entegrasyon ve özel bileşen oluşturabilme ile sınırsız genişletilebilirlik. |
Airflow’a kıyasla sınırlı, ancak büyüyen toplulukla artmaktadır. |
|
Geliştirici Deneyimi |
TaskFlow API ve dag-factory gibi araçlar geliştirici deneyimini iyileştirir. |
Sadelik ve hızlı devreye almaya vurgu yapan daha sezgisel bir deneyim; ancak daha az araç mevcuttur. |
Aşağıdaki görsel, Airflow ve Dagster’ın özellikleri ve işlevlerindeki temel benzerlik ve farkları özetlemektedir.

Airflow ve Dagster arasındaki benzerlikler.
Şimdi, milyon dolarlık soru; bu iş için hangi orkestrasyon aracını seçmelisiniz?
Açık ve net, Airflow üretimde veri hatları yazmanın ve çalıştırmanın fiili standardıdır. Evet, Dagster’ın tasarım kalıplarının Airflow’a göre teknik olarak üstün olduğu bileşenler olabilir. Ancak Airflow’un genişletilebilirliği ve projeyi desteklemek üzere büyüyen topluluk, onu yerleşik veri ekipleri için kolay bir tercih kılar. Airflow iki dünyanın en iyisini sunar: devasa bir mevcut araç kütüphanesi artı hayal edebileceğiniz her operatör, sensör veya hook’u oluşturma imkanı. Airflow kendi nişini buldu ve yakın zamanda bir yere gitmiyor.
Kendi yazdığı veri hatlarına alışkın küçük veri ekipleri için Dagster doğru araç olabilir. Dagster, Airflow’un sunduğu tüm “süslü özelliklerle” övünmeyebilir; ancak fikirden üretime giden hızlı bir yol sunar. Dagster; önemli olan konular için (yerel geliştirme, sağlam birim testleri ve modüler bir çerçeve düşünün) birinci sınıf destek sunar ve pek çok entegrasyonla gelir. Proje olgunlaştıkça ve topluluk büyüdükçe Dagster, düşük giriş bariyerini korurken Airflow ile arasındaki özellik farkını kapatmaya devam ediyor.
Araçları karşılaştırmak her zaman zordur. Birinin diğerinden “daha iyi” olduğunu söylemek ya da belirli bir aracı belirli bir kullanım tabanına zorlamak kolay değildir. Doğrusunu söylemek gerekirse, Airflow ve Dagster’ın altında yatan çerçeve şaşırtıcı derecede benzerdir. En iyi veri uygulayıcıları araç seçerken özellik peşinde koşmaz; bunun yerine, ekosistemlerine entegre ettikleri aracın süreci nasıl etkilediğine odaklanırlar.
Airflow ekiplerimin daha hızlı yineleme yapmasını sağlıyor mu? Dagster gibi bir araç, üretime göndermeden önce mühendislerin kodu daha iyi test etmesine yardımcı olur mu? Bu orkestrasyon aracı bir veri platformu için daha büyük vizyona uyuyor mu? Bu tür sorular, veri ekipleri ve hizmet verdikleri paydaşlar için değeri artırmaya yardımcı olur.
Apache Airflow ile başlamaya hazırsanız DataCamp’in Python ile Airflow’a Giriş kursuna göz atın. Burada görevler, sensörler ve ilk Airflow DAG’lerinizi oluşturmak için ihtiyaç duyduğunuz her şeyin temellerini öğreneceksiniz.
Jake, Airflow, Databricks ve AWS kullanarak dayanıklı ve ölçeklenebilir veri altyapıları kurma konusunda uzmanlaşmış bir veri mühendisidir. Jake aynı zamanda DataCamp'te Introduction to Data Pipelines ve Introduction to NoSQL derslerinin eğitmenidir.
Öne Çıkan DataCamp Kursları
Kurs
Program
Program

blog
Abid Ali Awan
14 dk.
blog
Dario Radečić
15 dk.
Eğitim
Kurtis Pykes
8 dk.
Eğitim
Adel Nehme