Skip to main content

> MÜHENDİSLİK KÜTÜPHANESİ // SÜRÜM 1.0

10 Mühendislik Kılavuzu

Matematiksel Uzlaşma İspatları, Sıfır-Kopyalama I/O, Çift-Yazma Önleme ve Dağıtık İşlemler

CHAPTER 01
18 min read

CAP Teoremi, PACELC Ödünleşimleri & Resmi Tutarlılık Modelleri

Dağıtık uzlaşmanın derin matematiksel temelleri: Brewer’ın CAP teoremi, Abadi’nin PACELC sınıflandırması ve Lineerleştirilebilirlikten Nihai Tutarlılığa uzanan tutarlılık modelleri hiyerarşisi.

CAP TheoremPACELC TheoremLinearizabilitySequential ConsistencyEventual Consistency
📜 Eric Brewer (2000) / Daniel Abadi PACELC (2012)Kılavuzu Oku
CHAPTER 02
22 min read

Raft & Paxos Uzlaşması: Lider Seçimleri, Dönem Epochları & Durum Makinesi Replikasyonu

Resmi olarak doğrulanmış uzlaşma protokollerinin iç mekanizmaları: rastgele seçim zamanlayıcıları, bölünmüş oy önleme, Pre-Vote yoklaması, log eşleme kuralları ve kira tabanlı okuma optimizasyonları.

Raft State MachineMulti-PaxosTerm EpochsPre-Vote ProtocolFencing Tokens
📜 Ongaro & Ousterhout (Raft 2014) / Leslie Lamport (Paxos 1998)Kılavuzu Oku
CHAPTER 03
24 min read

Log-Merkezli Akış: Bölümleme, Sıfır-Kopyalama I/O & Tüketici Grubu Protokolleri

Yüksek verimli dağıtık commit loglarının mimarisi: sıralı disk erişim mekaniği, Linux çekirdeği sendfile() sıfır-kopyalama ağ transferi, bölüm anahtarı hashleme ve kooperatif rebalance.

Commit Log InternalsZero-Copy sendfile()Partition Key HashingCooperative Sticky AssignorKRaft Quorum
📜 Jay Kreps (The Log 2013) / Apache Kafka ArchitectureKılavuzu Oku
CHAPTER 04
20 min read

Transactional Outbox & Change Data Capture (CDC) Mimarisi

Ölümcül dual-write anti-pattern’ini ortadan kaldırma: olayları yerel veritabanı işlemlerinde atomik saklama, Debezium CDC ile Write-Ahead Log (WAL) okuma ve sıfır kaymayla brokerlara aktarma.

Dual-Write EliminationTransactional OutboxChange Data Capture (CDC)PostgreSQL WALDebezium Engine
📜 Chris Richardson (Microservices Patterns) / Debezium SpecificationKılavuzu Oku
CHAPTER 05
21 min read

Saga Desenleri: Orkestrasyon vs Koreografi & Telafi Edici İş Akışları

2PC kilit darboğazları olmaksızın bağımsız mikroservis sınırları arasında uzun süreli dağıtık işlemleri yürütme: dayanıklı durum makineleri, idempotency ve telafi edici işlem ağaçları.

Saga PatternTemporal.io WorkflowsCompensating TransactionsDurable ExecutionState Machine Replay
📜 Hector Garcia-Molina & Kenneth Salem (Sagas 1987)Kılavuzu Oku
CHAPTER 06
25 min read

Çakışmasız Veri Tipleri (CRDT), Vektör Saatleri & Çok-Merkezli Replikasyon

Sıfır-koordinasyonlu yerel yazmalarla çok-bölgeli aktif-aktif veri depoları tasarlama: durum ve işlem tabanlı CRDT’ler, yarı-örgü (semi-lattice) birleşme kuralları ve mezar taşı sıkıştırması.

State-based CvRDTOperation-based CmRDTVector ClocksSemi-Lattice JoinTombstone Garbage Collection
📜 Marc Shapiro et al. (CRDTs 2011) / Leslie Lamport (Clocks 1978)Kılavuzu Oku
CHAPTER 07
19 min read

İdempotency Anahtarları, Exactly-Once Semantiği (EOS) & Çift-Harcama Savunması

Güvenilmez at-least-once dağıtık ağları deterministik effectively-once yürütmeye dönüştürme: doğal tekil kısıtlar, 72 saatlik kayan-pencere tekilleştirme ve işlemsel üretici sınırları.

Idempotency KeysExactly-Once Semantics (EOS)Natural Unique ConstraintsKafka Transaction CoordinatorDouble-Spend Defense
📜 IETF The Idempotency-Key HTTP Header Field / Enterprise Integration PatternsKılavuzu Oku
CHAPTER 08
23 min read

Reaktif Akışlar, Akış Kontrolü & Dinamik Yük Dökme (Load Shedding)

Mikroservisleri basamaklı backpressure çöküşünden koruma: çekme-tabanlı abone talep protokolü (`request(n)`), Little Yasası eşzamanlılık sınırları, TCP Vegas gradyan algoritmaları ve CoDel kuyruk yönetimi.

Reactive StreamsPull BackpressureAdaptive Concurrency LimitsLittle’s LawCoDel Active Queue Management
📜 Reactive Streams Specification / Little’s Law ($L = \lambda W$)Kılavuzu Oku
CHAPTER 09
17 min read

Dağıtık İzleme (Tracing), W3C TraceContext & Nedensel Çizge Yayılımı

Asenkron olay-güdümlü boru hatlarında tam gözlemlenebilirlik: Kafka başlıklarında W3C TraceContext yayılımı, ebeveyn-çocuk span hiyerarşisi ve kuyruk-tabanlı örnekleme (tail sampling).

W3C TraceContextOpenTelemetry SpansKafka Record HeadersCausal Lineage GraphsTail-Based Sampling
📜 W3C Recommendation: Trace Context / Dapper (Google 2010)Kılavuzu Oku
CHAPTER 10
26 min read

Kaos Mühendisliği, Jepsen Bölünme Testleri & Resmi Lineerleştirilebilirlik Doğrulaması

Feci gerçek dünya arızalarında dağıtık sistem güvenliğini deneysel kanıtlama: ağ bölünmesi enjeksiyonu, asimetrik paket düşürme, saat kayması testleri ve otomatik Jepsen / Porcupine doğrulaması.

Chaos MeshJepsen VerificationKnossos & Porcupine CheckersAsymmetric Network PartitionsGame Day Runbooks
📜 Kyle Kingsbury (Jepsen Testing) / Netflix Chaos EngineeringKılavuzu Oku
Yapay Zekâ Özeti & Ajan İşletim Özeti
AEO / GEO / Perplexity Indexable

CAP, PACELC, Raft ve Reaktif Akış standartlarında yüksek verimli dağıtık sistemler kanonu: Dual-write riskini Transactional Outbox ile önleyin, zombi liderleri fencing belirteçleriyle engelleyin ve çekme-tabanlı backpressure ile OOM çökmelerini durdurun.

Teorik StandartlarCAP Theorem (Brewer 2000), PACELC Theorem (Abadi 2012), Raft Consensus (Ongaro & Ousterhout 2014), Event Sourcing & CQRS (Fowler & Young)
Kanonik Metrikler18 Mimari, 24 Arıza Modu, 10 Kılavuz, 22 Dağıtık Teknoloji
Temel GüvencelerSıfır Dual-Write, Monotonik Fencing, Deterministik CRDT Yakınsaması
Ajan DirektifleriDual-write yapma (Outbox kullan); LWW için duvar saatine güvenme; backpressure zorunlu kıl

Dağıtık Sistem Kılavuzları SSS

Linearizability ile Serializability arasındaki temel matematiksel fark nedir?

Serializability çok-işlemli, çok-nesneli bir işlemsel (transactional) güvencedir: eşzamanlı çalışan işlemler grubunun herhangi bir geçerli ardışık sırada çalışmış gibi görünmesini garanti eder ancak gerçek zamanlı duvar saati sıralaması hakkında bir şey söylemez. Linearizability (atomik tutarlılık) ise tek-işlemli, tek-nesneli gerçek zamanlı bir güvencedir: bir işlem gerçek fiziksel zamanda tamamlandığı anda, sonrasında başlayan tüm işlemler küresel olarak o yeni değeri veya daha yenisini görmek zorundadır. Her iki özelliği birden sağlayan sistemlere "Strict Serializable" veya "External Consistent" denir (örn. Google Cloud Spanner).

Transactional Outbox deseni dual-write mutasyon kaymasını matematiksel olarak nasıl ortadan kaldırır?

Basit dual-write anti-pattern’i, uygulama kodunda önce RDBMS güncellemesi yapıp ardından Kafka’ya mesaj göndermeye çalışır. Adımlardan biri çökerse veya zaman aşımına uğrarsa sistem kalıcı olarak tutarsızlaşır. Transactional Outbox deseni, dışarıya gidecek olayı iş varlığıyla TAM OLARAK AYNI yerel veritabanı işleminde (transaction) bir `outbox_events` tablosuna yazar. Atomiklik yerel RDBMS ACID özellikleri ile garanti edilir. Ayrı bir Change Data Capture (CDC) motoru (örn. Debezium), veritabanının Write-Ahead Log (WAL) dosyasını okuyarak olayları en az bir kez teslimat (at-least-once) güvencesiyle Kafka’ya aktarır.

Bir mimari ne zaman RabbitMQ veya NATS JetStream yerine Apache Kafka seçmelidir?

Yeniden oynatılabilir (replayable) kalıcı bir commit loguna, yüksek bölümleme verimliliğine (>100k msg/sn), uzun süreli saklamaya (katmanlı depolama ile sonsuz), tüketici gruplarının geçmişi baştan okuyabilmesine ve bölüm anahtarı başına katı toplam sıralamaya ihtiyaç duyduğunuzda Apache Kafka seçin. Karmaşık AMQP dinamik yönlendirmesi, ayrıntılı işçi kuyruğu paylaşımı ve öncelikli mesajlaşma gerekiyorsa RabbitMQ tercih edin. Milisaniye-altı gecikme, hafif operasyonel yük (tek binary), sıfır JVM maliyeti ve uç/IoT pub/sub için ise NATS JetStream seçin.

Raft nasıl uzlaşma sağlar ve ağ bölünmelerinde split-brain durumunu nasıl kesinlikle engeller?

Raft güvenliği çoğunluk quorumu ($Q = \lfloor N/2 \rfloor + 1$) ile sağlar. Tek sayılı bir kümede (örn. 5 düğüm), herhangi iki 3 düğümlük çoğunluk en az bir ortak düğümde KESİŞMEK ZORUNDADIR. Ağ bölünmesi kümeyi 3 ve 2 düğüm olarak ikiye ayırırsa, yalnızca 3 düğümlük taraf çoğunluğu toplayarak lider seçebilir ve log işleyebilir. 2 düğümlük azınlık tarafı quorum sağlayamaz ($2 < 3$) ve tüm yazma isteklerini reddeder. Ayrıca katı artan dönem (term) numaraları, eski dönemden kalan bir zombi liderin daha yüksek dönemli bir düğümle temas ettiğinde anında liderlikten düşürülmesini sağlar.

Üretim ortamlarında Saga Orkestrasyonu neden Saga Koreografisine göre daha güvenilir ölçeklenir?

Saga Koreografisinde mikroservisler etki alanı olaylarını dinler ve bağımsız olarak yeni olaylar fırlatmaya veya telafi yapmaya karar verir. İş akışı 4 servisi aştığında koreografi; görünmez döngüsel olay kilitlenmelerine, karmaşık dağıtık duruma, imkansız adli gözlemlenebilirliğe ve servis çöktüğünde telafi adımlarının yarım kalmasına yol açar. Saga Orkestrasyonu (Temporal.io veya Cadence kullanarak) iş akışı koordinasyonunu dayanıklı bir durum makinesinde merkezileştirir: orkestratör servisleri doğrudan komuta eder, zaman aşımlarını izler, hata anında telafi işlemlerini deterministik olarak çalıştırır ve yürütme geçmişini düğüm çökmelerine karşı korur.

Çakışmasız Veri Tipleri (CRDT), dağıtık kilitler olmadan çok-merkezli yakınsamayı nasıl başarır?

CRDT’ler soyut cebire dayanır: mutasyonlar, üç matematiksel kuralı sağlayan bir birleştirme operatörüne ($\sqcup$) sahip yarı-örgüler (join-semilattice) olarak modellenir: Değişme Özelliği ($A \sqcup B = B \sqcup A$), Birleşme Özelliği ($(A \sqcup B) \sqcup C = A \sqcup (B \sqcup C)$) ve İdempotency ($A \sqcup A = A$). Durum güncellemelerini uygulama sırası veya tekrar sayısı nihai sonucu değiştirmediği için, çok-bölgeli kopyalar yazma isteklerini sıfır koordinasyon gecikmesiyle yerel olarak kabul edebilir, güncellemeleri asenkron takas edebilir ve tüm güncellemeler ulaştığında matematiksel olarak kesinlikle aynı duruma yakınsar.