<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Şule Akçay on Medium]]></title>
        <description><![CDATA[Stories by Şule Akçay on Medium]]></description>
        <link>https://medium.com/@suleakcaycs?source=rss-343a5862e17e------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*z3Z2HFqIdFar7jfrvGQOnA.jpeg</url>
            <title>Stories by Şule Akçay on Medium</title>
            <link>https://medium.com/@suleakcaycs?source=rss-343a5862e17e------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 07:10:29 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@suleakcaycs/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Apache DataFusion Comet: Spark’ı Kodunuza Dokunmadan Hızlandırmak]]></title>
            <link>https://suleakcaycs.medium.com/apache-datafusion-comet-spark%C4%B1-kodunuza-dokunmadan-h%C4%B1zland%C4%B1rmak-7febffba6e85?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/7febffba6e85</guid>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-fusion]]></category>
            <category><![CDATA[apache-spark]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Tue, 14 Jul 2026 17:20:01 GMT</pubDate>
            <atom:updated>2026-07-14T17:20:01.836Z</atom:updated>
            <content:encoded><![CDATA[<p><em>Spark cluster’ınız aynı işi yapıyor ama fatura büyüyor mu? Sorun muhtemelen dağıtık mimaride değil, motorun kendisinde.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/840/0*pmF1aYLuPsS-zWvF.png" /></figure><h3>Giriş</h3><p>Apache Spark, on yılı aşkın süredir büyük veri işlemenin fiili standardı. Ama Spark’ın çekirdek çalışma zamanı hâlâ büyük ölçüde JVM üzerinde, satır bazlı (row-based) bir yürütme modeline dayanıyor — ve bu, modern donanımın sunduğu vektörel işlem gücünün önemli bir kısmının masada kalması anlamına geliyor.</p><p>Apache DataFusion Comet, tam olarak bu boşluğu dolduruyor: Spark’ın SQL/DataFrame API’sine hiç dokunmadan, motorun altını Rust ile yazılmış native bir çalışma zamanıyla değiştiriyor.</p><blockquote><strong><em>Özetle:</em></strong><em> Comet, Apache Software Foundation çatısı altında geliştirilen, Apache DataFusion sorgu motorunu kullanan, Spark için açık kaynaklı bir hızlandırıcıdır. TPC-DS 1TB testlerinde ~2x hızlanma ve buna bağlı olarak yaklaşık %50 maliyet tasarrufu rapor edilmiştir.</em></blockquote><h3>Comet Aslında Ne Yapıyor?</h3><p>Comet’in temel fikri basit ama etkisi büyük: Spark sorgu planındaki operatörleri ve ifadeleri (expression’ları), mümkün olduğunca <strong>Apache Arrow columnar formatında</strong>, uçtan uca tutmak. Scan, filter, join, aggregate, shuffle, broadcast bunların hepsi Arrow formatında kalıyor ve JVM’in row-based dünyasına geri dönüşler minimize ediliyor.</p><p>Bu native yürütme iki şekilde gerçekleşiyor:</p><ul><li><strong>Rust kodu</strong> olarak (Apache DataFusion sorgu motoru üzerinden) ana hızlanmanın geldiği yer burası</li><li><strong>JVM kodu</strong> olarak, ama doğrudan Arrow batch’leri üzerinde çalışacak şekilde optimize edilmiş</li></ul><p>Sonuç: Spark’ın kendi API’si, SQL semantiği ve davranışı korunurken, altyapı katmanı çok daha verimli hale geliyor. Kullanıcı tarafında <strong>hiçbir kod değişikliği gerekmiyor</strong> bu, Comet’in en çok vurgulanan özelliklerinden biri.</p><h3>Neden Sadece “Spark’ı Hızlandırmak” Değil de Bu Yaklaşım?</h3><p>Spark’ın gücü dağıtık işlemede yatıyor veriyi binlerce node’a paralel dağıtabiliyor. Ama tek bir executor içindeki ham hesaplama verimliliği, JVM’in doğası gereği sınırlı kalıyor:</p><ul><li>Nesne oluşturma ve garbage collection duraklamaları</li><li>Boxing/unboxing maliyetleri (örneğin int → Integer)</li><li>Satır bazlı işlemenin CPU cache’ini verimsiz kullanması</li></ul><p>Comet, bu sorunları native Rust yürütmesiyle çözüyor. Rust’ın garbage collector’ı yok, bu da öngörülemez duraklamaları ortadan kaldırıyor. Aynı zamanda Rust’ın bellek güvenliği garantileri (use-after-free, buffer overflow gibi hataların derleme zamanında engellenmesi), her executor içinde çalışan ve güvenilmeyen veri işleyen bir bileşen için ayrıca önemli bu güvenlik, ek bir çalışma zamanı maliyeti getirmeden sağlanıyor.</p><h3>Comet’in Kapsadığı Ana Alanlar</h3><p><strong>Parquet Taramaları</strong> Spark’ın sorgu planlayıcısıyla entegre çalışan native bir Parquet okuyucu, dosya okuma ve decode aşamasını hızlandırıyor.</p><p><strong>Apache Iceberg Desteği</strong> Comet, Spark üzerinden Iceberg tabloları okunurken Parquet taramalarını hızlandırıyor. Daha yakın zamanda REST Catalog desteği eklendi; bu sayede Apache Polaris gibi katalog servisleriyle native Iceberg entegrasyonu mümkün hale geldi.</p><p><strong>Native Shuffle</strong> Shuffle, Spark’ta genellikle en maliyetli adımlardan biridir. Comet, bunu Arrow-IPC formatında native bir Rust implementasyonuyla gerçekleştiriyor; hash ve range partitioning destekleniyor, desteklenmeyen partition key tipleri için JVM fallback’i devreye giriyor.</p><p><strong>Scala/Java UDF Desteği</strong> Comet, mevcut Scala/Java skaler UDF’lerin Spark’ın whole-stage codegen mekanizması üzerinden Comet pipeline’ı içinde kalmasına izin veriyor — yani özel fonksiyonlarınız olsa bile native hızlanmadan tamamen kopmuyorsunuz.</p><p><strong>Otomatik Fallback</strong> Comet’in desteklemediği bir operatör veya ifadeyle karşılaşıldığında, sistem otomatik olarak o kısmı normal Spark motoruna devrediyor. spark.comet.explainFallback.enabled=true konfigürasyonuyla hangi kısımların fallback yaptığı loglanabiliyor bu, gerçek faydayı ölçmek için önemli bir araç.</p><h3>Rakamlar Ne Diyor?</h3><p>Proje sayfasında paylaşılan TPC-H (100GB, tek executor, 8 çekirdek) sonuçlarına göre, Comet ile toplam çalışma süresi 687 saniyeden 302 saniyeye düşüyor — yaklaşık 2.2x hızlanma. TPC-DS @ SF 1000 (1TB) ölçeğinde ise ~2x hızlanma ve buna bağlı ~%50 maliyet tasarrufu rapor ediliyor. Bu tasarruf iki şekilde değerlendirilebilir: aynı cluster’da işi yarı sürede bitirmek ya da aynı süreyi yarı kaynakla yakalamak.</p><p>Önemli bir not: Bu rakamlar belirli benchmark koşullarına ait ve her iş yükünde aynı oranda hızlanma beklenmemeli. Comet’in kendi belgelerinde de vurgulandığı gibi, gerçek kazanç sorgunun ne kadarının native olarak çalıştığına bağlı.</p><h3>Comet vs. Gluten: Kısa Bir Karşılaştırma</h3><p>Spark hızlandırma alanında bilinen bir başka proje de Gluten + Velox kombinasyonu. İkisi arasındaki temel fark, kullanılan native motor ve dil seçimi:</p><p><strong>CometGluten + Velox</strong>Native motorApache DataFusion (Rust)Velox (C++, Meta öncülüğünde)GovernanceApache Software FoundationÇoklu kuruluş, ağırlıklı MetaKatkı süreciStandart ASF süreciMeta CLA imzası gerekiyorANSI mode desteğiNative olarak destekleniyorVelox backend’inde desteklenmiyor, ANSI açıkken sorgu Spark’a düşüyorBellek güvenliğiRust (derleme zamanı garantisi)C++ (çalışma zamanı disiplinine bağlı)</p><p>Rust’ta UDF yazmak isteyenler için Comet, C++’ta yazmak isteyenler için Gluten daha uygun bir tercih olabilir. Spark 4.0 ve ANSI mode kullanan ekipler için bu fark özellikle önemli, çünkü ANSI açıkken Gluten/Velox tarafında iş yükünün önemli bir kısmı native yürütmeden düşebiliyor.</p><h3>Kurulum ve Uyumluluk</h3><p>Comet, Spark 3.4, 3.5, 4.0 ve 4.1&#39;i destekliyor; Spark 4.2 için deneysel destek mevcut. Jar dosyaları Linux için amd64 ve arm64 mimarilerinde Maven Central üzerinden dağıtılıyor; macOS için şu an kaynaktan derleme gerekiyor.</p><p>Kurulum temelde üç adımdan oluşuyor:</p><ol><li>Spark/Scala sürümünüze uygun Comet jar’ını classpath’e eklemek</li><li>spark.plugins=org.apache.spark.CometPlugin konfigürasyonunu etkinleştirmek</li><li>Shuffle hızlanması isteniyorsa spark.shuffle.manager ayarını Comet&#39;in shuffle yöneticisine yönlendirmek</li></ol><p>Bulut sağlayıcılarının kendi Spark forklarında (örneğin yönetilen servisler) Comet’in tam uyumlu çalışmayabileceği belgelerde ayrıca belirtiliyor — bu nedenle production’a almadan önce kendi ortamınızda doğrulama yapmak gerekiyor.</p><h3>Pratikte Nelere Dikkat Etmeli?</h3><ul><li><strong>Kademeli geçiş yapın.</strong> Tüm pipeline’ı bir seferde Comet’e geçirmek yerine, önce tek bir job veya tabloyla test edin.</li><li><strong>Fallback loglarını izleyin.</strong> spark.comet.explainFallback.enabled=true ile hangi operatörlerin native çalışıp hangilerinin Spark&#39;a düştüğünü görün.</li><li><strong>Native Parquet yazma özelliğine dikkat.</strong> Bu özellik hâlâ deneysel kabul ediliyor ve production kullanımı için önerilmiyor.</li><li><strong>Delta Lake / Iceberg gibi tablo formatlarıyla kombinasyonları ayrıca test edin</strong>, çünkü cast davranışı ve decimal/timestamp işleme gibi ince farklar sonuçları etkileyebilir.</li></ul><h3>Sonuç</h3><p>Apache DataFusion Comet, “Spark zaten hızlı, buna neden ihtiyaç var” sorusuna net bir cevap veriyor: dağıtık işlemedeki hız ile tek node’daki yürütme verimliliği aynı şey değil. Comet, Spark’ın API yüzeyine dokunmadan, motorun altını Rust/Arrow tabanlı native bir çalışma zamanıyla değiştirerek bu ikinci kısmı iyileştiriyor.</p><p>Apache Software Foundation çatısı altında, aktif geliştirme sürecine sahip ve dröp-in (kod değişikliği gerektirmeyen) bir çözüm arayan Spark kullanıcıları için değerlendirilmeye değer bir proje. Ancak her hızlandırma aracında olduğu gibi, gerçek fayda iş yükünüzün doğasına bağlı kendi pipeline’ınızda ölçüm yapmadan genel rakamlara güvenmemek en sağlıklı yaklaşım.</p><p><em>Kaynak:</em></p><ul><li><a href="https://github.com/apache/datafusion-comet">GitHub - apache/datafusion-comet: Apache DataFusion Comet Spark Accelerator</a></li><li><a href="https://datafusion.apache.org/comet/">Apache DataFusion Comet - Apache DataFusion Comet documentation</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7febffba6e85" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Big Data Dünyasında Docker: Production Hatalarından Kurtulmanın 6 Altın Kuralı]]></title>
            <link>https://suleakcaycs.medium.com/big-data-d%C3%BCnyas%C4%B1nda-docker-production-hatalar%C4%B1ndan-kurtulman%C4%B1n-6-alt%C4%B1n-kural%C4%B1-bf39b4ae1cea?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/bf39b4ae1cea</guid>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[big-data]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Fri, 20 Feb 2026 20:47:02 GMT</pubDate>
            <atom:updated>2026-02-20T20:47:02.259Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VUoXrpr5oUnvl8qmptZWQg.png" /><figcaption>Bu görsel üretken yapa zeka ile üreitlmiştir</figcaption></figure><p>Bir Big Data mühendisi için “Benim makinemde çalışıyordu” cümlesi, karmaşık bir cluster kurulumunun ardından gelen en büyük operasyonel hüsrandır. Spark job’larının aniden çökmesi, Kafka’nın bağlantı hataları vermesi veya Airflow container’larının sonsuz bir “restart” döngüsüne girmesi, çoğu zaman Docker’ın temel prensiplerindeki küçük ama kritik eksiklerden kaynaklanır.</p><p>Günümüzde Docker, sadece bir paketleme aracı değil; Spark, Kafka ve Airflow gibi araçların verimli çalışmasını sağlayan <strong>modern veri mühendisliğinin işletim sistemi</strong> haline gelmiştir. Bir Senior Big Data Mimarı gözüyle, production ortamlarında “Namespace isolation” ve “Immutable layers” gibi kavramları birer kolaylık değil, performans kaldıracı olarak kullanmanızı sağlayacak 6 altın kuralı inceliyoruz.</p><h3>1. Katman (Layer) Optimizasyonu: 5 Dakikalık Bekleyişi 10 Saniyeye İndirmek</h3><p>Docker image’ları, Dockerfile içindeki her bir komutun oluşturduğu &quot;read-only&quot; katmanlardan (layer) meydana gelir. Docker her katmanı bir SHA256 hash değeri ile takip eder. Değişmeyen katmanlar cache&#39;den okunur, ancak bir katman değiştiğinde altındaki tüm katmanlar yeniden build edilir.</p><p>Big Data pipeline’larında build sürelerini dramatik şekilde düşürmek için en sık değişen katmanı (uygulama kodu) en sona bırakmak <strong>non-negotiable</strong> (tartışmaya kapalı) bir kuraldır:</p><ul><li><strong>Yanlış Sıralama:</strong> Uygulama kodunu (COPY src/) bağımlılıklardan (pip install) önce kopyalarsanız, koddaki tek bir karakter değişimi bile tüm kütüphanelerin tekrar indirilmesine neden olur.</li><li><strong>Doğru Strateji:</strong></li></ul><ol><li>Base Image (Örn: python:3.11-slim-bookworm)</li><li>Sistem bağımlılıkları (apt-get install)</li><li>Kütüphane listesi (COPY requirements.txt)</li><li>Bağımlılık kurulumu: Burada mutlaka RUN pip install --no-cache-dir -r requirements.txt kullanılmalıdır. --no-cache-dir kullanılmaması, image boyutunu gereksiz yere şişirir.</li><li><strong>Uygulama kodu (</strong><strong>COPY src/)</strong></li></ol><p><strong>Sonuç:</strong> Doğru sıralama ile kodu her güncellediğinizde 5 dakika beklemek yerine, build işlemini 10 saniyenin altında tamamlayabilirsiniz. Layer verimliliğinizi analiz etmek için <strong>Dive</strong> gibi araçları kullanmanızı öneririm.</p><h3>2. “Localhost” Tuzağı: Dual Listener ile Kafka Erişimi</h3><p>Veri mühendislerinin en sık karşılaştığı networking hatası, container içindeki bir servise localhost üzerinden erişmeye çalışmaktır. Her container kendi izole network namespace&#39;ine sahiptir. Kafka gibi dağıtık sistemlerde KAFKA_ADVERTISED_LISTENERS konfigürasyonunu sadece localhost olarak ayarlamak, dışarıdaki bir Spark container&#39;ının Kafka&#39;yı bulamamasına neden olur.</p><p>Production seviyesinde bir çözüm için hem iç (container-to-container) hem dış (host-to-container) erişimi ayıran <strong>Dual Listener</strong> kurulumu şarttır:</p><pre># Kafka — Senior Seviye Listener Konfigürasyonu<br>environment:<br>  KAFKA_LISTENERS: INTERNAL://0.0.0.0:9092,EXTERNAL://0.0.0.0:9093<br>  KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:9092,EXTERNAL://localhost:9093<br>  KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT<br>  KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL</pre><p>Bu kurulumda, Spark container’ı Kafka’ya kafka:9092 (Docker DNS) üzerinden ulaşırken, siz host makinenizden localhost:9093 ile bağlanabilirsiniz.</p><h3>3. OOMKiller ile Mücadele: %75 Kuralı ve Swap Felaketi</h3><p>JVM tabanlı servisler (Spark, Kafka, Flink) bellek yönetimi konusunda agresiftir. Eğer Docker memory limiti ile JVM Heap (-Xmx) ayarınız arasında boşluk bırakmazsanız, işletim sistemi container&#39;ı aniden sonlandırır. Bu durum loglarda <strong>Exit Code 137</strong> (OOMKiller) olarak görülür.</p><p>OOMKiller sadece Heap yüzünden değil; <strong>Metaspace, Thread Stack ve Off-heap</strong> (özellikle Spark’ta yoğun kullanılır) operasyonlarının toplamının container limitini aşmasıyla tetiklenir.</p><p><strong><em>Kritik Kural:</em></strong><em> JVM Xmx = container_memory * 0.75</em></p><p>Örneğin, 4GB limitli bir container’da JVM Heap ayarını (-Xmx) en fazla 3GB yapmalısınız. Ayrıca Spark gibi performans odaklı araçlarda --memory-swap değerini memory limitine eşitleyerek swap&#39;ı tamamen kapatın. Spark swap&#39;a düştüğünde GC (Garbage Collection) duraksama süreleri dakikalara çıkabilir, bu da veri pipeline&#39;ınız için tam bir performansa felaketidir.</p><h3>4. Multi-Stage Build: Görüntü Boyutunda %67 Tasarruf</h3><p>Production image’larınızda Maven, GCC veya build script’lerinin işi yoktur. <strong>Multi-Stage Build</strong> tekniği ile build araçlarını sadece ilk aşamada (builder) kullanıp, final image&#39;a (runtime) sadece gereken binary&#39;leri taşımalısınız.</p><p><strong>Multi-Stage Build Kazanımı:</strong></p><ul><li><strong>Tek Aşamalı Build (Maven + JDK + Spark):</strong> ~850MB</li><li><strong>Multi-Stage Build (Sadece JRE + JAR):</strong> ~280MB</li><li><strong>Fayda:</strong> %67 daha küçük image boyutu.</li></ul><p>Bu sadece depolama tasarrufu değil, aynı zamanda Kubernetes ortamında <strong>Pod Startup Latency</strong> (image pull süresi) değerini düşürür ve “attack surface” alanını daraltarak güvenliği artırır.</p><h3>5. Veri Kaybını Önlemek: Stateful Servislerde Volume ve Permission Yönetimi</h3><p>Container’lar doğası gereği “ephemeral” (geçici) yapılardır. Kafka logları veya Postgres verileri için <strong>Named Volume</strong> kullanımı verinin kalıcılığı için zorunludur. Ancak “Senior” bir mühendisin asıl dikkat etmesi gereken nokta Linux çekirdek izinleridir.</p><p>Big Data container’ları güvenlik gereği genellikle non-root kullanıcılarla çalışır. Örneğin, Airflow container’ı UID 50000 ile çalışır. Eğer host makinedeki bir dizini (Bind Mount) container&#39;a bağlarsanız ve host dizininin sahibi root ise, Airflow yazma hatası alacaktır.</p><p><strong>Senior Tavsiyesi:</strong> Bind mount kullanırken host üzerindeki dizinlerin sahipliğini container içindeki kullanıcının UID değeriyle eşitlemek standart bir çözümdür: sudo chown -R 50000:50000 ./logs ./dags</p><h3>6. CI/CD’de “Latest” Etiketinden Kaçınmak: Immutable Infrastructure</h3><p>Profesyonel veri pipeline’larında latest tag&#39;ini kullanmak, operasyonel bir kumardır. Hangi versiyonun çalıştığının bilinmemesi, hata anında &quot;rollback&quot; (geri dönüş) hassasiyetini sıfıra indirir.</p><p><strong>Güvenli Versiyonlama Stratejisi:</strong></p><ol><li><strong>Semantic Versioning:</strong> Uygulama sürümleri için 1.2.3 gibi etiketler kullanın.</li><li><strong>Git Commit Hash:</strong> Her image’ı ilgili Git commit’inin kısa özetiyle (git rev-parse --short HEAD) etiketleyin.</li><li><strong>İzlenebilirlik:</strong> Belirli tag kullanımı, “Immutable Infrastructure” (Değişmez Altyapı) prensibini destekler ve hata ayıklama süreçlerinde spesifik bir job failure’ı o anki image versiyonuyla eşleştirmeyi sağlar.</li></ol><h3>Sonuç ve Öneriler</h3><p>Docker’ı tüm katmanlarıyla kavramak, aslında modern veri yığınını (Modern Data Stack) anlamakla eşdeğerdir. İzolasyon, kaynak yönetimi ve taşınabilirlik gibi kavramlar sadece birer kolaylık değil; veri mimarinizin ölçeklenebilirliği için temel gerekliliklerdir.</p><p>Veri mimarinizi kurarken şu soruyu kendinize sorun: <strong>“Container izolasyonunu sadece bir paketleme yöntemi olarak mı, yoksa bir operasyonel güvenlik ve performans kaldıracı olarak mı kullanıyorsunuz?”</strong></p><p>Kaynakça :</p><p>docs.docker.com Container fundamentals,</p><p>O’Reilly Media, 2023 Container ve image mimarisi, layer</p><p>Apress, 2023</p><p>docs.docker.com/scout</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=bf39b4ae1cea" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kurumsal Ölçekli Big Data Destekli RAG Pipeline: Uçtan Uca Stratejik Uygulama Rehberi]]></title>
            <link>https://suleakcaycs.medium.com/kurumsal-%C3%B6l%C3%A7ekli-big-data-destekli-rag-pipeline-u%C3%A7tan-uca-stratejik-uygulama-rehberi-ebd2b5e4518f?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/ebd2b5e4518f</guid>
            <category><![CDATA[big-data]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[llm]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Mon, 09 Feb 2026 21:34:29 GMT</pubDate>
            <atom:updated>2026-02-10T05:55:52.755Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TRf17jSjShgyiNu-6ePkKg.png" /><figcaption>üretken yapa zeka ile üretilmiştir.</figcaption></figure><h3>1. Büyük Veri Tabanlı Retrieval-Augmented Generation Sistemlerinin Kurumsal Uygulaması</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Vxnj_6HD0ruLc_m-aZEn2Q.jpeg" /></figure><p>Modern kurumsal ekosistemlerde veri, yalnızca depolanan bir varlık değil, yaşayan bir organizmadır. &quot;Dokümanlarla konuşan AI asistanı&quot; kavramı, teknik bir fantezinin ötesine geçerek kurumsal hafızanın milisaniyeler içinde aksiyona dönüştürülmesini temsil eder. Şirket politikaları, teknik spesifikasyonlar ve binlerce sayfalık akademik literatür arasında manuel arama yapmak (Eski Yöntem), günümüzün rekabet hızında kabul edilemez bir verimlilik kaybıdır.</p><p>Bu rehberde kurgulanan sistem, standart RAG (Retrieval-Augmented Generation) yaklaşımlarının &quot;yükle ve unut&quot; sığlığını aşarak; veri tutarlılığı, versiyonlama ve denetlenebilirliği merkeze alan bir <strong><em>Big Data mimarisi</em></strong> sunar. Bu altyapı, sadece bir chatbot değil, kurumsal verinin doğruluğunu ve izlenebilirliğini garanti altına alan bir mühendislik kalesidir.</p><h3>2. Mimari Temeller: Tam Yığın (Full-Stack) Teknoloji Ekosistemi</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ypYkiYM-JYp9C59K35H8JA.jpeg" /></figure><p>Sistemin başarısı, SaaS çözümlerinin maliyet ve veri gizliliği risklerine karşın, açık kaynaklı teknolojilerin yüksek performanslı bir sinerjiyle bir araya getirilmesine dayanır. Bu &quot;Modern Stack&quot;, yerel geliştirme esnekliğini üretim ortamı (production) ölçeğiyle birleştirir.</p><h3>Teknoloji Stack Analizi</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/671/1*MZb51ndLEZufdDo-4o8PBg.png" /></figure><h3>Mimari Sinerji ve Stratejik Tercih</h3><p>Sistemin kalbinde, veriyi işleyen <strong>Spark</strong> ile bu veriyi SQL standartlarında sorgulanabilir kılan <strong>Trino</strong> arasındaki görev ayrımı yatar. Açık kaynak tercih edilmesi, kurumsal verinin tamamen kontrol altında tutulmasını sağlarken, S3 uyumlu MinIO kullanımı sistemin yarın bulut ortamına (AWS S3) taşınmasını &quot;sıfır kod değişikliği&quot; ile mümkün kılar.</p><h3>3. Fark Yaratan Bileşen: Big Data Mimarisi ve Veri Yönetişimi</h3><blockquote>Geleneksel RAG sistemlerinin en büyük zafiyeti &quot;Data Lineage&quot; (Veri İzlenebilirliği) eksikliğidir. Bir AI yanıtı hatalı olduğunda, bu hatanın kaynağını (Doküman versiyonu? Chunking hatası? Embedding bozulması?) bulmak standart sistemlerde imkansızdır.</blockquote><h3>Kritik Teknolojilerin Analizi</h3><ul><li><strong>Apache Iceberg:</strong> ACID garantisi ile veri yazma/silme işlemlerini yönetir. <strong>&quot;Time Travel&quot;</strong> özelliği sayesinde, sistemin 1 hafta önceki durumuna saniyeler içinde dönülebilir. Schema Evolution yeteneğiyle, doküman yapısı değişse bile sistem kesintiye uğramaz.</li><li><strong>Project Nessie:</strong> Veri dünyasına &quot;Git&quot; pratiklerini getirir. Bir branch açarak yeni doküman setlerini ana sistemi bozmadan test edebilir, doğruluğundan emin olduğunuzda merge yapabilirsiniz.</li></ul><h3>Veri İzlenebilirliği (Data Lineage)</h3><p>Kurumsal denetim (audit) için sistem şu spesifik zinciri kayıt altında tutar: <strong>Document → Chunks → Embeddings</strong>. Hangi embedding&#39;in hangi doküman snapshot&#39;ından üretildiği bilgisi Iceberg metadata katmanında saklanır. Bu, &quot;Bu cevap hangi dokümandan geldi?&quot; sorusuna verilebilecek en kesin teknolojik yanıttır.</p><h3>4. Adım Adım Uygulama ve Kurulum Stratejisi</h3><p>Karmaşık sistemlerde &quot;Önce Altyapı&quot; (Infrastructure First) yaklaşımı, bağımlılıkların yönetilmesi için hayati önem taşır.</p><h3>Kurulum ve Yapılandırma Prosedürü</h3><ol><li><strong>Servislerin Başlatılması:</strong> Docker-compose yapılandırması başlatıldıktan sonra, projenin sunduğu <strong>Makefile</strong> içindeki make health komutu çalıştırılmalıdır. Bu komut, tüm servislerin sadece &quot;çalışıyor&quot; değil, &quot;Healthy&quot; (işlevsel) olduğunu teyit eder.</li><li><strong>MinIO Kritik Ön Hazırlık:</strong> Sistem çalışmadan önce MinIO Console (Port 9001) üzerinden warehouse isimli bucket manuel olarak oluşturulmalıdır. Bu bucket, Iceberg tablolarının fiziksel evidir.</li><li><strong>Namespace Gerekliliği:</strong> Tablo oluşturma aşamasında en sık yapılan hata direkt tabloya gitmektir. Önce şu komut Spark/Trino üzerinden çalıştırılmalıdır: CREATE NAMESPACE iceberg.rag_data_lake;</li><li><strong>Spark JAR Entegrasyonu:</strong> Spark&#39;ın ekosistemle konuşabilmesi için toplam <strong>~474MB</strong> büyüklüğündeki JAR kütüphaneleri /opt/spark-jars/ dizinine yerleştirilmelidir. Özellikle AWS SDK yeteneklerini barındıran <strong>bundle-2.20.18.jar (443MB)</strong> dosyasının eksiksizliği kritik başarı faktörüdür.</li></ol><h3>5. RAG Pipeline: Verinin Bilgiye Dönüşüm Süreci</h3><p>Ham dokümanın semantik bir zekaya dönüşmesi, hassas parametre optimizasyonları gerektiren bir<em> mühendislik</em> sürecidir.</p><ul><li><strong>Chunking Stratejisi:</strong> 200 karakterlik parça boyutu ve 50 karakterlik örtüşme (overlap) kullanılır. Bu sayede hem bağlam (context) korunur hem de semantik arama için gerekli hassasiyet sağlanır.</li><li><strong>Embedding Katmanı:</strong> Performans/maliyet dengesi için all-MiniLM-L6-v2 modeli tercih edilmiştir.</li><li><strong>Benchmark:</strong> CPU üzerinde saniyede ~500 cümle işleme kapasitesi.</li><li><strong>Boyut Karşılaştırması:</strong> 384D (Hızlı/CPU dostu), 768D (Dengeli), 1536D (En yüksek kalite - OpenAI standardı). Mevcut sistem 384D ile kurumsal hız ihtiyacını optimize eder.</li><li><strong>Vektör Depolama (Qdrant):</strong> Üretilen vektörler Qdrant üzerinde saklanırken, Iceberg üzerindeki metadata ile eşleşen id yapıları kullanılır. Bu, hibrit arama (SQL + Vektör) için temel oluşturur.</li></ul><h3>6. Sorun Giderme ve Operasyonel &quot;Battle Scars&quot;</h3><p>Gerçek dünya uygulamalarında karşılaşılan engeller, sistemin dayanıklılığını artırmak için birer fırsattır.</p><h3>Kritik Sorun-Çözüm Matrisi</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/902/1*aHsfHSaqkU37FyCJCTdoaQ.png" /></figure><h3>7. Sonuç ve Gelecek Vizyon (Roadmap)</h3><p>Bu proje, klasik RAG uygulamalarının ötesine geçerek <strong>kurumsal veri platformu ile yapay zekâyı bütünleştiren üretim seviyesi bir mühendislik mimarisi</strong> ortaya koymaktadır. Sistem yalnızca dokümanlardan cevap üreten bir chatbot değildir; veri alımından saklamaya, versiyonlamadan denetlenebilirliğe kadar tüm yaşam döngüsünü yöneten bütüncül bir Big Data altyapısıdır.</p><p>Apache Iceberg’in sunduğu ACID transaction garantileri, time-travel yetenekleri ve schema evolution desteği sayesinde sistem; veri bozulmalarına, hatalı yüklemelere ve operasyonel risklere karşı yüksek dayanıklılık kazanmıştır. Project Nessie entegrasyonu ise kurumsal veri yönetimine yazılım mühendisliğinde kullanılan branch, test ve geri dönüş (rollback) pratiklerini kazandırarak RAG mimarisini gerçek anlamda kontrol edilebilir hale getirmiştir.</p><p>Bu yaklaşım sayesinde:</p><p>• AI yanıtlarının hangi veri sürümünden üretildiği izlenebilir<br> • Hatalı veri senaryoları saniyeler içinde geri alınabilir<br> • Denetim süreçleri (audit &amp; compliance) teknik olarak kanıtlanabilir<br> • RAG sistemleri ilk kez kurumsal veri platformu standartlarına ulaşır</p><p>Bu mimari, prototip yaklaşımını geride bırakarak kurumsal ölçekte yüksek hacimli veriler üzerinde güvenilirlik, ölçeklenebilirlik ve sürdürülebilirlik sağlayan tam anlamıyla üretime hazır bir AI veri platformu sunmaktadır.</p><h3>Kaynakça (References)</h3><ol><li>Apache Iceberg Community. <em>Apache Iceberg Documentation — High-performance table format for huge analytic datasets.</em><br> <a href="https://iceberg.apache.org/">https://iceberg.apache.org</a></li><li>Project Nessie. <em>Transactional Catalog for Data Lakes — Git-like version control for data.</em><br> <a href="https://projectnessie.org/">https://projectnessie.org</a></li><li>Apache Spark Community. <em>Apache Spark — Unified Analytics Engine for Big Data Processing.</em><br> <a href="https://spark.apache.org/">https://spark.apache.org</a></li><li>Trino Community. <em>Trino — Distributed SQL Query Engine for Data Lake Analytics.</em><br> <a href="https://trino.io/">https://trino.io</a></li><li>MinIO Inc. <em>MinIO High Performance Object Storage for AI &amp; Data Lake Workloads.</em><br> <a href="https://min.io/">https://min.io</a></li><li>Qdrant Team. <em>Qdrant Vector Database — High-performance similarity search engine.</em><br> <a href="https://qdrant.tech/">https://qdrant.tech</a></li><li>OpenAI. <em>Retrieval-Augmented Generation (RAG) patterns for large language models.</em><br> <a href="https://platform.openai.com/docs">https://platform.openai.com/docs</a></li><li>Lewis, P. et al. (2020). <em>Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks.</em> Facebook AI Research.<br> <a href="https://arxiv.org/abs/2005.11401">https://arxiv.org/abs/2005.11401</a></li><li>AWS Architecture Blog. <em>Modern Data Lake Architecture with Iceberg, Spark, and Trino.</em></li></ol><p>Projemin linki</p><p>Github Profile : <a href="https://github.com/Sulecs1/data_engineer_for_LLM">https://github.com/Sulecs1/data_engineer_for_LLM</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ebd2b5e4518f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veri Mimarisi Hakkında Bildiğinizi Sandığınız Her Şeyi Unutun: Modern Data Engineer’ların…]]></title>
            <link>https://suleakcaycs.medium.com/veri-mimarisi-hakk%C4%B1nda-bildi%C4%9Finizi-sand%C4%B1%C4%9F%C4%B1n%C4%B1z-her-%C5%9Feyi-unutun-modern-data-engineerlar%C4%B1n-8aa98734dddd?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/8aa98734dddd</guid>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Fri, 23 Jan 2026 19:58:51 GMT</pubDate>
            <atom:updated>2026-01-23T19:58:51.492Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*E86PyNIFeZcrIGfgAdEbmQ.png" /><figcaption>Bu resim üretken yapay zeka üretilmiştir</figcaption></figure><h3>Veri Mimarisi Hakkında Bildiğinizi Sandığınız Her Şeyi Unutun: Modern Data Engineer’ların Uyguladığı 5 Temel Prensip</h3><p>Veri mimarisi denince akla genellikle karmaşık şemalar, katı kurallar ve değişmez, büyük planlar gelir. Birçok organizasyon, veri dünyasını bu şekilde kontrol altına alabileceğine inanır. Ancak bu yaklaşım, günümüzün hızla değişen teknoloji ve iş dünyasında başarısızlığa mahkumdur. Statik planlar, değişimin hızına ayak uyduramaz ve kısa sürede inovasyonun önünde birer engele dönüşür.</p><p>Bu yazı, o katı planların ve fildişi kulelerden verilen kararların ötesine geçiyor. Bu zihniyet değişikliğinin sadece teknik bir tercih olmadığını, aynı zamanda ekipleri birer kapı bekçisinden yenilikçi güçlere dönüştüren insani bir felsefe olduğunu göreceğiz. En başarılı ve dayanıklı veri mimarilerinin temelini oluşturan, çoğu zaman şaşırtıcı ve karşı-sezgisel olan temel prensipleri ortaya çıkaracak. Eğer mimarinin sadece çizim yapmaktan ibaret olduğunu düşünüyorsanız, bildiklerinizi unutmaya hazır olun.</p><h4>1. Mükemmellik Değil, Geri Alınabilirlik Peşinde Koşun</h4><p>Mimarideki en önemli hedef, değiştirilemez, “mükemmel” ve son hali verilmiş bir sistem kurmak değildir. Aksine, en değerli hedef esnek, değişime açık ve geri alınabilir kararlar vermektir.</p><p>Amazon’un kurucusu Jeff Bezos, kararları “tek yönlü kapı” ve “iki yönlü kapı” olarak ikiye ayırır. Tek yönlü kapılar, geri alınması neredeyse imkansız olan, sonuçları ağır kararlardır. İki yönlü kapılar ise kolayca geri alınabilen, denemeye ve öğrenmeye olanak tanıyan kararlardır. İyi bir mimari, mümkün olduğunca “iki yönlü kapı” kararları alarak riskleri azaltır ve organizasyonun daha hızlı deneme yapmasına, veriye dayalı dersler çıkarmasına ve sürekli olarak kendini geliştirmesine olanak tanır.</p><p>Bunun pratikteki anlamı şudur: Bu yaklaşım, sadece teknik bir esneklik sağlamanın ötesinde, organizasyonların büyüme eğilimiyle birlikte ortaya çıkan doğal <strong>“kurumsal katılaşma”</strong> eğilimine karşı stratejik bir panzehirdir. Değişen iş gereksinimleri ve teknoloji karşısında katı bir mimari bir ayak bağına dönüşürken, geri alınabilir kararlar üzerine kurulu bir mimari, organizasyona muazzam bir rekabet avantajı sağlar.</p><p>Martin Fowler’ın da belirttiği gibi, bu fikir mimarinin özünü yeniden tanımlar:</p><p>“Bir mimarın en önemli görevlerinden biri, yazılım tasarımlarındaki geri döndürülemezliği ortadan kaldırmanın yollarını bularak mimariyi ortadan kaldırmaktır.”</p><h4>2. “En İyi” Diye Bir Şey Yoktur, Sadece “En Az Kötü” Vardır</h4><p>Teknoloji dünyasında sihirli bir “en iyi” çözüm arayışı yaygındır. Ancak bir stratejist olarak bilmeniz gereken gerçek şu ki, her mimari karar kaçınılmaz olarak bir dizi ödünleşmeyi (trade-off) beraberinde getirir. Mimarın görevi, bu ödünleşmeler arasında en uygun dengeyi bulmaktır.</p><p>Mühendislik, ister fiziksel ister dijital olsun, kısıtlamalarla çalışır. Gecikme süresi ve güvenilirlik gibi fiziksel limitlerin yanı sıra bütçe, zaman, mevcut yetenekler ve sistem karmaşıklığı gibi fiziksel olmayan kısıtlamalar da vardır. Bu pragmatik düşünce tarzı, ekipleri gerçekçi olmayan mükemmellik hedeflerinden korur. “En iyi” çözüm peşinde koşmak yerine, projenin gerçek ihtiyaçlarına ve kısıtlarına odaklanarak daha sürdürülebilir ve uygulanabilir çözümler üretilmesini sağlar. Bu, sihirli düşünceden kaçınarak sağlam mühendislik yapmaktır.</p><p>Yazılım mimarisi üzerine temel eserlerden birinin yazarları olan Mark Richards ve Neal Ford bu gerçeği çarpıcı bir şekilde özetler:</p><p><em>“Asla en iyi mimariyi hedeflemeyin, bunun yerine en az kötü mimariyi hedefleyin.”</em></p><h4>3. Mimarlık Liderliktir, Diktatörlük Değil</h4><p>Modern veri mimarının rolü, “fildişi kulesinden” teknolojileri dayatan bir diktatör olmaktan çıkmıştır. Artık mimar, ekibe mentorluk yapan, onların yeteneklerini geliştiren ve ortak hedeflere ulaşmayı kolaylaştıran bir liderdir.</p><p>Bu değişim, geçmişteki “komuta-kontrol” yaklaşımının başarısızlıklarına doğrudan bir yanıttır. Eskiden mimarların tüm ekipleri tek bir veritabanı teknolojisini kullanmaya zorladığı, inovasyonu boğan ve darboğazlar yaratan tek tipçi kararlar artık geçerliliğini yitirmiştir. İdeal bir mimar, derin teknik yetkinliğini; ekiplerin seviyesini yükseltmek, ortak bileşenleri akıllıca seçerek yeniden kullanımı teşvik etmek ve en iyi uygulamaları öğreterek kaliteyi artırmak için kullanır. Bu liderlik yaklaşımı, ekiplere kendi alanlarında en uygun araçları seçme özerkliği tanır ve bu da inovasyonu tetikler. Mimarın etkisi, verdiği kararlardan çok, geliştirdiği ekibin yetenekleriyle ölçülür.</p><p>Martin Fowler, ideal mimar arketipini <em>Architectus Oryzus</em> olarak tanımlarken bu liderlik rolünü mükemmel bir şekilde açıklar:</p><p>“Architectus Oryzus’un en önemli faaliyeti, geliştirme ekibine mentorluk yapmak, onların seviyesini yükselterek daha karmaşık konuları üstlenmelerini sağlamaktır. Geliştirme ekibinin yeteneğini artırmak, bir mimara tek karar verici olmaktan ve dolayısıyla mimari bir darboğaz olma riskini taşımaktan çok daha büyük bir etki gücü verir.”</p><h4>4. Başarısızlık Bir Hata Değil, Bir Özelliktir</h4><p>Dayanıklı ve sağlam sistemler inşa etmenin yolu, her şeyin her zaman mükemmel çalışacağını varsaymak değildir. Tam tersine, başarısızlığın kaçınılmaz olduğunu kabul edip, sistemleri bu gerçeğe göre tasarlamaktır. Modern donanımlar ne kadar güvenilir olursa olsun, yeterli zaman geçtiğinde her bileşen eninde sonunda arızalanacaktır.</p><p>İyi bir mimari, başarısızlık senaryolarını en başından planlar.</p><p>Bu planlama,</p><p><strong>Kullanılabilirlik (Availability)</strong> gibi bir sistemin çalışır durumda olduğu sürenin yüzdesini;</p><p><strong>Güvenilirlik (Reliability)</strong> gibi bir sistemin belirli bir süre boyunca hedeflenen işlevi doğru bir şekilde yerine getirme olasılığını;</p><p><strong>Kurtarma Süresi Hedefi (RTO)</strong> gibi bir kesintide sistemin ne kadar sürede ayağa kalkması gerektiğini ;</p><p><strong>Kurtarma Noktası Hedefi (RPO)</strong> gibi ne kadarlık veri kaybının kabul edilebilir olduğunu hesaba katmalıdır.</p><p>Başarısızlığı bir özellik olarak kabul edip planlamak, sistemleri daha dayanıklı hale getirir ve en önemlisi, iş sürekliliğini güvence altına alır.</p><p>Amazon CTO’su Werner Vogels’in bu prensibi ölümsüzleştiren ikonik sözü her şeyi özetliyor:</p><p>“Her şey, her zaman başarısız olur.”</p><h4>5. Rolünüz Genişledi: Artık Güvenlik ve Finanstan da Sorumlusunuz</h4><p>Bulut teknolojilerinin yükselişiyle birlikte veri mühendisinin ve mimarının sorumluluk alanı dramatik bir şekilde genişledi. Artık görevimiz sadece veri taşımak ve işlemek değil; inşa ettiğimiz sistemlerin güvenliğinden ve maliyetinden de doğrudan sorumluyuz.</p><p>Bu genişleme iki ana alanda kendini gösterir:</p><p>• <strong>Güvenlik:</strong> Geleneksel “sağlamlaştırılmış çevre” güvenlik modeli artık yetersiz kalıyor. Bu modelin zayıflığını anlamak için 1996 yapımı <em>Görevimiz Tehlike (Mission Impossible)</em> filmini düşünün. Ethan Hunt, CIA’in son derece güvenli bir odasına sızar ve içeri girdikten sonra, verileri nispeten kolayca dışarı çıkarabilir. Bu, içeriden gelen tehditlere karşı çevresel güvenliğin ne kadar kırılgan olduğunu gösterir. Bulutta ise “paylaşılan sorumluluk modeli” geçerlidir: Bulut sağlayıcısı altyapının güvenliğinden sorumluyken, kullanıcı olarak bizler o altyapının <em>içindeki</em> veriyi, uygulamaları ve erişim kontrollerini güvence altına almaktan sorumluyuz. Bu nedenle, her veri mühendisi kendini aynı zamanda bir güvenlik mühendisi olarak görmelidir.</p><p>• <strong>FinOps:</strong> Bulutun “kullandığın kadar öde” modeli, maliyet yönetimini tek seferlik bir bütçelemeden çıkarıp sürekli, dinamik bir sürece dönüştürmüştür. FinOps, mühendislik ve finans ekiplerini bir araya getirerek veri odaklı harcama kararları almalarını sağlayan kültürel bir pratiktir. Bu sadece bütçe takibi demek değildir; aynı zamanda sistemleri “maliyet saldırılarına” karşı korumak anlamına da gelir. Tıpkı bir DDoS saldırısının bir web sitesini erişilmez kılması gibi, S3 bucket’larından yapılan aşırı indirmeler de maliyetleri fırlatarak küçük bir startup’ı iflasla tehdit edebilir. Seçtiğiniz her servisin anlık bir finansal etkisi vardır ve bunu yönetmek görevinizin bir parçasıdır.</p><p>Bu rol genişlemesi, modern bir veri profesyoneli olmanın ne anlama geldiğini yeniden tanımlıyor. Artık verdiğimiz kararlar sadece teknik performansı değil, aynı zamanda güvenlik risklerini ve bütçe üzerindeki etkisini de doğrudan şekillendiriyor.</p><h4>Sonuç</h4><p>Gördüğünüz gibi, modern veri mimarisi katı ve değişmez planlar çizmekten çok daha fazlasıdır. Temelinde esneklik, gerçekçi bir pragmatizm, mentorluğa dayalı bir liderlik ve sürekli genişleyen bir sorumluluk anlayışı yatar. Bu prensipler, sadece daha iyi sistemler kurmanızı sağlamakla kalmaz, aynı zamanda organizasyonunuzun gelecekteki zorluklara ve fırsatlara daha hazır olmasına yardımcı olur.</p><p>Şimdi durup düşünme zamanı:</p><p><strong>“Bugün, kendi organizasyonunuzdaki hangi ‘tek yönlü kapı’ kararını bir ‘iki yönlü kapı’ fırsatına çevirebilirsiniz?”</strong></p><p>Teşekkürler :)</p><p>source:</p><p>Data Engineering Design Patterns</p><p>Fundamentals of Data Engineering Book</p><p><a href="https://www.linkedin.com/in/suleakcay/">https://www.linkedin.com/in/suleakcay/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=8aa98734dddd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veri DünyasındaYanılgılar: Modern Yazılım Dünyasından 5 Sarsıcı Gerçek]]></title>
            <link>https://suleakcaycs.medium.com/veri-d%C3%BCnyas%C4%B1ndayan%C4%B1lg%C4%B1lar-modern-yaz%C4%B1l%C4%B1m-d%C3%BCnyas%C4%B1ndan-5-sars%C4%B1c%C4%B1-ger%C3%A7ek-a8d869ea616e?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/a8d869ea616e</guid>
            <category><![CDATA[data-architecture]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[big-data]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Mon, 19 Jan 2026 11:34:27 GMT</pubDate>
            <atom:updated>2026-01-19T11:34:27.936Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*VwEeJYkSzfJfGlI9GfELGw.png" /></figure><p><em>Veri Mühendisi için Yol Rehberi</em></p><h4>1. Sistem Tasarımı ve Altyapı Orkestrasyonunun Kaosu</h4><p>Modern yazılım dünyasında bir sistem inşa ederken asıl zorluk artık sadece algoritma yazmak değil, devasa bir veri yığınının içinde kaybolmadan doğru altyapı orkestrasyonunu kurgulamaktır. Birçok uygulama, ana darboğazın hesaplama gücü (compute-intensive) değil; verinin hacmi, karmaşıklığı ve değişkenliği olduğu <strong>“veri yoğun” (data-intensive)</strong> sistemler kategorisine girer.</p><p>Bugün bir Kıdemli Veri mühendisi için mesele, onlarca veritabanı ve işleme aracı arasından birini seçmek değil, bu araçların bir arada nasıl bir ekosistem oluşturacağını stratejik olarak belirlemektir. Bu yazı, “Büyük Veri” felsefesinin yarattığı illüzyonları dağıtacak ve modern mimarinin en etkili, bazen de sezgilere aykırı derslerini sunacaktır.</p><h4>2. Mükemmel Çözüm Yoktur, Sadece Ödünler (Trade-offs) Vardır</h4><p>Teknoloji seçimlerinde “en iyi” arayışı, genellikle mimari bir başarısızlıkla sonuçlanır. Veri mimarisinde gümüş kurşun yoktur; sadece bilinçli ödünler vardır.</p><p>“Çözüm yok, sadece ödünler var… Elde edebileceğiniz en iyi ödünü vermeye çalışıyorsunuz ve umabileceğiniz tek şey de bu.” — Thomas Sowell</p><p>Veri sistemleri tasarlanırken bu felsefe her kararın merkezinde yer almalıdır. Mühendislik dünyasında <strong>polyglot persistence</strong> (çok dilli süreklilik) kavramının yükselmesi, tek bir veritabanının her sorunu çözemeyeceğinin kanıtıdır. Mimari karar verme süreci, teknik bir üstünlük yarışından ziyade, uygulamanın özel ihtiyaçlarına (hız, tutarlılık, ölçeklenebilirlik) en uygun “ödünler kümesini” bulma sanatıdır. Unutmayın: Veri mimarisinde sihirli bir değnek yoktur, sadece rasyonel tavizler vardır.</p><h4>3. Operasyonel ve Analitik Dünyaların Stratejik Ayrımı</h4><p>Veri sistemlerinde iki ana kutup vardır: Operasyonel (OLTP) ve Analitik (OLAP). Bu iki dünyanın ayrılması teknik bir tercih değil, operasyonel bir zorunluluktur.</p><p>• <strong>OLTP (Çevrimiçi İşlem İşleme):</strong> Genellikle <strong>Point Query</strong> (anahtar kullanarak tek bir kayda erişim) üzerine kuruludur. Düşük gecikme süresiyle bireysel kayıtları okur ve günceller.</p><p>• <strong>OLAP (Çevrimiçi Analitik İşleme):</strong> Milyonlarca satır üzerinde <strong>Aggregation</strong> (toplama, ortalama, sayma) işlemleri gerçekleştirir.</p><p>Bir iş analistinin çalıştırdığı ağır bir SQL sorgusu, üretim ortamındaki (production) bir müşterinin sipariş işlemini yavaşlatmamalıdır. Bu performans çakışmasını önlemek ve yüzlerce mikroservisin içine hapsolmuş <strong>Veri Siloları</strong> (Data Silos) sorununu çözmek için <strong>Veri Ambarları (Data Warehouse)</strong> doğmuştur. <strong>ETL (Çıkarma-Dönüştürme-Yükleme)</strong> süreçleri, operasyonel sistemlerdeki veriyi temizleyip analitik amaçlar için optimize edilmiş ayrı bir alana taşıyarak kurumsal kararlar için “tek bir doğruluk kaynağı” oluşturur.</p><h4>4. Bulut Devrimi: Depolama ve Hesaplamanın Boşanması</h4><p>Geleneksel mimarilerdeki yerel RAID yapıları ve disk bağımlılığı, yerini bulut tabanlı (<strong>cloud-native</strong>) sistemlerin getirdiği en büyük devrime bıraktı: <strong>Depolama (storage) ve hesaplamanın (compute) ayrılması (decoupling).</strong></p><p>Geleneksel sistemlerde Amazon EBS gibi “Sanal Blok Depolama” (Virtual Block Storage) yapıları diskleri taklit etmeye çalışırken ağ gecikmesi (network latency) gibi sorunlar yaratır. Oysa Amazon S3 gibi <strong>Nesne Depolama (Object Storage)</strong> servisleri, fiziksel makine arızalarını soyutlayan ve veriyi otomatik olarak dağıtan tamamen farklı bir yaklaşımdır. Bu ayrım sayesinde:</p><p>• <strong>Esneklik ve Elastisite:</strong> Veri miktarınız artsa bile sadece depolama için ödeme yaparsınız; işlemci gücünü sadece sorgu anında devreye alarak <strong>sorgu başına ödeme (pay-per-query)</strong> modeline geçebilirsiniz.</p><p>• <strong>Çoklu Kiracılık (Multi-tenancy):</strong> Aynı altyapı üzerinde kaynakları dinamik olarak yönetebilir ve maliyet optimizasyonunu en üst seviyeye çıkarabilirsiniz.</p><h4>5. Prematüre Dağıtımdan Kaçının: Tek Düğümün (Single-Node) Dönüşü</h4><p>Günümüzde birçok ekip, verileri henüz tek bir sunucunun RAM kapasitesine bile ulaşmamışken “Google ölçeğinde” dağıtık sistemler kurmaya çalışarak <strong>gereksiz mühendislik (over-engineering)</strong> tuzağına düşüyor.</p><p>Dağıtık sistemler ağ gecikmesi, karmaşık arıza olasılıkları ve ciddi yönetim yükü demektir. Oysa modern donanımlar artık inanılmaz derecede güçlüdür. Modern bir CPU ve yüksek kapasiteli bellekler ile terabaytlarca veri tek bir makinede işlenebilir. <strong>DuckDB, SQLite</strong> veya modern grafik veritabanı <strong>KùzuDB</strong> gibi tek düğümlü çözümler; birçok iş yükü için dağıtık bir kümeden (cluster) daha hızlı, daha ucuz ve daha stabildir. Ağ üzerinden veri aktarmanın maliyeti, yerel disk ve işlemci arasındaki iletişimden her zaman daha yüksektir.</p><h4>“Büyük Veri”den “Veri Tasarrufuna”: Bir Risk Faktörü Olarak Veri</h4><p>Yıllarca “ne bulursan sakla” diyen Büyük Veri mantrası, yerini yasal ve etik bir zorunluluğa bıraktı. GDPR ve CCPA gibi düzenlemelerle birlikte veri, sadece teknik bir varlık (asset) değil, aynı zamanda bir <strong>yükümlülük (liability)</strong> haline gelmiştir.</p><p>Almanca <strong>“Datensparsamkeit”</strong> (Veri Minimizasyonu) kavramı, modern mimarinin yeni anayasasıdır. Veriyi saklamak sadece bir depolama maliyeti değil; olası bir siber saldırıda güvenlik riski, yasal süreçlerde ise tazminat yüküdür. Değiştirilemez (immutable) loglar üzerine kurulu mimariler, yasal bir zorunluluk olan <strong>“Unutulma Hakkı” (Right to be Forgotten)</strong> ile doğrudan çatışır. Bu nedenle mimarlar, hangi verinin gerçekten saklanmaya değer olduğunu sorgulamalıdır. Veri minimizasyonu, modern sistem tasarımında bir kısıt değil, bir güvenlik stratejisidir.</p><p>Sonuç: Sosyoteknik Bir Disiplin Olarak Mimari</p><p>Modern veri mimarisi artık sadece kod ve altyapıdan ibaret değildir; hukuk, etik ve operasyonel ödünlerin dengelendiği <strong>sosyoteknik</strong> bir disiplindir. Bir sistem tasarlarken sadece teknik performansı değil, verinin yaşam döngüsünü ve toplumsal etkilerini de hesaba katmak kıdemli bir stratejistin temel görevidir.</p><p>Mimarınızın başarısını ölçmek için şu kritik soruyu sorun:</p><p><strong>“Sisteminizdeki veriler birer varlık (asset) mı, yoksa birer yükümlülük (liability) mü?”</strong></p><p>Kaynakça :</p><p><a href="https://www.linkedin.com/in/suleakcay/">https://www.linkedin.com/in/suleakcay/</a></p><ul><li><a href="https://medium.com/javarevisited/review-is-designing-data-intensive-applications-by-martin-kleppman-worth-it-b3b7dfa17a5c">Review — Is Designing Data intensive Applications by Martin Kleppman Worth it?</a></li><li><a href="https://dragon-swords98.medium.com/designing-data-intensive-applications-book-review-notes-89140ecb8aa2">Designing Data-Intensive Applications - Book Review + Notes</a></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a8d869ea616e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veri Mühendisliğinin Sessiz Sorumluluğu: Data Engineer Perspektifinden Data Quality Gerçekleri]]></title>
            <link>https://suleakcaycs.medium.com/veri-m%C3%BChendisli%C4%9Finin-sessiz-sorumlulu%C4%9Fu-data-engineer-perspektifinden-data-quality-ger%C3%A7ekleri-406da6cd5b69?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/406da6cd5b69</guid>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-quality]]></category>
            <category><![CDATA[big-data]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Sat, 17 Jan 2026 06:29:59 GMT</pubDate>
            <atom:updated>2026-01-17T07:18:40.245Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Hcd9-9gpj2cI8o6cCA8HSg.png" /></figure><p><strong>1. Milyon Dolarlık Kararların Temelindeki Çatlak</strong></p><p>Hayal edin: Şirketinizin yönetim kurulu, önlerine gelen göz alıcı bir dashboard’daki verilere dayanarak 10 milyon dolarlık kritik bir yatırım kararı alıyor. Ancak aylar sonra, o kararın temelindeki “büyüme” verisinin aslında mükerrer kayıtlardan veya yanlış işlenen bir veri kaynağından beslendiği ortaya çıkıyor. Yanlış veri; yanlış analizlere, yanlış analizler ise telafisi imkansız mali ve prestij kayıplarına yol açar.</p><p>Veri kalitesi (Data Quality), modern bir veri mimarisinde sadece teknik bir detay değil; verinin <strong>doğru, eksiksiz, tutarlı, zamanında ve kullanılabilir</strong> olduğunu garanti altına alan bir <strong>mühendislik disiplinidir.</strong> Bugünün dünyasında sormamız gereken asıl soru şudur: Veri gerçekten iş kararlarında kullanılabilir mi, yoksa sadece bir yığın mı tutuyorsunuz?</p><p><strong>2. “Null Check” Sadece Buzdağının Görünmeyen %5’idir</strong></p><p>Sektördeki en büyük yanılgılardan biri, veri kalitesini sadece “boş değer” (null) kontrolü yapmaktan ibaret sanmaktır. Oysa kıdemli bir veri mühendisi için null check, toplam kalite yönetiminin yalnızca %5’ini oluşturur. Manuel olarak yapılan kontroller ise büyüme aşamasındaki bir şirket için “çöp” hükmündedir; ölçeklenemez ve güven veremez.</p><p>Gerçek bir veri kalitesi stratejisi; verinin iş kuralları, teknik standartlar ve zaman boyutu arasındaki güvenilirliğini sağlayan, yaşayan bir sistemdir.</p><blockquote>Data Quality = “Veri gerçekten iş kararlarında kullanılabilir mi?” sorusunun cevabı</blockquote><p><strong>3. Kaostan Altın Seviyeye: Veri Kalitesi Olgunluk Seviyeleri</strong></p><p>Bir organizasyonun veriye ne kadar güvenebileceği, bulunduğu olgunluk seviyesiyle doğru orantılıdır. Büyük şirketlerin izlediği bu 6 seviyeli hiyerarşide siz neredesiniz?</p><p>• <strong>Level 0 — Kaos:</strong> Hiçbir kontrolün olmadığı, sadece “veri bir şekilde gelmiş mi?” diye bakılan seviye. Startup’ların %90’ı burada başlar ve günleri “yangın söndürmekle” geçer.</p><p>• <strong>Level 1 — Temel Teknik Kontroller:</strong> Null check, tip kontrolü ve satır sayısının izlendiği, Primary Key (PK) bazlı temel kontrollerin başladığı aşama.</p><p>• <strong>Level 2 — Şema ve Tutarlılık (Schema &amp; Consistency):</strong> Şema değişimlerinin (Schema Drift) izlendiği, Iceberg veya Delta metadata seviyesinde versiyonlamanın yapıldığı, dün ile bugün arasındaki yapısal uyumun sorgulandığı seviye.</p><p>• <strong>Level 3 — İş Kuralları (Altın Seviye):</strong> Veri mühendisi ile iş biriminin ortaklığıyla kuralların yazıldığı en kritik aşamadır. Örneğin; “Sipariş tutarı negatif olamaz”, “Sipariş durumu sadece CREATED, SHIPPED veya CANCELLED olabilir” gibi mantıksal kontroller burada devreye girer.</p><p>• <strong>Level 4 — İstatistiksel Analiz ve Anomali Tespiti:</strong> Basit kuralların ötesine geçilir. Makine öğrenmesi (ML) ve istatistiksel modellerle trend kırılmaları izlenir. “Son 30 günün ortalaması 100 bin iken bugün neden 10 bin?” sorusu otomatik alarmları tetikler.</p><p>• <strong>Level 5 — Modern Zirve (Data Contracts):</strong> Veri üreten (Producer) ve tüketen (Consumer) taraflar arasında kesin sözleşmelerin yapıldığı seviyedir. Great Expectations, Soda veya Monte Carlo gibi araçlarla veri kalitesi bir CI/CD disiplinine ve kurumsal bir “ürüne” dönüşür.</p><p><strong>4. Devlerin Oyun Planı: Uber, Amazon ve Netflix Nasıl Başarıyor?</strong></p><p>Veri ölçeği devasa boyutlara ulaştığında, bu şirketler statik kontrolleri tamamen terk ederek “Veri Gözlemlenebilirliği” (Data Observability) yaklaşımına geçerler.</p><p>• <strong>Uber:</strong> Geliştirdikleri “Data Quality Monitor” (DQM) ile binlerce tabloyu istatistiksel modellerle izliyorlar. Basit kurallar yerine geçmiş trendlere dayalı “kalite puanları” (DQ Score) üreterek sorunları henüz raporlara yansımadan tespit ediyorlar.</p><p>• <strong>Amazon:</strong> ML destekli sistemleriyle sadece anomalileri tahmin etmekle kalmıyor, aynı zamanda büyük ölçekli veri kümeleri için otomatik olarak <strong>anlamlı doğrulama testleri oluşturuyorlar.</strong> Amazon’da kalite, kural tabanlı sistemlerden model tabanlı dinamik sistemlere evrilmiş durumda.</p><p>• <strong>Netflix:</strong> Odak noktası pipeline sağlığı ve sistem davranışıdır. Veri kalitesini sistem performansıyla bir bütün olarak ele alıp, davranış odaklı bir gözlemlenebilirlik altyapısı kurarak “veri platformuna duyulan güveni” bir KPI olarak yönetiyorlar.</p><p>Bu devlerin ortak kuralı basittir: Kalite kontrolünden geçmeyen veri, asla rapora veya üretim ortamına sızamaz.</p><p><strong>5. Sessiz Veri Bozulması (Silent Data Corruption) Tehlikesi</strong></p><p>Bir veri mühendisinin en büyük kabusu, her şey yolunda görünürken verinin derinden bozulması ve bu hatanın aylar sonra fark edilmesidir. “Sessiz Veri Bozulması” riskini yönetmek için bazı kontroller <strong>kritik (critical)</strong> olarak işaretlenmelidir.</p><p>Özellikle Primary Key (PK) kontrolleri (Null veya Duplicate kontrolü) bir tablonun tüm bütünlüğünü temsil eder. Eğer bir PK null geliyorsa veya mükerrer kayıt oluşmuşsa, o veri seti artık tamamen güvenilmezdir. Modern bir mimaride bu tür bir hata tespit edildiği an, bozuk verinin “Gold” (Yayın) katmanına sızmasını engellemek için süreç derhal durdurulmalıdır (<strong>stop-pipeline</strong>). Hatalı veriyi raporlara taşımaya devam etmek, bir şirketin en büyük sermayesi olan “veriye güveni” kalıcı olarak zedelemektir.</p><p><strong>Sonuç: Veriye Güvenmek Bir Tercih mi, Bir Zorunluluk mu?</strong></p><p>Günümüzde veri platformlarına duyulan güven, bir şirketin bilançosunda görünmeyen en büyük sermayesidir. Veri kalitesi sadece teknik bir kontrol listesi değil; organizasyonun tamamını yanlış kararlardan koruyan bir kalkan, başlı başına bir <strong>veri ürünüdür.</strong> Otomatikleştirilmiş, iş kurallarıyla harmanlanmış ve sürekli izlenen bir yapı kurmak artık bir lüks değil, rekabetin ön koşuludur.</p><p>Şu soruyu kendinize sormanızı istiyorum:</p><p><strong>Şu an kullandığınız en kritik dashboard’un altındaki veriye gerçekten %100 güveniyor musunuz, yoksa sadece öyle olduğunu mu umuyorsunuz?</strong></p><p>Teşekkürler :)</p><p><a href="https://www.linkedin.com/in/suleakcay/">https://www.linkedin.com/in/suleakcay/</a></p><p>kaynaklar:</p><ul><li><a href="https://lakefs.io/data-quality/data-quality-tools/">12 Best Data Quality Tools for 2025</a></li><li><a href="https://leonidasgorgo.medium.com/detailed-explanation-of-data-quality-05d61796c047">Detailed Explanation of Data Quality</a></li></ul><p><a href="https://medium.com/data-science/what-is-data-quality-f2c0274a6404">https://medium.com/data-science/what-is-data-quality-f2c0274a6404</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=406da6cd5b69" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modern Veri Mühendisliği Hakkında Sizi Şaşırtacak 5 Gerçek]]></title>
            <link>https://suleakcaycs.medium.com/modern-veri-m%C3%BChendisli%C4%9Fi-hakk%C4%B1nda-sizi-%C5%9Fa%C5%9F%C4%B1rtacak-5-ger%C3%A7ek-e48c96bb5578?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/e48c96bb5578</guid>
            <category><![CDATA[big-data]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-lakehouse]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Wed, 14 Jan 2026 09:16:24 GMT</pubDate>
            <atom:updated>2026-01-14T09:16:24.917Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Giriş</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*QmKOVrECNyPkyxWhvPz-cA.png" /></figure><p>Herhangi bir veri mühendisine iş akışını çizmesini isterseniz, size muhtemelen oklarla birbirine bağlı düzgün kutucuklardan oluşan bir diyagram çizecektir. Ancak hepimiz biliriz ki gerçek, bundan çok daha karmaşıktır. Gece 3&#39;te bir pipeline çöktüğünde, bunun nedeni nadiren o düzgün kutucuklardan birinin bozulmasıdır; asıl sebep, verinin karmaşık ve döngüsel gerçeğinin kendini dayatmasıdır.</p><p>Bu yazıda, veri mühendisliği yaşam döngüsü hakkındaki yaygın varsayımlara meydan okuyan beş şaşırtıcı ve etkili gerçeği ortaya çıkaracağız. Bu gerçekler, modern veri sistemlerinin nasıl çalıştığını ve başarılı veri mühendislerinin neden sadece araçları değil, aynı zamanda bu işin temelindeki prensipleri de anlaması gerektiğini gösteriyor.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xh_40EPyTdcFC-h1ocpYYg.png" /></figure><p><strong>1. Veri Yaşam Döngüsü Düz Bir Çizgi Değil, Dağınık Bir Döngüdür</strong></p><p>Veri mühendisliği yaşam döngüsü genellikle</p><p>Üretim -&gt; Depolama -&gt; Alım -&gt; Dönüşüm -&gt; Sunum</p><p>şeklinde düzenli ve doğrusal bir akış olarak tasvir edilir. Bu model, süreci anlamak için yararlı bir başlangıç noktası olsa da, sahadaki gerçekliği tam olarak yansıtmaz.</p><p>Gerçekte, orta aşamalar olan depolama, alım ve dönüşüm biraz “dağınık” olabilir. Bu aşamalar kendilerini tekrar edebilir, sırasız gerçekleşebilir veya beklenmedik şekillerde iç içe geçebilir. Bu zihniyet, sizi kırılgan pipeline’lar inşa etmekten kurtarır. İdempotent görevler ve verinin sırasız gelmesini tolere edebilen sistemler kurmanızı teşvik eder ki bu bir istisna değil, gerçek dünyanın bir senaryosudur.</p><p><strong>2. Depolama Bir Adım Değil, Üzerinde Yürüdüğünüz Zemindir</strong></p><p>Depolama, genellikle yaşam döngüsündeki ayrı bir aşama olarak görülür; verinin bir sonraki adıma geçmeden önce durduğu bir istasyon gibidir. Ancak bu bakış açısı eksiktir. Depolamayı, yaşam döngüsünün diğer tüm aşamalarını destekleyen temel bir zemin olarak görmek gerekir. Zira “veri baştan sona akarken yaşam döngüsü boyunca depolama gerçekleşir.”</p><p>Bu perspektif değişikliği kritik öneme sahiptir, çünkü depolama teknolojisi seçimi, veri alımından dönüşüm yeteneklerine ve verinin nihai olarak nasıl sunulup kullanılacağına kadar her şeyi etkiler. Modern bulut veri ambarları gibi sistemler, geleneksel sınırları bulanıklaştırarak aynı anda veri depolayabilir, işleyebilir ve sunabilir.</p><p><strong>3. “Ters ETL”: Artık Bir Antipattern Değil, Modern Bir Gereklilik</strong></p><p>Ters ETL (Reverse ETL), yaşam döngüsünün çıkış tarafından işlenmiş veriyi alıp CRM veya SaaS platformları gibi kaynak sistemlere geri besleme sürecidir. Bu akış bir zamanlar bir “antipattern” olarak görülüyordu ve konuşulmasından pek hoşlanılmayan bir pratikti.</p><p>Ancak bugün, bu süreç faydalı ve genellikle gerekli bir akış olarak benimsenmektedir. Örneğin, bir veri ambarından hesaplanan metrikleri bir CRM sistemine veya Google Ads gibi bir reklam platformuna aktarmak, Ters ETL’in güçlü bir kullanım alanıdır. Bu gelişme, analitik ve makine öğrenmesi modellerinden elde edilen içgörülerin, insanların her gün kullandığı iş araçlarında doğrudan operasyonel hale getirilmesine olanak tanıyarak döngüyü kapatır ve veri ambarının değerini artırır.</p><p><strong>4. Veri Mühendisliği “Kurumsallaşıyor”: Eski Kurallar Yeni Süper Gücünüz Oluyor</strong></p><p>Veri araçları basitleştikçe ve soyutlama seviyesi arttıkça, veri mühendisliğinin odağı “değer zincirinde yukarıya” kaymaktadır. Modern araçlar düşük seviyeli karmaşıklığı soyutladığı için, odak noktamız da değişmek <em>zorunda</em>. Artık sadece altyapı yönetmiyoruz; veri kalitesinin, yönetişimin ve güvenin koruyucuları olmak için gereken zaman ve sorumluluğa sahibiz.</p><p>Veri yönetimi, veri yönetişimi, ana veri yönetimi (MDM) ve veri kalitesi gibi geleneksel “eski usul” kurumsal pratikler, artık her ölçekteki şirketteki veri mühendisleri için kritik hale gelmektedir.</p><p>“Eski olan yine yeni.”</p><p>Onlarca yıldır büyük kurumlarda uygulanan veri yönetimi prensipleri, şimdi bulut tabanlı modern veri yığınlarının temel taşı haline geliyor. Bu olgunlaşma, alanın sadece teknolojiye odaklanmaktan çıkıp veri varlıklarından güven, kalite ve uzun vadeli değer oluşturmaya yöneldiğini gösteren pozitif bir gelişmedir.</p><p><strong>5. Gerçek Soru “Batch mi, Streaming mi?” Değil, “Neden Streaming?”</strong></p><p>“Streaming-first” (öncelikli akış) yaklaşımı modern ve çekici olsa da, her zaman doğru seçim değildir. Ancak bu tartışmaya daha stratejik bir açıdan bakmak gerekir: uğraştığımız neredeyse tüm veriler doğası gereği akış halindedir ve yığın (batch) işleme, bu akışı büyük parçalar halinde ele almanın “özelleşmiş ve kullanışlı bir yoludur.”</p><p>Buradaki pratik tavsiye nettir: gerçek zamanlı akış (streaming) mimarisini, yalnızca daha basit bir yığın yaklaşımına kıyasla getireceği ek zaman, para, bakım, kesinti süresi ve fırsat maliyetini haklı çıkaran net bir iş senaryosu belirledikten sonra benimsemelisiniz. Bu, mühendisleri en yeni teknolojiyi sırf popüler olduğu için benimsemek yerine, pragmatik ve iş odaklı mimari kararlar almaya teşvik eden değerli bir derstir.</p><p><strong>Sonuç</strong></p><p>Bu gerçekler, modern veri mühendisliğinin artık katı süreçler yerine akışkan bir yaşam döngüsünü yönetmek olduğunu gösteriyor; burada depolama temel bir katmandır, operasyonel sistemlere geri besleme kritik bir döngüdür ve eski kurumsal bilgelik en büyük rekabet avantajımızdır. Güvenlik, yönetişim ve sağlam yazılım mühendisliği gibi temel prensipler bu yaklaşımı destekler.</p><p>Araçlar karmaşıklığı soyutlamaya devam ettikçe, şu soruyu düşünmekte fayda var: <strong>Yeni nesil büyük veri mühendislerini hangi yeni beceriler tanımlayacak?</strong></p><p>Teşekkürler :)</p><h4>kaynak:</h4><p>Fundamentals of Data Engineering Book</p><p><a href="https://www.linkedin.com/in/suleakcay/">https://www.linkedin.com/in/suleakcay/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e48c96bb5578" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veri Mühendisliğinin Ezber Bozan 4 Gerçeği]]></title>
            <link>https://suleakcaycs.medium.com/veri-m%C3%BChendisli%C4%9Finin-ezber-bozan-4-ger%C3%A7e%C4%9Fi-ba4cb6d8fadb?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/ba4cb6d8fadb</guid>
            <category><![CDATA[data-engineer]]></category>
            <category><![CDATA[big-data]]></category>
            <category><![CDATA[data]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Mon, 12 Jan 2026 10:33:44 GMT</pubDate>
            <atom:updated>2026-01-12T10:33:44.342Z</atom:updated>
            <content:encoded><![CDATA[<p>Veri mühendisliği dünyası, ilk bakışta veriyi A noktasından B noktasına taşımak gibi basit bir iş gibi görünebilir. Veri boru hatları (pipeline) kurmak, sistemleri entegre etmek ve verinin akışını sağlamak, bu disiplinin temelini oluşturur. Ancak bu yüzeyin altında, alanı yeniden şekillendiren şaşırtıcı ve çoğu zaman sezgilere aykırı prensipler yatar. Bu prensipler, veri sistemleri hakkındaki yaygın varsayımlarımıza meydan okur.</p><p>Bu yazıda, veri mühendisliğinin bu derinliklerine inecek ve en tecrübeli profesyonelleri bile şaşırtabilecek birkaç önemli gerçeği ortaya çıkaracağız. Bu kavramlar, sadece teknik birer detay olmanın ötesinde, daha dayanıklı, ölçeklenebilir ve etkili veri sistemleri kurmanın anahtarını sunuyor.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*fglVoqZmW54l5xXtUmpNOg.png" /></figure><h4>1. En Büyük Risk: Kaynak Sistemlerin “Başkasının Sorunu” Olduğuna İnanmak</h4><p>Veri mühendisleri arasında yaygın olan tehlikeli bir varsayım vardır: kaynak sistemlerin yönetimi ve sağlığı, kendi sorumluluk alanlarının dışındadır. Bu zihniyet, çoğu zaman başarısızlığa giden bir yoldur. Çünkü veri akışının ilerleyen aşamalarındaki tüm çalışmaların kalitesi ve başarısı, tamamen kaynağı anlamaya bağlıdır.</p><p>Bu noktada diplomasi, iletişim ve kaynak sistemleri yöneten yazılım mühendisleri ve uygulama geliştiricileriyle iş birliği yapmak, genellikle hafife alınan ancak kritik öneme sahip becerilerdir. Veri üreticileri ve tüketicileri arasındaki beklentileri yönetmek ve olası sorunları en başından önlemek için “veri sözleşmesi” (data contract) gibi resmi anlaşmalar yapmak, en iyi uygulamalardan biridir. Bu işbirliği, yalnızca riskleri azaltmakla kalmaz, aynı zamanda daha kaliteli veriye, daha başarılı sonuçlara ve nihayetinde daha iyi veri ürünlerine giden yolu açar.</p><p>Veri mühendisleri, kaynak sistemlere “başkasının sorunu” gibi davranma eğilimindedir — bunu yaparsanız başınız belaya girer! Kaynak sistemleri kötüye kullanan veri mühendisleri, üretim sistemi çöktüğünde kendilerine başka bir iş aramak zorunda kalabilirler.</p><h4>2. “NoSQL” Devrimi Neredeyse Kazara İsimlendirildi</h4><p>“NoSQL” terimi, kulağa resmi ve iyi tanımlanmış bir standart gibi gelse de aslında geleneksel ilişkisel modeli terk eden çok çeşitli veritabanları için kullanılan oldukça belirsiz bir şemsiye terimdir. Bu ismin kökeni ise veri dünyasındaki inovasyonun ne kadar organik ve plansız gelişebileceğinin en iyi örneklerinden biridir.</p><p>Terimin modern kullanımı, 2000&#39;lerde Eric Evans tarafından popülerleştirilmiştir. Evans’ın anlattığına göre, bir meetup (toplantı) için isim aranırken IRC (İnternet Aktarmalı Sohbet) üzerinden “hiç düşünmeden” önerdiği birkaç isimden biri “NoSQL” idi. Bu rastgele öneri, kısa sürede tüm bir teknoloji kategorisinin adı haline geldi. Bu anekdot, veri alanındaki yeniliklerin genellikle katı bir şekilde planlanmak yerine, ihtiyaçlar doğrultusunda dağınık ve doğal bir şekilde geliştiğini gösterir. Bu ismin belirsizliği, başlangıçta bir eksiklik gibi görünse de, aslında alanın en büyük gücü haline geldi. İlişkisel olmayan her türlü veri depolama çözümüne kapı açarak doküman, graf, anahtar-değer ve zaman serisi gibi sayısız özel veritabanının doğmasına ve veri mimarilerinde bir “Kambriyen patlaması” yaşanmasına olanak tanıdı.</p><p>Johan [Oskarsson] ilk meetup fikrini ortaya attığında, aklında Büyük Veri ve doğrusal olarak ölçeklenebilir dağıtık sistemler var gibiydi, ancak isim o kadar belirsizdi ki, kelimenin tam anlamıyla veri depolayan ve bir RDBMS (İlişkisel Veritabanı Yönetim Sistemi) olmayan her şey için sunum başvurularına kapı açtı.</p><h4>3. Kritik Fark: “Mesaj” Kaybolur, “Akış” Hatırlar</h4><p>Teknik tartışmalarda “mesaj kuyruğu” (message queue) ve “olay akış platformu” (event-streaming platform) terimleri sık sık birbirinin yerine kullanılır, ancak bu ikisi arasında temel bir fark vardır. Bu farkı anlamak, doğru aracı doğru görev için seçmenin anahtarıdır.</p><p><strong>Mesaj</strong>, bir yayıncıdan bir tüketiciye gönderilen tekil bir veri parçasıdır.</p><p>En temel özelliği şudur: mesaj teslim edilip onaylandıktan sonra kuyruktan <em>kaldırılır</em>. Bu, onu anlık ve geçici iletişim kanalları için ideal hale getirir. Örneğin, bir IoT cihazından gelen sıcaklık verisini işleyip bir eylemi tetiklemek için kullanılabilir.</p><p>Buna karşılık <strong>akış</strong>, olay kayıtlarının sıralı ve yalnızca sona ekleme (append-only) yapılabilen bir günlüğüdür (log). Onun en temel özelliği ise kayıtların uzun bir süre <em>saklanmasıdır</em>. Bu kalıcılık, tüketicilerin geçmişteki olayları yeniden oynatmasına (replay) veya zaman içindeki veriler üzerinde karmaşık analizler yapmasına olanak tanır. Akışlar, olayların bir geçmişini oluşturur ve bu geçmişin kendisi değerlidir.</p><p>Sonuç olarak, bu ayrım kritik öneme sahiptir. Eğer basit, geçici bir iletişim kanalına ihtiyacınız varsa mesaj kuyruğu yeterlidir. Ancak olayların dayanıklı ve analiz edilebilir bir geçmişini oluşturmak istiyorsanız, bir olay akış platformu doğru seçimdir.</p><h4>4. Paradoks: Modern Veritabanları Neden Bazen “Tutarsız” Olacak Şekilde Tasarlanır?</h4><p>Veritabanlarından geleneksel beklentimiz, her zaman mükemmel bir şekilde tutarlı olmalarıdır. İlişkisel veritabanlarının ACID (Atomicity, Consistency, Isolation, Durability — Atomiklik, Tutarlılık, İzolasyon, Dayanıklılık) garantileri bu beklentiyi karşılamak üzere tasarlanmıştır. Tutarlılık, bir veriye yapılan her okuma işleminin, o verinin en son yazılmış versiyonunu döndürmesini garanti eder.</p><p>Ancak birçok modern NoSQL veritabanı, bu katı tutarlılık kurallarını <em>kasıtlı olarak</em> esnetir. Bu yaklaşımın adı “nihai tutarlılık” (eventual consistency) olarak bilinir ve temelde büyük ölçekli dağıtık sistemlerin getirdiği zorluklara bir yanıttır. Verinin birden çok sunucuya veya coğrafi bölgeye yayıldığı bu tür sistemlerde, her bir kopyayı anlık olarak mükemmel bir şekilde senkronize tutmak neredeyse imkansız ve aşırı maliyetlidir. Nihai tutarlılık, bu imkansızlığa karşı tasarlanmış akıllıca bir ödünleşimdir.</p><p>Bunu bir hata olarak değil, bilinçli bir trade-off olarak düşünmek gerekir. Bilginin gerçek dünyada yayılmasına benzetilebilir: bir haberin herkese ulaşması zaman alır, ancak sonunda herkes aynı mesajı alır. Bu model, sosyal medya akışları veya anlık ve mükemmel tutarlılıktan ziyade ölçek ve erişilebilirliğin daha kritik olduğu IoT verileri gibi kullanım durumları için mükemmeldir. Nihai tutarlılık, sistemin genelinin yüksek performansta ve kesintisiz çalışmasını sağlar.</p><h4>Sonuç: Veri Mühendisinin Gelişen Rolü</h4><p>Bu örneklerin de gösterdiği gibi, veri mühendisliği artık veriyi bir yerden bir yere taşıyan basit bir “tesisatçılık” görevinin çok ötesine geçmiştir. Bu alan artık mimari ödünleşimlerin, farklı teknolojilerin inceliklerinin ve insan iş birliğinin derinlemesine anlaşılmasını gerektiriyor; hatta analitik sistemlerdeki veriyi tekrar operasyonel CRM sistemlerine besleyen “ters ETL” (reverse ETL) akışları gibi yeni köprüler kurmayı zorunlu kılıyor. Kaynak sistemlerin dinamiklerini anlamaktan, teknolojilerin arkasındaki felsefeyi kavramaya kadar, modern veri mühendisi hem bir teknoloji uzmanı hem de bir stratejist olmalıdır. Bu gerçekler, alanın ne kadar karmaşık ve heyecan verici bir hale geldiğinin kanıtıdır.</p><p>Öyleyse kendimize şu soruyu sormalıyız:</p><p>Otomasyon, veri taşıma gibi temel görevleri basitleştirdikçe, yeni neslin harika veri mühendislerini gerçekten ne gibi beceriler tanımlayacak?</p><p>Teşekkürler :)</p><p>Bir sonraki yazımda görüşmek üzere,</p><p>kaynak:</p><p>Fundamentals of Data Engineering Book</p><p><a href="https://www.linkedin.com/in/suleakcay/">https://www.linkedin.com/in/suleakcay/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ba4cb6d8fadb" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Behind the Scenes of the Data World: 5 Surprising Facts About Data Engineering]]></title>
            <link>https://suleakcaycs.medium.com/behind-the-scenes-of-the-data-world-5-surprising-facts-about-data-engineering-7a93de84972f?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/7a93de84972f</guid>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[big-data]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Fri, 09 Jan 2026 20:21:38 GMT</pubDate>
            <atom:updated>2026-01-09T20:21:38.664Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*top1HBKVNMg_Vn1cQT8n-Q.png" /></figure><p>If you work in data or technology, you have probably noticed how often the term <strong>data engineering</strong> is mentioned today. In the past, it stayed in the shadow of data science, but now it has become a star on its own. However, many people are still confused about what data engineering really means and what a data engineer actually does. This field is often very different from what people imagine and includes many surprising facts. In this article, we look behind the scenes of data engineering and share five important truths. Let’s begin.</p><h3>1. The “Big Data” Trend Is Over — The Focus Has Changed</h3><p>In the mid-2010s, there was a popular buzzword in technology: <strong>Big Data</strong>. Companies invested heavily in complex tools like Hadoop to manage large amounts of data. Google Trends shows that interest in this term reached its peak at that time and then started to decline.</p><p>So, what changed? The answer is simple: <strong>simplicity</strong>. Companies moved away from complex and expensive systems and started to use simpler, managed, and easier solutions. Managing big data platforms required a lot of money and effort. Engineers spent too much time maintaining systems instead of creating value. Today, working with large data is much easier, so the term “big data” is no longer special. Big data engineers now simply call themselves <strong>data engineers</strong>. The main goal is no longer the size of data, but how to turn data into business value.</p><p>This idea is well described by a famous quote from Dan Ariely:</p><blockquote><em>“Big data is like teenage sex: everyone talks about it, nobody really knows how to do it, everyone thinks everyone else is doing it, so everyone claims they are doing it.”</em></blockquote><h3>2. Data Scientists Spend 80% of Their Time Not Doing Data Science</h3><p>Here is a surprising fact: data scientists spend <strong>70–80% of their time</strong> not on machine learning or deep analysis, but on collecting, cleaning, and preparing data. It is like a chef spending most of the time cleaning the kitchen instead of cooking.</p><p>This situation is explained by <strong>Monica Rogati’s Data Science Hierarchy of Needs</strong>. At the bottom of this hierarchy are tasks like collecting, storing, moving, and transforming data. This is exactly where <strong>data engineering</strong> becomes important. Data engineers build and manage this foundation so data scientists can focus on more valuable work.</p><p>In an ideal setup, thanks to strong data engineering, data scientists can spend most of their time on analysis, experiments, and machine learning. This shows that behind impressive AI projects, there is usually invisible but critical data engineering work.</p><h3>3. The Unexpected Comeback of SQL</h3><p>At the beginning of the big data era, technologies like MapReduce became popular, and SQL was seen as an old language from the 1970s that would disappear. But the opposite happened. SQL made a strong comeback and became the <strong>common language</strong> of the data world again.</p><p>With tools like Spark SQL, Google BigQuery, and Snowflake, SQL is now very powerful and can handle huge datasets efficiently. Today, a good data engineer is expected to know SQL very well and use it in almost every stage of the data pipeline.</p><p>Of course, SQL is not the solution for everything. For example, Python is better for complex text processing. But when it comes to team productivity and simplicity, SQL is still essential.</p><h3>4. The Most Important Skill May Not Be Technical</h3><p>If you think a data engineer’s success depends only on skills like SQL, Python, or cloud tools, that is not completely true. Technical skills are necessary, but what really makes a difference is <strong>non-technical skills</strong>.</p><p>Communication, understanding business needs, working well with different teams, controlling costs, and continuous learning are just as important as writing code. A data engineer who does not understand business goals may build technically perfect systems that are not useful.</p><p>This idea is clearly explained in the following statement:</p><blockquote><em>“The success of data teams often depends on communication with other stakeholders; success or failure is rarely about technology.”</em></blockquote><h3>5. The Road to AI Starts with a Strong Data Foundation</h3><p>Many companies want to jump directly into machine learning and artificial intelligence. But this is like trying to build a skyscraper without a foundation. There is a concept called the <strong>Data Maturity Model</strong>. Companies should first build basic data systems, then scale them, and only after that use data to lead and innovate.</p><p>When companies skip these steps, AI projects often fail. They do not have high-quality data or a stable infrastructure to run models in production. This problem is so common that some professionals jokingly call themselves “survivors of data science.” This clearly shows that the path to AI always goes through strong and well-built data engineering.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*u3TVNNalBhtMT7LioGSz8Q.png" /></figure><h3>Conclusion</h3><p>As you can see, data engineering is much more than code and databases. The end of the big data hype, its role in unlocking the real power of data science, the comeback of SQL, the importance of soft skills, and its key role in AI success all show one thing clearly: <strong>data engineering is the invisible but essential foundation of the modern data world</strong>.</p><p>Thank you :)</p><p>source:</p><p>Fundamentals of Data Engineering Book</p><p><a href="https://www.linkedin.com/in/suleakcay/">https://www.linkedin.com/in/suleakcay/</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=7a93de84972f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veri Bataklıklarından Kurtuluş Reçetesi: Apache Iceberg ile Lakehouse Mimarilerinde Yeni Bir Çağ]]></title>
            <link>https://suleakcaycs.medium.com/veri-batakl%C4%B1klar%C4%B1ndan-kurtulu%C5%9F-re%C3%A7etesi-apache-iceberg-ile-lakehouse-mimarilerinde-yeni-bir-%C3%A7a%C4%9F-6ae806d2d125?source=rss-343a5862e17e------2</link>
            <guid isPermaLink="false">https://medium.com/p/6ae806d2d125</guid>
            <category><![CDATA[apache-iceberg]]></category>
            <category><![CDATA[big-data]]></category>
            <category><![CDATA[data-lakehouse]]></category>
            <dc:creator><![CDATA[Şule Akçay]]></dc:creator>
            <pubDate>Thu, 08 Jan 2026 18:49:20 GMT</pubDate>
            <atom:updated>2026-01-08T18:49:20.737Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uiQ3IcMEEG9OGWnjLQpPcg.png" /></figure><p>Birçok ekip belkide data lake yatırımı yaptı; altyapı kuruldu, veriler akmaya başladı.<br> Başlangıçta her şey yolundaydı: depolama maliyetleri düşüktü, veri hacmi büyüyordu ve esneklik yüksekti.</p><p>Ancak sistemler ölçeklendikçe şu sorular kaçınılmaz hale geldi:</p><ul><li>Aynı tabloya eşzamanlı yazımlar nasıl yönetilmeli?</li><li>Hatalı bir yükleme sonrası güvenli bir geri dönüş mümkün mü?</li><li>Veri büyüdükçe sorgu performansı neden öngörülemez hale geliyor?</li><li>Fiziksel klasör yapısı mı tabloyu tanımlar, yoksa tablo soyut bir kavram mı olmalı?</li></ul><p>Bu sorular, tekil problemler değil;<br> <strong>geleneksel Data Lake mimarilerinin büyüme ve üretim yüklerine dayanıklı olmadığının göstergesidir.</strong></p><p>Lakehouse yaklaşımı ve Apache Iceberg, tam olarak bu kırılma noktasında ortaya çıkar:<br> Veri göllerine güvenilirlik, tutarlılık ve sürdürülebilirlik kazandırmak için.</p><h3><strong>Data Warehouse ve Data Lake Neden Tek Başına Yetmedi?</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*x2a5roeCYwkDrUn3iWTZOQ.png" /></figure><p><strong>Data Warehouse</strong> dünyası düzenlidir.<br>ACID vardır, SQL güçlüdür, raporlar tutarlıdır.<br>Ama esnek değildir. Yeni veri türleri, büyük hacimler ve ML iş yükleri için pahalı ve yavaştır.</p><p><strong>Data Lake</strong> ise özgürdür.<br> Ham veri saklanır, her şey mümkündür.<br> Ama kurallar yoktur. Zamanla dosya yığınları artar, performans düşer, güven kaybolur.</p><h4><strong>Gerçek ihtiyaç şuydu:</strong></h4><p><strong><em>Warehouse güvenilirliği + Lake esnekliği</em></strong></p><h4>Bu ihtiyacın mimari karşılığı: <strong>Lakehouse</strong></h4><h3><strong>Iceberg Ne Yapar? Aslında Çok Basit Bir Şey</strong></h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*02m-YQlZNkN-hoilwcN-sA.png" /></figure><h4>Apache Iceberg’in getirdiği temel fikir şudur:</h4><p>Tabloyu dosya dizininden ayır.</p><p>Iceberg’de:</p><p>Tablo = metadata</p><p>Dosyalar = sadece veri parçaları</p><p>Gerçek tablo durumu = snapshot</p><p>Yani artık:</p><p>Klasör silinmez</p><p>Dosyaya “doğrudan” yazılmaz</p><p>Her değişiklik kontrollü ve izlenebilir olur</p><p>Bu tek karar, onlarca problemi aynı anda çözer.</p><h3><strong>Atomic Commit: “Ya Hep Ya Hiç”</strong></h3><p>Iceberg’de yazma işlemi şu şekilde çalışır:</p><p>Yeni veri dosyaları yazılır</p><p>Yeni manifest’ler oluşturulur</p><p>Yeni metadata dosyası hazırlanır</p><p>Tek bir atomic commit ile tablo güncellenir</p><p>Bu sayede:</p><p>Yarım yazılmış tablo olmaz</p><p>Concurrent write güvenlidir</p><p>Okuyanlar ya eskiyi ya yeniyi görür</p><p>Bu davranış, klasik Data Lake’lerde yoktur.</p><h3>Okuma Performansı: Iceberg Neden Daha Hızlı?</h3><p>Iceberg “her dosyaya bakmaz”.</p><p>Metadata katmanında:</p><p>Hangi dosyada hangi değerler var</p><p>Min / max istatistikleri</p><p>Partition bilgisi</p><p>saklanır.</p><h4>Sonuç:</h4><p>Gereksiz dosyalar hiç okunmaz</p><p>I/O dramatik şekilde azalır</p><p>Büyük tablolar bile hızlı sorgulanır</p><p>Bu, özellikle Spark / Trino / Flink gibi motorlarda fark edilir.</p><h3>Gizli Bölümleme (Hidden Partitioning)</h3><p>Iceberg’in en sevilen özelliklerinden biri.</p><p>Kullanıcı şunu yazar:</p><pre>SELECT *<br>FROM events<br>WHERE event_ts BETWEEN &#39;2025-05-01&#39; AND &#39;2025-05-07&#39;</pre><p><strong>Ama arkada:</strong></p><p>event_ts → day(event_ts)</p><p>Fiziksel partition otomatik bulunur</p><p>Kullanıcı partition mantığını bilmez</p><p><strong>Avantaj:</strong></p><p>Partition stratejisi değiştirilebilir</p><p>Eski sorgular bozulmaz</p><p>“Yanlış partition yazdık” kabusu biter</p><h3>Schema Evolution: Kırılmadan Değişmek</h3><p>Iceberg’de:</p><p>Kolon isimleri değil ID’ler takip edilir</p><p>Şema değişiklikleri metadata seviyesindedir</p><p><strong>Yapılabilenler:</strong></p><p>ADD COLUMN</p><p>DROP COLUMN</p><p>RENAME COLUMN</p><p>TYPE WIDENING (int → long)</p><p><strong>Üstelik:</strong></p><p>Veri yeniden yazılmadan</p><p>Okuyan işler bozulmadan</p><p>Bu, üretim ortamında büyük bir konfor sağlar.</p><h3>Time Travel: Geçmişe Dönebilmek</h3><p>Her commit bir snapshot demektir.</p><p>Iceberg sayesinde:</p><ul><li>“Dünkü tabloyu” okuyabilirsin</li><li>Hatalı update’i geri alabilirsin</li><li>ML eğitiminde geçmiş veriyle çalışabilirsin</li></ul><p>Örnek:</p><pre>SELECT *<br>FROM products<br>FOR TIMESTAMP AS OF &#39;2025-05-20 10:00:00&#39;</pre><p>Bu özellik, sadece hata kurtarma değil:</p><p>Denetim</p><p>Test</p><p>Analiz</p><p>Güven</p><p>demektir.</p><h3>Bakım Yoksa Performans da Yok</h3><p>Iceberg “kur ve unut” değildir.</p><p>Düzenli olarak:</p><ul><li>Snapshot expire</li><li>Orphan file temizliği</li><li>Data compaction</li><li>Manifest rewrite</li></ul><p>yapılmalıdır.</p><p>Ama fark şu:</p><blockquote><em>Bu işlemler </em><strong><em>kontrollü</em></strong><em>, </em><strong><em>güvenli</em></strong><em> ve </em><strong><em>standarttır</em></strong><em>.</em></blockquote><h3>Neden Apache Iceberg Önemli?</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*lxkIUN_Oc1lVl30SLkhRuQ.png" /></figure><p>Apache Iceberg’in asıl değeri, yeni bir teknoloji sunmasından değil;<br> <strong>veri göllerinde yıllardır çözülemeyen problemleri kalıcı şekilde ele almasından</strong> gelir.</p><p>Iceberg ile birlikte:</p><ul><li>Veri artık dosya yığınları değil, <strong>kontrollü tablolar</strong> olarak yönetilir</li><li>Okuma ve yazma işlemleri <strong>öngörülebilir ve güvenilir</strong> hale gelir</li><li>Performans, veri büyüdükçe düşen değil <strong>ölçeklenen</strong> bir karakter kazanır</li><li>Şema değişiklikleri riskli operasyonlar olmaktan çıkar</li><li>Hatalar geri döndürülebilir, geçmiş her zaman erişilebilirdir</li></ul><h4>En kritik nokta ise şudur:</h4><blockquote><em>Iceberg, veri gölünü “saklanan veri alanı” olmaktan çıkarır,<br> </em><strong><em>üzerine güvenle analitik, raporlama ve makine öğrenmesi inşa edilebilen bir platforma dönüştürür</em></strong></blockquote><p>Bugün modern veri mimarilerinde aranan şey;<br> daha fazla araç değil, <strong>daha az belirsizliktir</strong>.</p><p>Apache Iceberg tam olarak bunu sağlar.</p><p>Veri platformlarını büyüten şey hacim değil,<br> <strong>üzerinde güvenle karar alınabilen veri</strong>dir.</p><p>Kaynakça :</p><p>Kasun Indrasiri</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6ae806d2d125" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>