Google PDE: İş Akışı Orkestrasyonu ve İşlem Hattı Otomasyonu — Çalışma kılavuzu
Şunun bir parçası: Google Professional Data Engineer — Çalışma kılavuzu. Doğrulanmış cevaplarla şurada pratik yapın: Google sınav merkezi, veya şurada süreli deneme sınavları çözün: ExamRoll.io.
Genel Bakış
İş akışı orkestrasyonu ve veri hattı otomasyonu, veri alımı, dönüşüm, kalite kontrolleri ve yayınlama gibi veri görevlerini servisler arasında koordine ederek bu işlemlerin güvenilir, emniyetli ve uygun maliyetli bir şekilde gerçekleşmesini sağlar. Google Cloud’da orkestrasyon, her iş yükünün yürütme modeline uygun olmalıdır: zamanlanmış toplu iş, olay güdümlü akış, anlık (ad-hoc) veya uzun süren işler. Tasarım hedefleri; tekrarlanabilirlik, idempotency, gözlemlenebilirlik, en az ayrıcalık ilkesi ve ortamlar arasında güvenli yükseltmedir.
Temel seçenekler:
- DAG’ler, görev bağımlılıkları ve gelişmiş zamanlama için Cloud Composer (Apache Airflow) ile kod merkezli toplu iş orkestrasyonu.
- Hafif, olay güdümlü, servisler arası diziler için Cloud Workflows ile sunucusuz API koreografisi.
- cron için Cloud Scheduler veya olaylar için Eventarc tarafından tetiklenen Cloud Run jobs veya Dataproc jobs gibi yürütme uç noktaları.
- BigQuery dönüşümleri, assertion’lar ve sürüm yönetimi için Dataform ile SQL-yerel orkestrasyon.
İşletim modeli; sınırlı üstel geri çekilme ile yeniden denemeleri, zaman aşımlarını, SLA’ları, catchup ve backfill’leri, güvenli yeniden çalıştırmalar için idempotent görev tasarımını ve işlenemeyen mesajların yakalandığı (dead-letter capture) sağlam hata yönetimini vurgular. Güvenlik; veri hattı başına servis hesapları, gizli bilgilerin izolasyonu, parametrelendirme ve en az ayrıcalıklı IAM aracılığıyla sağlanır. CI/CD, kod olarak altyapı ve kapsamlı telemetri, üretime hazır bir yaklaşımı tamamlar.
Google Cloud’da Orkestrasyon: Araçlar ve Desenler
Cloud Composer (Airflow)
- DAG’ler, açık bağımlılıklara sahip yönlendirilmiş döngüsel olmayan yürütme graflarını tanımlar. Görevleri ifade etmek için TaskFlow API veya operatörleri (ör. BigQuery, Dataflow, Dataproc, Cloud Run) kullanın. Sensörler ve ertelenebilir (deferrable) operatörler, bekleme koşulları (ör. Cloud Storage’da bir nesnenin tamamlanması veya BigQuery’de bir bölümün görünmesi) için zamanlayıcı (scheduler) yükünü azaltır.
- Zamanlama: cron ifadeleri, start_date, end_date ve catchup, geçmiş çalıştırmaları kontrol eder. Backfill’ler için catchup kullanın; akışa yakın (streaming-adjacent) veya idempotent olmayan hedefler için devre dışı bırakın. Bağımlı (downstream) sistemleri korumak için max_active_runs ve pool’lar ile eş zamanlılığı sınırlayın.
- Bağımlılıklar: set_upstream/set_downstream veya taskflow bağımlılıkları. Metadata güdümlü orkestrasyon için, dinamik görev eşlemesi (dynamic task mapping) kullanarak bir BigQuery kontrol tablosundan (ör. istemci/bölüm listesi) dinamik olarak görevler oluşturun; bu sayede DAG ayrıştırma (parse) süresini sabit tutun ve görevleri veri güdümlü hale getirin.
- Örnek (kısa) DAG parçası:
undefined
Cloud Workflows, Cloud Scheduler, Cloud Run jobs ve olay güdümlü yürütme
- Cloud Workflows, yerleşik yeniden denemeler, döngüler, paralel dallar ve telafi mantığı ile Google API’lerini ve HTTP uç noktalarını yönetir. BigQuery, Dataflow, Batch ve Cloud Run jobs gibi servisler arasında hafif kontrol akışı için idealdir.
- Cloud Scheduler, cron tarzı otomasyon için Workflows’u, Pub/Sub topic’lerini veya HTTP servislerini tetikler. Saat 02:00’deki günlük toplu iş için, bir Dataflow job veya Dataproc job başlatan bir Workflow zamanlayın.
- Cloud Run jobs, otomatik yeniden deneme ve minimum operasyon ile konteynerize edilmiş toplu iş adımlarını yürütür. Çok adımlı veri görevleri veya Dataflow ya da BigQuery etrafındaki ön/son işleme (pre/post-processing) adımları için Workflows ile iyi bir ikili oluştururlar.
- Olay güdümlü: Cloud Storage nesne tamamlama (object finalize), Pub/Sub mesajları veya Audit Logs’u Cloud Run’a veya Workflows’a yönlendirmek için Eventarc’ı kullanın. Tek bir tabloda BigQuery ekleme işi (insert-job) bildirimleri için, gelişmiş bir filtre ile Pub/Sub’a bir Cloud Logging sink’i oluşturun, ardından bu topic’ten tüketicinizi (consumer) tetikleyin.
Dataform: BigQuery için SQL iş akışları
- ref() ile bağımlılık graflarını modelleyin, tabloları/view’ları/artımlı (incrementals) tabloları tanımlayın ve derlemeleri (builds) etiketlere veya zamanlamalara göre yönetin. Dataform, SQLX’i sıralı yürütme planlarına derleyerek bildirimsel (declarative) tanımlardan metadata güdümlü orkestrasyonu mümkün kılar.
- Assertion’lar veri kalitesini sağlar. Bir assertion, geçmesi için sıfır satır döndürmesi gereken bir sorgudur. Örnek assertion:
undefined
- Sürümler ve repository kontrolleri: kodu bir repository’de saklayın, branch’ler ve review’lar kullanın ve etiketlenmiş sürümleri ortama özgü değişkenlerle ortamlara (ör. dev, test, prod) yükseltin. Dağıtımları (deploy) CI/CD kontrolleri ve assertion sonuçları aracılığıyla denetleyin.
Dataproc, Dataflow ve depolama desenleri
- Minimum operasyonla Hadoop/Spark’ı yeniden kullanmak için, verileri küme (cluster) ömrünün ötesinde kalıcı kılmak ve kalıcı disk maliyetini en aza indirmek için GCS connector ile Dataproc kullanın. İzolasyon ve maliyet kontrolü için iş başına geçici (ephemeral) kümeler oluşturun; Composer veya Workflows ile orkestrasyon yapın.
- Hatalı biçimlendirilmiş satırlar içeren toplu veri alımı için, geçerli kayıtları BigQuery’ye yazmak ve ayrıştırma/doğrulama (parse/validation) hatalarını inceleme için bir dead-letter BigQuery tablosuna yönlendirmek üzere Dataflow çalıştırın.
Güvenilirlik, Hata Yönetimi ve Idempotency
Yeniden denemeler, zaman aşımları ve geri çekilme (backoff)
- Geçici hatalar için sınırlı üstel geri çekilme (bounded exponential backoff) kullanın ve toplam yeniden deneme süresini işin SLA’sı ile sınırlandırın. Örneğin, bir veritabanını her 15 dakikada bir yoklayan bir ön uç (frontend) veya görev, 15 dakikaya kadar üstel geri çekilme ile yeniden denemeli, ardından kontrollü bir hata bildirmelidir.
- Airflow’da görev başına
execution_timeoutve genel DAG SLA’larını yapılandırın; Workflows’ta isemax_doublingsvemax_retry_durationile adım başına zaman aşımları ve yeniden deneme politikaları belirleyin. - Cloud Run işleri için yeniden deneme sayısını ve geri çekilmeyi (backoff) ayarlayın.
Geriye dönük doldurma (backfill), yakalama (catchup) ve hata yönetimi
- Görevler idempotent olduğunda ve kaynaklar tarihe göre bölümlendiğinde, geçmiş verilerin yeniden hesaplanması için yakalamayı (catchup) etkinleştirin.
- Deterministik olmayan çıktılar veya harici yan etkiler için, yalnızca geriye dönük doldurma (backfill-only) amaçlı DAG’leri veya neyin üretildiğini takip etmek için yazma-denetim (write-audit) tablolarını kullanmayı düşünün.
- Akış (streaming) ve toplu (batch) dönüşümlerdeki kayıt seviyesindeki hatalar için dead-letter konularını/tablolarını kullanın.
- Toplu Dataflow için, hatalı satırları hata etiketleriyle yakalayın ve hata metriklerini toplayın; akış için ise Pub/Sub DLQ’larını (Dead-Letter Queue) kullanın.
Idempotent görev tasarımı ve yeniden çalıştırmalar
- BigQuery: Tekilleştirme anahtarlarıyla
MERGEveyaINSERTtercih edin; akış eklemelerini (streaming inserts) tekilleştirmek içininsertIdkullanın. Toplu işlemler için, tam yeniden çalıştırmalara izin vermek amacıyla bir hazırlık (staging) tablosuna yazın, ardından işlemsel olarak güvenli (transactionally safe) bir adımda hedef tabloyaMERGEyapın. - Cloud Storage: Yeniden çalıştırmaların yalnızca beklendiğinde güvenli bir şekilde üzerine yazmasını sağlamak için nesil ön koşullarını (generation preconditions) ve deterministik nesne adlarını (ör. önek/tarih/hash) kullanın.
- Pub/Sub ve Dataflow: En az bir kez teslim (at-least-once delivery) için tasarım yapın. Aşağı akış sistemlerinin (downstream) tekilleştirme yapabilmesi ve gecikme hakkında mantık yürütebilmesi için mesaj tanımlayıcıları (ör. Paket ID’si, mantıksal olay zaman damgası) ekleyin. İş kuralları “ilk işlenen olay kazanır” semantiğini kabul ediyorsa, bu ödünleşimi (trade-off) belgeleyin ve sapmayı (skew) izleyin; aksi takdirde, kazananları olay zamanına göre ve eşitlik bozucularla (tie-breakers) belirleyin.
- Kısmi hatadan kurtarma: Çıktıları
run_idveya tarihe göre bölümleyin, tamamlanma işaretçileri (completion markers) yazın ve aşağı akış görevlerini bu işaretçilere bağımlı hale getirin. Yalnızca tamamlanmamış olarak işaretlenen bölümleri yeniden işleyin.
Sorun giderme ve ölçeklenebilirlik
- Bir akış panosu (streaming dashboard) olayları kaçırıyor ancak Pub/Sub’da mevcut oldukları görülüyorsa, dönüşüm (transformation) kusurlarını izole etmek için Dataflow pipeline’ından bilinen sabit bir veri seti çalıştırın. Pencereleme (windowing), tetikleyiciler (triggers) ve izin verilen gecikmeyi (allowed lateness) doğrulayın.
- Yaygın hata modu: Sınırsız kaynaklar için uygun pencereleme/tetikleyiciler olmadan bir akış pipeline’ı oluşturmak veya parçalı bir pencereyi (sharded window) yanlış kullanmak, pipeline oluşturma işleminin başarısız olmasına veya durum (state) patlamalarına neden olabilir.
- Dataflow’u maksimum çalışan (max workers) sayısı ve otomatik ölçeklendirme algoritmasıyla ölçeklendirin; ani artışlar (ör. 50.000 kurulum) için, yoğun zamanlarda yatay ölçeklendirmeye izin vermek üzere maksimum çalışan sayısını artırın.
Güvenlik, Parametrelendirme, Ortamlar ve CI/CD
Parametrelendirme ve yapılandırma yönetimi
- Yapılandırmayı ortama göre dışsallaştırın. Composer’da Değişkenler (Variables), Bağlantılar (Connections) ve ortam değişkenlerini kullanın; DAG parametrelerini çalıştırma tarihine veya bölüme göre şablonlayın. Workflows’ta, çalışma zamanı argümanlarını (runtime arguments) ve ortam başına ayrı iş akışlarını kullanın veya yapılandırmayı Secret Manager’dan okuyun.
- İstemcileri, kaynakları veya bölümleri listeleyen bir kontrol tablosunu (ör. BigQuery yapılandırma veri seti) okuyarak meta veri odaklı (metadata-driven) orkestrasyon kullanın. Kod değişikliklerini veri odaklı değişikliklerden ayırmak için görevleri dinamik olarak oluşturun.
Gizli anahtarlar (secrets), hizmet hesapları ve en az ayrıcalık ilkesi
- Kimlik bilgilerini Secret Manager’da saklayın ve çalışma zamanında bunlara referans verin. Koda veya Airflow Değişkenlerine (Variables) gizli anahtar gömmekten kaçının.
- Her pipeline için, gereken minimum IAM rollerine sahip ayrı bir hizmet hesabı atayın. Düzenlemeye tabi BigQuery erişimi için, istemci verilerini ayrı veri setlerine izole edin, veri setine özgü rolleri yalnızca onaylanmış kullanıcılara verin ve BigQuery API erişimini onaylanmış kimliklerle (principals) kısıtlayın. Çoklu kiracılık (multitenancy) için, her istemci başına bir veri seti oluşturun ve yalnızca uygun rolleri bağlayın.
CI/CD ve kod olarak altyapı (Infrastructure as Code)
- Altyapıyı (Composer ortamları, Workflows, Scheduler işleri, Pub/Sub konuları, log havuzları) Terraform ile yönetin. Proje/ortamları, gizli anahtarları ve hizmet hesaplarını standartlaştırmak için modülleri kullanın.
- Pipeline kodunu Cloud Build veya GitHub Actions ile derleyin ve test edin. Birim testlerini, SQL denetimini (linting), Dataform deneme çalıştırmalarını (dry-runs) ve Airflow DAG doğrulamasını otomatikleştirin. Yapıtları (artifacts) etiketler aracılığıyla bir üst ortama taşıyın (promote); Composer için, DAG’leri dağıtılabilir paketler olarak paketleyin; Dataform için, onaylamalar (assertions) geçtikten sonra taşıma yapan sürüm dallarını (release branches) kullanın.
- Dağıtımın üst ortama taşınması: Ayrı projeler ve parametreli yapılandırmalar aracılığıyla dev → test → prod. Yüksek riskli taşımalar için manuel onay kapıları (manual approval gates) ve değişiklik pencereleri (change windows) ile sürekli teslimat (continuous delivery) kullanın.
Gözlemlenebilirlik, Uyarı ve Runbook’lar
Telemetri ve uyarı
- Tüm orkestrasyon loglarını yapılandırılmış alanlarla (pipeline, dag_id, run_id, task_id, partition) Cloud Logging’e yönlendirin. Hata loglarını log tabanlı metrikler aracılığıyla Monitoring’e aktarın. Şu durumlarda uyarı oluşturun:
- Kaçırılan zamanlamalar veya SLA ihlalleri
- Ardışık görev hataları
- İş birikimi artışı (ör. Pub/Sub onaylanmamış (unacked) mesajları, Dataflow sistem gecikmesi)
- Veri kalitesi denetimi (assertion) hataları
- Cloud Composer: DAG/görev süresini, başarı oranını, kuyruk derinliğini ve zamanlayıcı (scheduler) sağlığını izleyin. Sayfalama (paging) ve düzeltme runbook’ları için on_failure_callback’i yapılandırın.
- Cloud Workflows: Yürütme (Execution) loglarını ve adım gecikmelerini inceleyin; açık yeniden denemeler ve hata işleyiciler (error handlers) ekleyin; korelasyon kimlikleriyle (correlation ID) özel loglar yayınlayın.
- BigQuery tablo değişikliği bildirimleri: Belirli bir tabloyu hedefleyen insert işleri için gelişmiş bir filtreyle proje düzeyinde bir Logging havuzu (sink) oluşturun ve Pub/Sub’a aktarın; izleme aracınız, diğer tablolardan kaynaklanan gürültü olmadan anlık uyarılar için bu konuya (topic) abone olur.
Runbook tasarımı
- Her bir pipeline için tetikleyicileri, bağımlılıkları, SLA’ları, geri alma/yeniden deneme prosedürlerini ve güvenli geriye dönük doldurma (backfill) adımlarını belgeleyin. Dataflow için “sabit veri kümesi tekrarı” (fixed dataset replay), bir streaming işinin nasıl boşaltılacağı (drain), başarısız bölümlerin (partition) nasıl yeniden işleneceği ve DLQ mesajlarının nasıl düzeltileceğini dahil edin.
- Yaygın hata imzalarını (ör. permission denied, quota exceeded, schema mismatch), karar ağaçları ve üst birime bildirme (escalation) yolları ile yakalayın.
Pratik Problem Senaryosu
Acme Perakende Analitiği’nin, zaman zaman bozuk satırlar içeren günlük iş ortağı CSV dosyalarını alması, geçerli verileri dönüştürüp BigQuery’ye yüklemesi ve hatalı satırları inceleme için ortaya çıkarması gerekiyor. Ayrıca, neredeyse gerçek zamanlı fiyat güncellemeleri için olay güdümlü zenginleştirme ve geliştirme (dev) ortamından üretim (prod) ortamına güvenli yükseltme istiyorlar.
Yaklaşım:
Depolama ve olay tetikleyicileri
- Nesne sürümlemesi (object versioning) ve tek tip bucket düzeyinde erişim (uniform bucket-level access) özelliklerine sahip, özel bir Cloud Storage bucket’ı oluşturun. Eventarc aracılığıyla Pub/Sub’a nesne sonlandırma (object finalize) bildirimlerini etkinleştirin.
- Gerekçe: Nesne sonlandırma, aşağı akış (downstream) veri alımını tetiklemek için güvenilir bir olaydır; sürümleme, yeniden çalıştırmaları ve denetimleri destekler.
Dead-letter yönetimi ile toplu (batch) veri alımı
- catchup etkinleştirilmiş şekilde saat 02:00’de günlük bir Airflow DAG’ını zamanlamak için Cloud Composer kullanın. DAG, CSV’leri ayrıştıran (parse), şemayı doğrulayan ve geçerli kayıtları deterministik hazırlık tabloları (staging tables) kullanarak BigQuery’ye yazan ve ardından bölümlenmiş (partitioned) hedef tablolara MERGE eden bir Dataflow toplu işini (batch job) başlatır. Bozuk/başarısız kayıtları bir BigQuery dead-letter tablosuna yönlendirin.
- Gerekçe: Dataflow, ayrıştırma/doğrulamayı ölçeklendirir; MERGE, etkisizliği (idempotency) sağlar; dead-letter yakalama, pipeline’ı engellemeden incelemeyi destekler ve bozuk satırlar için önerilen kalıpla eşleşir.
Olay güdümlü zenginleştirme
- Artımlı fiyat güncellemeleri için hafif zenginleştirme yapmak üzere bir Cloud Run işi dağıtın. Gün içinde küçük güncelleme dosyaları geldiğinde Eventarc’tan gelen Pub/Sub mesajlarını dinleyen Cloud Workflows aracılığıyla tetikleyin.
- Gerekçe: Workflows ile sunucusuz container’lar, ağır dönüşümleri toplu (batch) halde tutarken küçük olaylar için düşük gecikmeli, düşük operasyonlu orkestrasyon sağlar.
Güvenilirlik kontrolleri
- Dataflow ve Cloud Run işlerindeki geçici hatalar için üstel geri çekilme (exponential backoff) ile yeniden denemeleri yapılandırın ve toplam yeniden deneme süresini DAG SLA’sı ile sınırlayın. Airflow’da görev başına yürütme zaman aşımlarını ve on_failure geri aramalarını ayarlayın; Workflows’ta max_doublings ve max_retry_duration’ı ayarlayın.
- Gerekçe: Sınırlı geri çekilme, SLA’ları korur ve kontrolden çıkmış yeniden denemeleri önler.
Güvenlik ve en az ayrıcalık ilkesi
- Her bir bileşeni özel bir hizmet hesabı (service account) altında çalıştırın: Composer orkestratör SA, Dataflow çalışanı SA, Cloud Run işi SA. Yalnızca gerekli rolleri verin: Dataflow’a veri alım bucket’ı için GCS okuma (read), hedef veri kümeleri için BigQuery dataEditor ve loglar için Viewer. Gizli bilgileri (secrets) Secret Manager’da saklayın ve çalışma zamanında (runtime) bunlara referans verin.
- Gerekçe: En az ayrıcalık ilkesini uygular ve etki alanını (blast radius) yalıtır.
Metadata güdümlü orkestrasyon
- İş ortağı kaynaklarını, dosya desenlerini ve hedef veri kümelerini listeleyen bir BigQuery kontrol tablosu tutun. DAG çalışma zamanında, Airflow bu tabloyu sorgular ve iş ortağı başına görevler oluşturmak için dinamik görev eşlemesi (dynamic task mapping) kullanır.
- Gerekçe: Bir iş ortağı eklemek, kod değişikliği değil, bir veri değişikliği haline gelir ve bu da dağıtım riskini azaltır.
Gözlemlenebilirlik ve uyarı
- run_id ve partner_id ile yapılandırılmış loglar yayınlayın. DAG SLA ihlalleri, Dataflow sistem gecikmesi ve boş olmayan dead-letter sayıları için uyarı politikaları oluşturun. Hedef tabloya yapılan BigQuery insert işlemleri için, o tabloya özel gelişmiş bir filtreyle bir Cloud Logging havuzu (sink) yapılandırın ve Acme’nin izleme aracının tükettiği bir Pub/Sub konusuna (topic) yönlendirin.
- Gerekçe: Ayrıntılı uyarılar, gürültü olmadan hızlı triyaj (önceliklendirme) sağlar.
CI/CD ve yükseltme
- Altyapıyı (bucket’lar, Pub/Sub, Eventarc, Composer, Workflows, BigQuery veri kümeleri) Terraform’da yönetin. Airflow DAG sözdizimini doğrulamak, birim testlerini çalıştırmak ve bir geliştirme (dev) Composer ortamına dağıtım yapmak için Cloud Build’i kullanın. Dataform denetimleri (assertions) ve entegrasyon testleri geçtikten sonra parametreli yapılandırmalar ve manuel onay kapıları ile test ve üretim (prod) ortamlarına yükseltin.
- Gerekçe: Bildirimsel (declarative), tekrarlanabilir dağıtımlar ve ortamlar arasında güvenli yükseltme.
Runbook ve kurtarma
- Belirli bir tarihi yeniden oynatma adımlarını belgeleyin: nesne sürümlemesinden CSV’yi geri yükleyin, o bölüm (partition) için Dataflow işini yeniden çalıştırın, sonuçları MERGE edin ve DLQ kayıtlarını inceleyin. Tutarsızlıklar ortaya çıkarsa dönüşüm hatalarını izole etmek için bir “sabit veri kümesi tekrarı” (fixed dataset replay) prosedürü ekleyin.
- Gerekçe: Etkisiz (idempotent) tasarım ve belgelenmiş kurtarma, kısmi hata düzeltmeyi kolaylaştırır.
← Veri Alımı · Tüm alanlar · Makine Öğrenmesi →
Bu soruları çözün → · ExamRoll.io’da süreli pratik →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Sınavınızı geçin →