Ana içeriğe atla
Veri Mühendisliği

Veri Mühendisliğinde CI/CD: Sorunsuz Dağıtım İçin Bir Rehber

CI/CD’nin Veri Mühendisliği iş akışlarında nasıl kullanıldığını ve bu süreçleri kurmak için hangi araçların yer aldığını öğrenin.
Jake Roach's photo
Jake Roach
Güncel · 12 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.

veri mühendisliğine başlamak kolay değildir. Sınıflarda ve hatta çevrimiçi kurslarda, Python ve SQL yazmanın temellerine hâkim olursunuz. Hatta Airflow, Databricks ve Snowflake gibi çerçeveler ve araçlar hakkında biraz bilgi edinirsiniz. 

Çalışan kod yazmak bir şeydir. Bu kod için testler yazıp kurumsal bir ortamda çalışacağı üretime almak bambaşka bir şeydir. Neyse ki yazılım mühendisliği bunu çözdü ve veri mühendisliği de yetişmeye başlıyor. 

Bunu nasıl yapıyorlar diye sorabilirsiniz: CI/CD. Kodu “vahşi doğada” çalıştırdığımızda nasıl emin oluruz? Bozuk olmadığını nasıl anlarız? Onaylandıktan sonra son kodu üretimde çalışacak şekilde nasıl göndeririz? Bu yazıda, veri mühendisliğinde CI/CD’yi inceliyoruz. Ayrıca makine öğreniminde CI/CD ile ilgili ayrı bir rehberimiz de var. 

CI/CD nedir?

CI/CD, sürekli entegrasyon ve sürekli teslim/dağıtım anlamına gelir. Şu an için çok şey ifade etmeyebilir; gelin biraz daha açalım.

Sürekli entegrasyon

Sürekli entegrasyon, kod değişikliklerinin düzenli olarak merkezi bir depoya birleştirilmesi sürecidir. Örneğin, mühendislik ekibinizin veri hattı kod tabanında bir Python fonksiyonunda başarıyla değişiklik yaptığınızı düşünün. Sürekli entegrasyon, bu kodun ardından merkezi depoya geri alınması gerektiğini söyler. 

Ama göründüğünden fazlası var. Bu kod, bir tür sürüm kontrol aracıyla (örneğin git) izlenmeli ve her değişiklik yapıldığında birim ve entegrasyon testleriyle test edilmelidir. Bu iki şeyi sağlar: İlk olarak, kod tabanındaki en son değişikliklerin diğer tüm kullanıcılara erişilebilir olmasını; ikinci olarak da kod değişikliğinin gerçekten beklendiği gibi çalıştığını doğrulamayı.

Sürekli teslim

Kodunuzu merkezi kod tabanına geri birleştirip test ettikten sonra, üretime nasıl gider? İşte burada CD devreye girer. CD, sürekli teslim/dağıtım anlamına gelir (biz sürekli teslim ifadesini kullanacağız) ve koda yapılan değişikliklerin otomatik bir şekilde dağıtılması uygulamasıdır. 

Bazıları birim ve entegrasyon testlerinin sürekli dağıtımın parçası olduğunu savunabilir, ancak ne olursa olsun, yalnızca doğrulanmış kod üretime gönderilir

Napkin.AI ile oluşturuldu

Özetle, CI/CD, kodu üretime göndermeden (sürekli teslim) önce çalıştığından emin olmayı (sürekli entegrasyon) uçtan uca ve otomatik bir şekilde sağlayan süreçtir. CI/CD’yi uygulamak için CI/CD boru hatları kullanmamız gerekir; buna bir sonraki bölümde daha yakından bakacağız.

Veri Mühendisliğinde CI/CD

Veri mühendisliğinde en iyi uygulamalar, yazılım mühendisliğinin belirlediği kılavuz ilkelere giderek daha çok yaklaşıyor. Birim testleri geliştirme ve çalıştırma ile özel bir test/QA ortamını sürdürme gibi görevler artık sadece yazılım mühendisi arkadaşlarımızla sınırlı değil. Buna CI/CD de dâhil.

CI/CD için veri mühendisliği yığınında kullanım örnekleri bulmak zor değil. İşte yaygın birkaç kullanım örneği:

  • “Asset Bundles” kullanarak Databricks işlerini paketlemek
  • Bir Airflow DAG’inde yapılan değişiklikleri üretime taşımak
  • İç ve dış veri tüketicilerine veri sunan bir REST API için yeni bir uç nokta yayımlamak
  • Günlük bir rapor için verileri hazırlayan bir dbt işini güncellemek

“Veri mühendisliği” geliştirme yaşam döngüsüne CI/CD eklemek; üretime gönderilen kodun kalitesi üzerinde yönetişim ve bu değişiklikleri yayımlamak için gereken manuel çabayı azaltma gibi pek çok fayda sunar. 

CI/CD ayrıca her sürümde yer alan adımlara görünürlük katmanı sağlar ve belirli eylemlere erişimi belirli kişi gruplarıyla sınırlayabilir.

CI/CD Boru Hatları

CI/CD gerçekleştirmek için bir CI/CD boru hattı kullanmanız gerekir. CI/CD boru hattı, kod merkezi depoya geri alındıktan sonra onu test (CI) edip üretime dağıtmak (CD) için yürütülen bir dizi adımdır. İşte bir CI/CD boru hattının nasıl görünebileceğine hızlı bir bakış.

Örnek bir CI/CD iş akışını gösteren bir grafik.

CI/CD boru hatları tipik olarak üç adımdan oluşur; derleme/dağıtım ortamını yapılandırmak, testleri çalıştırmak ve kodu üretime göndermek.

Genellikle bir CI/CD boru hattında üç tür işlem vardır. İlk olarak, kodu test etmek ve dağıtmak için gerekli ortam, boru hattının çalıştırıldığı yerde yapılandırılmalıdır. Bu; bir CLI kurmak, sırları almak ve en önemlisi yeni güncellenen kod tabanını çekmek gibi görevleri içerebilir.

Ortamı kurduktan sonra, yayımlanacak kod test edilmelidir. Burada birim ve entegrasyon testleri, yeni güncellenen kod tabanına karşı çalıştırılır. Tüm test vakalarını geçtikten sonra güncellenen kod üretime dağıtılabilir.

CI/CD Araçları

CI/CD boru hatlarınızı çalıştırmak için bir araç mı arıyorsunuz? Şanslısınız, bir sürü var! Açık kaynak seçeneklerden tamamen yönetilen hizmetlere kadar, CI/CD süreçlerinizi orkestre etmek için seçenek sıkıntısı yok. İşte en popüler CI/CD araçlarından sadece birkaçı.

GitHub Actions

Sürüm kontrolünü düşündüğünüzde muhtemelen aklınıza GitHub gelir. GitHub, kodunuzu saklamak için en popüler yerlerden biridir ve bu nedenle CI/CD boru hatlarınızı yönetmek için de en cazip yerlerden biridir. 

GitHub Actions, GitHub kullanıcılarının CI/CD boru hatlarını geliştirmesine, çalıştırmasına ve yönetmesine olanak tanıyan tamamen yönetilen bir CI/CD teklifidir. Boru hatları genellikle belirli bir dala yapılan push veya bir çekme isteğinin birleştirilmesi gibi bir eylemle tetiklenen YAML dosyaları kullanılarak tanımlanır. GitHub Actions kullanmak; sürüm kontrolü ve sürüm yönetimine tek bir pencereden bakış ve birleşik bir geliştirici deneyimi sağlar.

Jenkins

Öte yanda Jenkins bulunur. Jenkins, özel boru hatları oluşturmayı ve sürdürmeyi kolaylaştıran, sıklıkla CI/CD için sektör standardı olarak görülen açık kaynak bir CI/CD çözümüdür. 

Jenkins; önceden oluşturulmuş eklentiler ve dağıtık mimari desteği gibi ek bir genişletilebilirlik katmanı sunar. Jenkins ile hayal edebiliyorsanız büyük olasılıkla inşa edebilirsiniz. Ancak bu özelleştirilebilirlikle birlikte, Jenkins’in kendisini belirli bir düzeyde yönetme sorumluluğu da gelir.

GitHub Actions’tan farklı olarak Jenkins, kullanıcıların kendilerinin barındırıp yönetmesi gereken bir programdır. Bunu yapmak için bir veri mühendisliği ekibinin Jenkins sunucusu, derleme ajanları, güvenlik erişimi, bir sürüm kontrol istemcisiyle entegrasyonlar ve bir Java çalışma zamanı gibi unsurları yapılandırıp yönetmesi gerekir. Bu da önemli bir ek yük anlamına gelir ve daha küçük ekipler için mantıklı olmayabilir.

Büyük bulut sağlayıcıları

Bulutta varlığı olan veri mühendisliği ekipleri için, bulut sağlayıcısının CI/CD çözümünü kullanmak çoğunlukla cazip olur. AWS, CodeBuild ve CodePipeline gibi araçlar sunar. Azure, DevOps ve Pipelines’ı destekler ve GCP de Cloud Build sağlar. 

Genellikle mevcut bir bulut ortamındaki uygulamaların tedarikten geçmesi gerekmez ve taahhütlü harcama gerektirmez. Bu araçlar, bulutta çalışmaya alışık veri mühendislerine sezgisel gelir ve başlaması kolaydır.

CI/CD En İyi Uygulamaları

Kendi CI/CD iş akışınızı yapılandırırken deneyimi sorunsuz kılmaya yardımcı olacak birkaç en iyi uygulama vardır. İlk olarak, sürüm kontrolü.

Sürüm kontrolü

Kodunuzu sürüm kontrolü ile izlemek, sağlam bir veri platformu oluşturmanın ilk adımıdır. Sürüm kontrol araçları (örneğin git) yalnızca kodun izlenmesine değil, kodun bir üretim sürümünün korunmasına da imkân tanır. Ardından sürüm kontrol istemcileri (GitHub’ı düşünün), belirli bir olay gerçekleştiğinde bir CI/CD boru hattını tetiklemek için kullanılabilir.

Örnek bir iş akışı: Yeni bir ETL iş akışı oluşturmakla görevlendirilmiş bir veri mühendisisiniz. Bunu yapmak için bir özellik dalı çıkarır ve değişikliklerinizi o dal üzerinde yaparsınız. Bu değişiklikleri üretime itmeye hazır olduğunuzda, özellik dalınızı main dalına birleştirirsiniz; bu da bir CI/CD boru hattını tetikler ve kodunuz üretime dağıtılır.

Görünürlük

Her zaman bir CI/CD boru hattına görünürlük eklemek mümkün olmayabilir, ancak mümkün olduğunda bunu yapmak önemlidir. Kullandığınız CI/CD aracına bağlı olarak, boru hattındaki her adımı tek bir görev olarak ayırabilirsiniz. Böylece bu görevlerden biri başarısız olursa, tespit etmek ve düzeltmeye başlamak kolay olur. CI/CD boru hatlarınızı çalıştırmak için GitHub Actions kullanıyorsanız, ortam yapılandırması, testler ve dağıtım adımlarınızı üç ayrı göreve bölmeyi deneyin.

Boru hattının gerçek yürütülmesine görünürlük kazandırmak kadar önemli olan bir diğer konu da belgelendirmedir. Bir boru hattının nasıl tetiklendiğine, kod tabanına karşı hangi testlerin çalıştırıldığına ve dağıtım hedefinin ne olduğuna dair notlar eklemek, sorun giderme sürecini hızlandırır

Sırlarınızı koruyun

Büyük olasılıkla, kod tabanınızı test ettikten sonra dağıtmak için bir tür parola veya anahtar kullanmanız gerekecek. Bu hassas değerleri asla CI/CD boru hattı yapılandırmasının içine kaydetmemek önemlidir (bunu yapmak güvenlik ekibinizi çıldırtmanın garantili yoludur). Bunun yerine, bu sırları değişkenler olarak saklamak ve referans vermek için CI/CD aracınızdan yararlanın. AWS CodeBuild gibi bir araçla hassas değerler, boru hattı tanımının dışında ortam değişkenleri kullanılarak saklanabilir ve ardından güvenli bir şekilde referans alınır.

Birden fazla ortam kullanın

Şimdiye kadar, bir CI/CD boru hattını kodu üretime itmek için kullanmaktan bahsettik. Ancak kurumsal düzeyde geliştirme süreçleri biraz farklıdır. Bir kod değişikliği yapıldığında doğrudan üretime itmek yerine, veri mühendisleri genellikle kodu özel bir test ortamına iter. 

Bu, çözümlerini manuel olarak test etmelerine ve bekledikleri sonuçları ürettiğinden emin olmalarına imkân tanır. Bunu yapmak için hem test hem de main dalı sürüm kontrolü ile korunur ve her biri, belirli bir olay gerçekleştiğinde biraz farklı bir CI/CD işi tetikler.

Sonuç

Evet, CI/CD karmaşık olabilir. Ve evet, başlangıçta yapılandırmak biraz zaman alabilir. Ancak CI/CD, kodun üretim ortamına kontrollü ve verimli bir şekilde yayımlanmasını sağlayan bir yatırımdır. Bir CI/CD boru hattı geliştirmek için baştan zaman harcamak, kod değişikliklerini elle test etmek ve kodu paketleyip üretime göndermek için harcanan zamanı azaltır.

CI/CD’yi anlamak ve uygulamak kariyerinizi hızla ilerletmenin en hızlı yollarından biridir; Python veya SQL ile bir proje inşa edebiliyorsanız, veri mühendisi olarak sağlam, temel beceriler geliştirmişsiniz demektir. Ancak her değişiklikte çalışan test vakalarıyla bir CI/CD iş akışı kurup üretime itişi otomatikleştirebiliyorsanız, kurumsal ölçekte çözümler inşa etmeye hazır olduğunuzu göstermiş olursunuz.

Bugün veri mühendisi olma yolculuğunuza DataCamp’in Python ile Veri Mühendisi kariyer yolu ve Veri Mühendisi Kariyer sertifikası ile başlayın.


Jake Roach's photo
Author
Jake Roach
LinkedIn

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.

Konular
Veri Mühendisliği

En İyi DataCamp Kursları

Program

Veri Mühendisi Python'da

40 sa
Verileri verimli bir şekilde almak, temizlemek, yönetmek, işlem hatlarını planlamak ve izlemek için talep edilen becerileri kazanın ve veri mühendisliği alanında fark yaratın.
Ayrıntıları GörüntüleKursa Başla

Ücretsiz Hesabınızı Oluşturun

Alıştırma and program your progress.

Google Ile Devam Edin
Devam ederek Kullanım Şartlarımızı, Gizlilik Politikamızı ve verilerinizin ABD’de saklandığını kabul etmiş olursunuz.
Devamını Gör
İlgili

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Devamını Gör