Skip to main content
Veri Mühendisliği

ETL Süreçleri ve Modern Veri Ambarı Mimarileri

March 14, 2026 11 min read 18 views Raw
ETL süreçleri ve veri mühendisliği için kod geliştirme ortamı
Table of Contents

ETL Nedir ve Neden Önemlidir?

ETL (Extract, Transform, Load), farklı kaynaklardan verilerin çıkarılması, dönüştürülmesi ve hedef sisteme yüklenmesi sürecini tanımlayan veri entegrasyon yaklaşımıdır. İşletmelerin veri odaklı kararlar alabilmesi için dağınık ve heterojen veri kaynaklarının tek bir tutarlı yapıda birleştirilmesi zorunludur ve ETL bu sürecin temel mekanizmasıdır.

Modern işletmelerde veriler onlarca farklı kaynakta yaşar: CRM sistemleri, ERP platformları, web analitik araçları, sosyal medya API'leri, IoT sensörleri ve daha fazlası. Bu verilerin bir araya getirilerek anlamlı raporlar ve analizler üretilebilmesi için güvenilir, tekrarlanabilir ve izlenebilir veri pipeline'larına ihtiyaç vardır.

Bu rehberde ETL süreçlerinin temellerinden modern veri ambarı mimarilerine, araç seçiminden veri kalitesi yönetimine kadar kapsamlı bir bakış sunacağız.

ETL Sürecinin Üç Aşaması

Extract (Çıkarma)

Çıkarma aşamasında veriler kaynak sistemlerden okunur. Bu kaynaklar ilişkisel veritabanları, düz dosyalar (CSV, JSON, XML), API'ler, mesaj kuyrukları, log dosyaları veya SaaS uygulamaları olabilir. Çıkarma stratejileri iki ana kategoriye ayrılır:

  • Tam çıkarma (Full Extract): Tüm verinin her seferinde çekilmesi. Basit ancak büyük veri kümelerinde verimsizdir
  • Artımlı çıkarma (Incremental Extract): Yalnızca son çıkarmadan bu yana değişen verilerin çekilmesi. CDC (Change Data Capture) veya zaman damgası tabanlı olabilir

CDC (Change Data Capture) yaklaşımı, veritabanı işlem günlüklerini (transaction logs) okuyarak değişiklikleri gerçek zamanlı olarak yakalar. Debezium, bu alanda en popüler açık kaynak araçtır ve Kafka ile entegre çalışarak düşük gecikmeli veri akışı sağlar.

Transform (Dönüştürme)

Dönüştürme aşamasında ham veriler, hedef sistemin şemasına ve iş kurallarına uygun hâle getirilir. Bu aşamada gerçekleştirilen tipik işlemler şunlardır:

  • Veri temizleme: Null değerlerin işlenmesi, tutarsız formatların düzeltilmesi, duplike kayıtların elenmesi
  • Veri zenginleştirme: Farklı kaynaklardan gelen verilerin birleştirilmesi, hesaplanmış alanların eklenmesi
  • Veri standardizasyonu: Tarih formatları, para birimleri, ölçü birimleri gibi değerlerin standart hâle getirilmesi
  • Aggregation: Detay verilerden özet metriklerin hesaplanması
  • Filtreleme: İş kurallarına göre gereksiz verilerin elenmesi
  • Surrogate key üretimi: Veri ambarı için yapay birincil anahtarların oluşturulması
  • SCD (Slowly Changing Dimension) yönetimi: Boyut tablolarındaki değişikliklerin tarihsel olarak takip edilmesi

Load (Yükleme)

Yükleme aşamasında dönüştürülmüş veriler hedef sisteme aktarılır. Yükleme stratejileri arasında tam yükleme (truncate and load), artımlı yükleme (append), merge (upsert) ve partition swap yer alır. Hedef sistemin kapasitesine ve iş gereksinimlerine göre uygun strateji seçilmelidir.

ETL ve ELT Karşılaştırması

Geleneksel ETL yaklaşımında dönüştürme işlemi hedef sisteme yüklemeden önce ayrı bir işleme katmanında gerçekleştirilir. ELT (Extract, Load, Transform) ise ham verilerin önce hedef sisteme yüklenmesini ve dönüştürmenin hedef sistemin işleme gücüyle yapılmasını öngörür.

ÖzellikETLELT
Dönüştürme yeriAyrı ETL sunucusuHedef veritabanı/veri ambarı
Ham veri erişimiDönüştürülmüş veri yüklenirHam veri korunur
İşleme hızıETL sunucu kapasitesine bağlıBulut DW'nin elastik kapasitesini kullanır
EsneklikŞema değişikliği pipeline güncelleme gerektirirHam veri korunduğu için yeniden dönüştürme kolay
MaliyetETL altyapı maliyetiBulut işlem maliyeti (kullandıkça öde)
Uygun senaryoŞirket içi sistemler, hassas verilerBulut tabanlı modern veri yığını
AraçlarInformatica, Talend, SSISdbt, Snowflake, BigQuery

Modern bulut tabanlı veri ambarlarının (Snowflake, BigQuery, Redshift) devasa işleme kapasitesi, ELT yaklaşımını giderek daha popüler hâle getirmiştir. Bu sistemlerde dönüştürme SQL ile doğrudan veri ambarında gerçekleştirilir ve ayrı bir ETL sunucusuna ihtiyaç kalmaz.

Veri Ambarı Kavramları

Veri ambarı, organizasyonun farklı kaynaklardan toplanan verilerini tarihsel perspektifle analiz etmek üzere tasarlanmış merkezi bir veri deposudur. Ralph Kimball ve Bill Inmon, veri ambarı tasarımının iki temel yaklaşımını ortaya koymuştur.

Star Schema (Yıldız Şeması)

Star schema, veri ambarı tasarımının en yaygın kullanılan modelidir. Merkezde bir fact (olgu) tablosu ve çevresinde dimension (boyut) tabloları bulunur. Fact tablosu ölçülebilir metrikleri (satış tutarı, miktar gibi) içerirken, dimension tabloları bu metriklerin bağlamını sağlayan tanımlayıcı bilgileri (müşteri, ürün, zaman, lokasyon gibi) barındırır.

-- Star schema örneği
-- Fact tablosu
CREATE TABLE fact_satis (
    satis_key BIGINT IDENTITY PRIMARY KEY,
    tarih_key INT REFERENCES dim_tarih(tarih_key),
    musteri_key INT REFERENCES dim_musteri(musteri_key),
    urun_key INT REFERENCES dim_urun(urun_key),
    magaza_key INT REFERENCES dim_magaza(magaza_key),
    miktar INT,
    birim_fiyat DECIMAL(10,2),
    toplam_tutar DECIMAL(12,2),
    indirim_tutar DECIMAL(10,2)
);

-- Dimension tablosu
CREATE TABLE dim_musteri (
    musteri_key INT IDENTITY PRIMARY KEY,
    musteri_id VARCHAR(20),
    ad VARCHAR(100),
    soyad VARCHAR(100),
    sehir VARCHAR(50),
    bolge VARCHAR(50),
    segment VARCHAR(30),
    gecerlilik_baslangic DATE,
    gecerlilik_bitis DATE,
    aktif_mi BIT DEFAULT 1
);

Snowflake Schema (Kar Tanesi Şeması)

Snowflake schema, star schema'nın normalize edilmiş versiyonudur. Dimension tablolarının alt boyutlara bölünmesiyle oluşur. Örneğin, müşteri boyutu ayrıca şehir boyutuna, şehir boyutu da ülke boyutuna referans verebilir. Depolama alanından tasarruf sağlar ancak sorguların daha fazla JOIN gerektirmesi nedeniyle performans maliyeti olabilir.

Slowly Changing Dimensions (SCD)

Boyut tablolarındaki değişikliklerin yönetimi, veri ambarı tasarımının en önemli konularından biridir. SCD tipleri şunlardır:

  • SCD Tip 1: Eski değerin üzerine yazılır. Tarihsel veri korunmaz
  • SCD Tip 2: Her değişiklik için yeni bir satır eklenir. Geçerlilik tarihleri ve aktiflik bayrağı ile tarihsel değişimler izlenir. En yaygın kullanılan tiptir
  • SCD Tip 3: Ek sütunlar ile yalnızca bir önceki değer saklanır. Sınırlı tarihsel izleme sağlar
  • SCD Tip 4: Tarihsel veriler ayrı bir tabloda tutulur. Güncel ve tarihsel veriler farklı tablolarda yaşar
  • SCD Tip 6: Tip 1, 2 ve 3'ün kombinasyonu. Hem güncel hem önceki değeri hem de tarihsel kaydı tutar

Modern Veri Yığını (Modern Data Stack)

Modern veri yığını, bulut tabanlı, modüler ve genellikle SaaS olarak sunulan araçlardan oluşan veri altyapısı yaklaşımıdır. Geleneksel monolitik ETL platformlarının yerini alan bu yaklaşım, her katman için en iyi aracı seçme esnekliği sunar.

Apache Airflow

Apache Airflow, Airbnb tarafından geliştirilen ve Apache Software Foundation bünyesinde sürdürülen açık kaynak iş akışı orkestrasyon platformudur. DAG (Directed Acyclic Graph) yapısıyla veri pipeline'larını tanımlar, zamanlar ve izler.

# Airflow DAG örneği
from airflow import DAG
from airflow.operators.python import PythonOperator
from airflow.providers.postgres.operators.postgres import PostgresOperator
from datetime import datetime, timedelta

default_args = {
    'owner': 'veri_muhendisi',
    'retries': 3,
    'retry_delay': timedelta(minutes=5),
    'email_on_failure': True,
}

with DAG(
    'gunluk_satis_etl',
    default_args=default_args,
    schedule_interval='0 6 * * *',  # Her gün saat 06:00
    start_date=datetime(2024, 1, 1),
    catchup=False,
) as dag:

    extract = PythonOperator(
        task_id='kaynak_verilerini_cek',
        python_callable=extract_sales_data,
    )

    transform = PythonOperator(
        task_id='verileri_donustur',
        python_callable=transform_sales_data,
    )

    load = PostgresOperator(
        task_id='veri_ambaarina_yukle',
        postgres_conn_id='dwh_connection',
        sql='sql/load_fact_satis.sql',
    )

    quality_check = PythonOperator(
        task_id='veri_kalitesi_kontrolu',
        python_callable=run_quality_checks,
    )

    extract >> transform >> load >> quality_check

dbt (Data Build Tool)

dbt, ELT yaklaşımının dönüştürme aşamasını SQL ile yönetmeyi sağlayan güçlü bir araçtır. Veri mühendislerinin yazılım mühendisliği en iyi uygulamalarını (versiyon kontrolü, test, dokümantasyon, modülerlik) veri dönüştürme süreçlerine uygulamasını mümkün kılar.

-- dbt modeli örneği: models/marts/fct_siparis_ozet.sql
{{ config(
    materialized='incremental',
    unique_key='siparis_id',
    partition_by={
        "field": "siparis_tarihi",
        "data_type": "date",
        "granularity": "month"
    }
) }}

WITH siparisler AS (
    SELECT * FROM {{ ref('stg_siparisler') }}
    {% if is_incremental() %}
    WHERE siparis_tarihi > (SELECT MAX(siparis_tarihi) FROM {{ this }})
    {% endif %}
),

musteri_bilgi AS (
    SELECT * FROM {{ ref('dim_musteri') }}
),

sonuc AS (
    SELECT 
        s.siparis_id,
        s.siparis_tarihi,
        m.musteri_segmenti,
        m.bolge,
        s.toplam_tutar,
        s.urun_sayisi,
        s.kargo_maliyeti
    FROM siparisler s
    LEFT JOIN musteri_bilgi m ON s.musteri_id = m.musteri_id
)

SELECT * FROM sonuc

Fivetran ve Airbyte

Fivetran, veri çıkarma ve yükleme (EL) aşamasını otomatikleştiren yönetilen (managed) bir servistir. 300'den fazla veri kaynağı konektörü ile kodlamaya gerek kalmadan veri entegrasyonu sağlar. Airbyte ise Fivetran'ın açık kaynak alternatifidir ve kendi altyapınızda barındırılabilir. Her ikisi de artımlı senkronizasyon, şema değişikliği yönetimi ve hata toleransı sunar.

Data Lakehouse Mimarisi

Data Lakehouse, veri gölünün esnekliği ile veri ambarının yönetim yeteneklerini birleştiren yeni nesil veri mimarisidir. Hem yapılandırılmış hem de yapılandırılmamış verileri tek bir platformda işleyebilir ve hem BI hem de makine öğrenmesi iş yüklerini destekler.

Açık Tablo Formatları

Data Lakehouse mimarisinin temelini açık tablo formatları oluşturur. Bu formatlar, nesne depolama (S3, GCS, ADLS) üzerinde veri ambarı özelliklerini mümkün kılar:

  • Delta Lake: Databricks tarafından geliştirilen, ACID işlemleri, zaman yolculuğu (time travel), şema evrimi ve optimistik eş zamanlılık kontrolü sunan açık kaynak tablo formatı
  • Apache Iceberg: Netflix tarafından geliştirilen, büyük ölçekli analitik tablolar için tasarlanmış format. Partition evrimi, gizli partitioning ve verimli metadata yönetimi sunar
  • Apache Hudi: Uber tarafından geliştirilen, özellikle upsert ve artımlı işleme senaryolarında güçlü olan format. Copy-on-Write ve Merge-on-Read olmak üzere iki tablo türünü destekler

Lakehouse Mimarisinin Katmanları

Tipik bir Lakehouse mimarisi üç katmandan oluşur:

  1. Bronze Katmanı (Raw): Kaynak sistemlerden gelen ham veriler olduğu gibi depolanır. Veri sadakatini korur ve sorun durumunda kaynağa dönmeyi mümkün kılar
  2. Silver Katmanı (Cleansed): Ham veriler temizlenir, doğrulanır ve standartlaştırılır. İş kuralları uygulanır, duplikeler elenir ve veri kalitesi kontrolleri yapılır
  3. Gold Katmanı (Business): İş odaklı agregasyonlar ve metrikler oluşturulur. BI araçları ve son kullanıcılar bu katmana erişir

Medallion mimarisi olarak da bilinen bu üç katmanlı yapı, veri kalitesinin aşamalı olarak artırılmasını ve her katmanın farklı tüketici ihtiyaçlarına hizmet etmesini sağlar.

Veri Kalitesi ve Test

Veri pipeline'larında kalite kontrolü, güvenilir analiz ve raporlamanın ön koşuludur. Hatalı veriler yanlış iş kararlarına, müşteri güven kaybına ve düzenleyici yaptırımlara yol açabilir.

Veri Kalitesi Kontrol Türleri

  • Şema doğrulama: Veri tiplerinin, sütun adlarının ve yapının beklenen şemaya uygunluğu
  • Bütünlük kontrolleri: Referans bütünlüğü, zorunlu alanların doluluğu
  • İş kuralı doğrulama: Değer aralıkları, mantıksal tutarlılık, koşullu kurallar
  • İstatistiksel kontroller: Satır sayısı değişimleri, dağılım anomalileri, ortalama değer sapmaları
  • Tazelik kontrolleri: Verinin beklenen sürede güncellenip güncellenmediği

Veri Kalitesi Araçları

Great Expectations, dbt tests, Soda ve Monte Carlo gibi araçlar veri kalitesi süreçlerini otomatikleştirmeye yardımcı olur. dbt'nin yerleşik test çerçevesi, dönüştürme sürecine entegre kalite kontrolleri tanımlamayı kolaylaştırır:

# dbt test tanımı: models/schema.yml
version: 2

models:
  - name: fct_siparis_ozet
    description: "Günlük sipariş özet tablosu"
    columns:
      - name: siparis_id
        description: "Benzersiz sipariş kimliği"
        tests:
          - unique
          - not_null
      - name: toplam_tutar
        description: "Sipariş toplam tutarı"
        tests:
          - not_null
          - dbt_utils.accepted_range:
              min_value: 0
              max_value: 1000000
      - name: musteri_segmenti
        tests:
          - accepted_values:
              values: ['Bireysel', 'Kurumsal', 'KOBİ']

Orkestrasyon ve İzleme

Veri pipeline'larının güvenilir çalışması için etkin orkestrasyon ve izleme mekanizmaları gereklidir. Pipeline hatalarının hızlı tespiti ve çözümü, veri tüketicilerinin güvenini korumak açısından kritiktir.

Orkestrasyon Araçları Karşılaştırması

AraçAvantajlarDezavantajlar
Apache AirflowGeniş topluluk, zengin operatör ekosistemi, olgun projeDik öğrenme eğrisi, karmaşık kurulum
PrefectModern Python API, kolay kurulum, hibrit yürütmeDaha küçük topluluk, bazı kurumsal özellikler ücretli
DagsterVeri farkındalıklı orkestrasyon, güçlü test desteğiNispeten yeni, daha az konektör
MageModern UI, notebook benzeri geliştirme deneyimiErken aşama, sınırlı kurumsal özellikler

İzleme ve Alerting

Pipeline izleme stratejisi aşağıdaki metrikleri kapsamalıdır:

  • Pipeline çalışma durumu: Başarılı, başarısız veya çalışmakta olan pipeline'ların anlık durumu
  • Çalışma süresi: Her pipeline adımının ve toplam sürecin ne kadar sürdüğü, trend analizi
  • Veri hacmi: İşlenen kayıt sayısı ve veri boyutu, beklenen aralıktan sapma
  • Veri tazeliği: Hedef tabloların en son ne zaman güncellendiği
  • Kaynak sistem sağlığı: Bağlantı durumu, yanıt süreleri, hata oranları

Gerçek Zamanlı ve Toplu İşleme

Veri pipeline'ları, iş gereksinimlerine göre toplu (batch) veya gerçek zamanlı (real-time/streaming) olarak tasarlanabilir. Her yaklaşımın kendine özgü avantajları ve kullanım senaryoları vardır.

Toplu İşleme (Batch Processing)

Toplu işleme, verilerin belirli aralıklarla (saatlik, günlük, haftalık) toplu olarak işlenmesidir. Raporlama, tarihsel analiz ve büyük hacimli dönüştürme işlemleri için uygundur. Spark, dbt ve geleneksel ETL araçları toplu işleme için optimize edilmiştir. Kaynak sistemler üzerinde daha az yük oluşturur ve hata yönetimi daha kolaydır.

Gerçek Zamanlı İşleme (Stream Processing)

Gerçek zamanlı işleme, verilerin oluştuğu anda veya çok kısa süre içinde işlenmesini sağlar. Dolandırıcılık tespiti, anlık dashboard güncelleme, olay bazlı tetiklemeler ve operasyonel izleme gibi senaryolar için zorunludur. Kafka, Flink, Spark Structured Streaming ve Amazon Kinesis bu alanın öncü teknolojileridir.

Hibrit Yaklaşım

Birçok organizasyon, hem toplu hem de gerçek zamanlı pipeline'ları bir arada kullanır. Operasyonel metrikler gerçek zamanlı olarak işlenirken, derin analizler ve raporlama toplu pipeline'lar üzerinden gerçekleştirilir. Bu hibrit yaklaşım, maliyet ve karmaşıklık ile gecikme gereksinimleri arasında denge kurar.

Veri Yönetişimi ve Uyumluluk

Veri yönetişimi, veri varlıklarının organizasyon genelinde etkin, güvenli ve uyumlu şekilde yönetilmesini sağlayan çerçevedir. ETL süreçleri bağlamında veri yönetişimi, soy ağacı (lineage) izleme, metadata yönetimi, erişim kontrolü ve düzenleyici uyumluluk konularını kapsar.

Veri Soy Ağacı (Data Lineage)

Veri soy ağacı, verinin kaynaktan hedefe kadar izlediği yolu görselleştirir. Bir rapordaki hatalı bir değerin kökenini bulmak, düzenleyici denetimlere yanıt vermek ve etki analizleri yapmak için kritik öneme sahiptir. dbt, Apache Atlas ve DataHub gibi araçlar otomatik lineage izleme sunar.

Metadata Yönetimi

Veri kataloğu, organizasyondaki tüm veri varlıklarının keşfedilebilir ve anlaşılabilir olmasını sağlar. Her tablonun açıklaması, sütun tanımları, sahiplik bilgileri, güncelleme sıklığı ve kalite metrikleri metadata olarak saklanır. DataHub, Amundsen ve Atlan popüler veri kataloğu çözümleridir.

Erişim Kontrolü ve Güvenlik

  • Rol tabanlı erişim kontrolü (RBAC): Kullanıcıların rollerine göre veri erişim yetkilerinin tanımlanması
  • Sütun düzeyinde güvenlik: Hassas sütunlara (TC kimlik no, kredi kartı gibi) erişimin kısıtlanması
  • Satır düzeyinde güvenlik: Kullanıcıların yalnızca kendi bölge veya departmanlarına ait verileri görmesi
  • Veri maskeleme: Hassas verilerin test ve geliştirme ortamlarında maskelenmesi
  • Şifreleme: Hem aktarım sırasında hem de depolamada veri şifreleme

ETL Pipeline Tasarım İlkeleri

Güvenilir ve sürdürülebilir ETL pipeline'ları tasarlamak için aşağıdaki ilkelere uyulması önerilir:

  1. İdempotent olun: Aynı pipeline'ı aynı parametrelerle birden fazla kez çalıştırmak aynı sonucu üretmelidir
  2. Atomik olun: Ya tüm işlemler başarılı olmalı ya da hiçbiri uygulanmamalıdır (all-or-nothing)
  3. Artımlı düşünün: Mümkün olduğunca artımlı işleme yaparak kaynak yükünü ve işlem süresini azaltın
  4. Hata toleranslı tasarlayın: Geçici hatalar için otomatik yeniden deneme, kalıcı hatalar için uyarı mekanizmaları kurun
  5. İzlenebilirlik sağlayın: Her adımda loglama yapın, veri soy ağacını otomatik olarak oluşturun
  6. Test yazın: Veri kalitesi testleri, birim testleri ve entegrasyon testleri pipeline'ın parçası olmalıdır
  7. Dokümante edin: Her pipeline'ın amacı, bağımlılıkları, çalışma zamanı ve sahipliği belgelenmelidir

Sonuç

ETL süreçleri ve veri ambarı mimarileri, veri odaklı organizasyonların temel altyapısını oluşturur. Geleneksel ETL yaklaşımından modern ELT ve Data Lakehouse mimarilerine doğru yaşanan evrim, bulut teknolojilerinin sunduğu esneklik ve ölçeklenebilirlik sayesinde hız kazanmıştır.

Başarılı bir veri altyapısı kurmak için doğru araç seçiminin ötesinde, veri kalitesi, yönetişim ve izleme süreçlerinin de eksiksiz oluşturulması gerekir. Airflow ile orkestrasyon, dbt ile dönüştürme ve Great Expectations ile kalite kontrolü bir araya getiren modern veri yığını, veri mühendisliği ekiplerinin verimini katbekat artırır. Her projenin kendi gereksinimlerini değerlendirerek, bu araç ve yaklaşımlardan en uygun olanları seçmek en doğru stratejidir.

Share this post