İçeriğe geç
Muhammet Şafak
en

Mühendislik

Sözlük

Yazılarda geçen terimlerin kısa tanımları. Her tanım, terimi asıl işleyen yazılara bağlı. (30 terim)

Alarm yorgunluğu

Her şeye alarm kurmanın bedeli: ekip alarmlara güvenmeyi bırakır ve gerçek olanı da görmez. Bir alarm, gecenin üçünde birini uyandırmayı hak edecek kadar aksiyon gerektirmiyorsa alarm değil, gürültüdür.

At-least-once

Bir mesajın en az bir kez teslim edileceği, ama bazen birden çok kez geleceği garantisi. Kayıp yoktur, tekrar vardır. Kuyruklu sistemlerin pratikteki varsayılanı budur; çözüm tekrarı engellemek değil, tüketiciyi tekrara dayanıklı kılmaktır.

İlgili yazılar: Transactional Outbox: Dual-Write, İdempotent Tüketim Idempotency: Aynı Mesaj İki Kez Geldiğinde Dead-Letter Kuyruğunu Daha Kötü Yapmadan Replay Etmek

BFF (Backend for Frontend)

Her istemci tipi için — mobil, web — ayrı bir API katmanı. Tek bir genel amaçlı API'yi her istemcinin ihtiyacına göre şişirmek yerine, her istemcinin kendi şekline uygun ince bir katman koyar.

İlgili yazılar: BFF Pattern: Mobil ve Web İçin Ayrı API Katmanı

Blue-green deployment

İki özdeş üretim ortamı; bir an için yalnızca biri canlı. Yeni sürüm boştakine kurulur, sağlık kontrolünden geçirilir, sonra trafik tek hamlede ona çevrilir. Eski ortam yok edilmez — geri dönüş hedefi olarak sıcak bekler.

Boring architecture

Yeni ve ilginç olanı değil, kanıtlanmış ve anlaşılır olanı seçme tercihi. Amaç heyecan değil, gece üçte kimsenin sürprizle karşılaşmaması; karmaşıklık ancak somut bir problem onu zorunlu kıldığında eklenir.

İlgili yazılar: Neden Boring Architecture'ı Tercih Ediyorum Gereğinden Karmaşık Bir Sistemin Verdiği Sinyaller

Canary release

Yeni sürüme önce trafiğin küçük bir dilimini vermek, hata oranı ve gecikmeyi izlemek, sorun yoksa dilimi büyütmek. Risk tüm kullanıcıya değil küçük bir gruba taşınır; blue-green'in kademeli kardeşi.

Circuit breaker

Bir dış servis sürekli hata vermeye başladığında ona gitmeyi geçici olarak kesen, belirli aralıklarla tekrar deneyen kalıp. Düşen bir bağımlılığın çağıran sistemi de aşağı çekmesini engeller.

İlgili yazılar: Dış Servis Entegrasyonlarında Circuit Breaker Senkron mu Asenkron mu? HTTP ve Kuyruk Arasında Karar

Connection pooling

Veritabanı bağlantılarını her istekte açıp kapatmak yerine havuzda tutup yeniden kullanmak. PHP-FPM gibi per-request modellerde bağlantı kurulum maliyeti kümülatifte ciddidir; pgBouncer'ın `transaction` modu bunu önde absorbe eder.

İlgili yazılar: pgBouncer auth_query ile Çoklu DB Kullanıcısı Laravel Production Stack: Her Bileşen Neden Orada?

CQRS

Okuma ve yazma modellerini ayırmak (Command Query Responsibility Segregation). Okuma ile yazmanın gerçekten farklı şekiller istediği yerde kazandırır; tek bir modelin yettiği yerde iki model ve aralarındaki senkronizasyon yükü kalır.

İlgili yazılar: CQRS: Ne Zaman Gerekli, Ne Zaman Gereksiz Yük? Event-Driven Mimari: Ne Çözer, Neyi Gizler?

Dağıtık trace

Bir isteğin ya da mesajın servisler boyunca yolculuğunun, her adımın zamanlamasıyla birlikte tek bir bağlı resim hâline getirilmesi. Log'lardaki korelasyon kimliği bir iğnedir; trace samanlığın kendisini haritalar.

İlgili yazılar: Polyglot Bir Kuyrukta Dağıtık İzleme

Dead-letter queue (DLQ)

Retry bütçesini tüketip başarısız olan mesajların düştüğü kuyruk. Bir mezarlık değil bekleme alanıdır — ama oradan çıkarmak yüklü bir operasyondur: naif bir replay kuyruğu yeniden zehirler ya da yan etkileri ikinci kez tetikler.

İlgili yazılar: Dead-Letter Kuyruğunu Daha Kötü Yapmadan Replay Etmek Idempotency: Aynı Mesaj İki Kez Geldiğinde

Dual-write

Bir işlemde iki ayrı sisteme yazmak — örneğin veritabanına `INSERT` ve broker'a `publish`. Yerel transaction broker'ı kapsamadığı için aralarında hiçbir atomiklik garantisi yoktur: ya kayıp event ya hayalet event üretir.

İlgili yazılar: Transactional Outbox: Dual-Write, İdempotent Tüketim Ardışık Numara Üretiminde Race Condition ve Gap

Event-driven mimari

Bileşenlerin birbirini doğrudan çağırmak yerine olay yayınlayıp dinlemesi. Gevşek bağ ve bağımsız ölçeklenme kazandırır; karşılığında sıra, tekrar ve nihai tutarlılık problemlerini üstlenirsiniz.

İlgili yazılar: Event-Driven Mimari: Ne Çözer, Neyi Gizler? Senkron mu Asenkron mu? HTTP ve Kuyruk Arasında Karar

Exactly-once effect

Teslimin değil, etkinin tam bir kez olması. Dağıtık bir sistemde exactly-once teslim uçtan uca garanti edilemez — "işledim" ile "işlediğimi bildirdim" iki ayrı adımdır ve aralarına çökme girebilir. Hedef, tekrarı zararsız kılmaktır.

İlgili yazılar: Transactional Outbox: Dual-Write, İdempotent Tüketim Idempotency: Aynı Mesaj İki Kez Geldiğinde

Expand–contract

Tehlikeli bir şema değişikliğini, her biri tek başına güvenli ve geri uyumlu üç adıma bölmek: genişlet (yeniyi ekle), geçiş (veriyi taşı, okumayı çevir), daralt (eskiyi sil). Hiçbir ara adımda çalışan kod şema ile uyumsuz kalmaz.

İlgili yazılar: Canlıda Sıfır Kesintiyle Şema Değiştirmek Şema Evrimi: Sözleşmeyi Kırmadan Değiştirmek

Feature flag

Kodu canlıya almakla özelliği açmayı birbirinden ayıran anahtar. Deploy ile yayın aynı an olmaktan çıkar: özellik kapalı çıkar, kademeli açılır, sorun çıkarsa deploy geri alınmadan kapatılır.

Golden signals

Bir servisin sağlığını dört ölçüyle anlatan set: gecikme, trafik, hata ve doygunluk. Yüzlerce metrik toplamak yerine bu dördünü doğru kurmak, çoğu üretim probleminin ilk sinyalini verir.

Graceful shutdown

Bir process'in kapanma sinyalini alınca yeni iş almayı bırakıp elindekini bitirmesi. Olmadığında deploy ya da ölçek değişimi, yarım kalmış istekler ve yarım işlenmiş mesajlar bırakır.

Idempotency

Aynı işlemin iki kez çalıştırılmasının bir kez çalıştırılmasıyla aynı sonucu vermesi. Kuyruk tarafında bunu, işlenen her mesajın kimliğini bir dedupe kaydına yazıp asıl işi aynı transaction içinde yaparak alırsınız.

İlgili yazılar: Idempotency: Aynı Mesaj İki Kez Geldiğinde Transactional Outbox: Dual-Write, İdempotent Tüketim Ardışık Numara Üretiminde Race Condition ve Gap

Kararsız test

Aynı kod üzerinde bazen geçen bazen kalan test. Retry ile bastırmak belirtiyi gizler: kararsızlık neredeyse her zaman gerçek bir determinizm eksikliğini — zaman, sıra ya da paylaşılan durum bağımlılığını — işaret eder.

İlgili yazılar: Kararsız Testler: Retry Çözüm Değil Production Hatasını Hangi Test Engeller?

Modüler monolit

Tek bir deploy birimi içinde net modül sınırları olan mimari. Mikroservisin sınır disiplinini, dağıtık sistem maliyetini ödemeden verir; sınırlar gerçekten gerektiğinde ayrıştırma noktası zaten hazırdır.

İlgili yazılar: Projelere Neden Modüler Monolit ile Başlıyorum? Mikroservise Ne Zaman Geçerim?

PITR (point-in-time recovery)

WAL arşivi sayesinde veritabanını geçmişteki herhangi bir ana geri döndürebilme yeteneği. Tek başına gecelik bir dump, veri kaybı penceresini bir güne kadar açar; PITR o pencereyi saniyelere indirir.

İlgili yazılar: pgBackRest ile PostgreSQL Backup Stratejisi

Rate limiting

Bir istemcinin belirli bir pencerede yapabileceği istek sayısını sınırlamak. Kötü niyetli trafiğe karşı olduğu kadar — çoğu zaman daha çok — retry döngüsüne girmiş hatalı bir istemciye karşı da korumadır.

Read replica

Primary'nin yazmalarını akış hâlinde tekrar oynayan, okumaya açık kopya. Okuma yükü problemini çözer, yazma yükü problemini **çözmez** — aynı yazmalar replica'da da tekrarlanır. Bedeli, her sorgunun "bu bayat veri okuyabilir mi" sorusuna cevap vermek zorunda kalmasıdır.

İlgili yazılar: Read/Write Splitting: Okuma ve Yazma Yükünü Ayırmak Veri Yoğunluklu Sistemlerde Ölçek Kırılma Noktaları

Readiness / liveness

İki ayrı sağlık sorusu: liveness "process ayakta mı", readiness "process trafik almaya hazır mı". Trafiği readiness belirler ve gerçek bir readiness kontrolü bağımlılıkları sınar — veritabanına bağlanabiliyor mu, cache erişilebilir mi. "Port açık mı" yeterli değildir.

Sharding

Veriyi bir anahtara göre birden çok veritabanına bölmek. Tek primary'nin yazma kapasitesini aşan yükün gerçek çözümü — ve ölçek merdiveninin geri dönüşü en zor, en pahalı adımı. Ondan önceki her adım denenmiş olmalı.

İlgili yazılar: Veri Yoğunluklu Sistemlerde Ölçek Kırılma Noktaları

SKIP LOCKED

Bir `SELECT ... FOR UPDATE`'in, başka bir transaction'ın kilitlediği satırları beklemek yerine atlamasını sağlayan SQL yan tümcesi. Birden çok relay ya da worker'ın aynı tablodan çakışmadan disjoint kümeler çekmesini sağlar; onsuz paralellik fiilen seri yürür.

İlgili yazılar: Transactional Outbox: Dual-Write, İdempotent Tüketim

Teknik borç

Bugünkü hızı yarınki değişim maliyetiyle takas eden bilinçli ya da bilinçsiz kararlar. Hepsi ödenmez — bazılarıyla yaşamak doğru karardır. Ayrım, borcun faizini kimin ve ne sıklıkta ödediğine bakılarak yapılır.

İlgili yazılar: "İleride Lazım Olur" Kodunun Production Faturası

Transactional outbox

Mesajı doğrudan broker'a basmak yerine, iş satırıyla aynı transaction içinde bir `outbox` tablosuna yazma kalıbı. Ayrı bir relay onu kuyruğa taşır. Dual-write'ı tek write'a indirir — ama karşılığında exactly-once değil, at-least-once verir.

İlgili yazılar: Transactional Outbox: Dual-Write, İdempotent Tüketim

Working set

Veritabanının fiilen sık eriştiği veri kümesi — toplam veri değil, sıcak olan kısım. RAM'e sığdığı sürece okumalar bellekten karşılanır; taştığı an disk okumaları ve gecikme birlikte tırmanır.

İlgili yazılar: Veri Yoğunluklu Sistemlerde Ölçek Kırılma Noktaları İndeksler: Eksik Yavaşlatır, Fazlası Yazmayı Öldürür

Sitede Ara

Yazı, proje ve sayfalarda arama yapmak için yazmaya başlayın.

Esc ile kapat Pagefind ile güçlendirildi