Upgrade Tetikleyicileri: Zorunlu, Kilitleyen, Fırsat
Dependabot PR'ı, EOL duyurusu ve CVE bülteni aynı kuyruğa düşer ama aynı aciliyette değildir. Sinyalleri üç türe ayırıp her birine tepki süresi bağlamak.
Mühendislik
Muhammet Şafak ve Mühendislik bölümü hakkında — bölümün neden var olduğu, nereye gittiği, burada ne yazıldığı ve ne yazılmadığı.
Her yazının iskeleti
Notlar, sistem yazıları ve denemeler: tek akışta, tarih sırasıyla.
Dependabot PR'ı, EOL duyurusu ve CVE bülteni aynı kuyruğa düşer ama aynı aciliyette değildir. Sinyalleri üç türe ayırıp her birine tepki süresi bağlamak.
Unit ve integration testlerin gerçek getirisi: hangisinin production hatalarını gerçekten önlediği ve test bütçesinin nereye ayrılacağı.
PHP 7.1 → 8.2 upgrade'i "çalışıyor ya" diye ertelendi. Fatura sonra geldi: bağımlılık kilidi, toplu breaking change ve aylara yayılan bug'lar.
Test coverage bir hedef değil, bir yan üründür. Sayıyı yükseltmek için yazılan, hiçbir hatayı yakalamayan testlerin maliyeti.
Küçük bir fonksiyon için bağımlılık eklemenin güvenlik, bakım ve supply-chain maliyeti — ve ne zaman kendiniz yazmanın daha ucuz olduğu.
Okuma ve yazma modellerini ayırmak: CQRS'in karmaşık domain'de kazandırdığı netlik ve basit CRUD'da yarattığı gereksiz yük.
Canlı tabloyu şişiren eski kayıtları ayırmak: partition'lama, soğuk depolama ve arşivlerken sorgu erişimini koruma yöntemleri.
Çoğu büyük veri problemi aslında kötü modelleme veya eksik indekstir. Dağıtık sisteme geçmeden önce verinin gerçekten büyük olup olmadığını sorgulamak.
Kuyruk tablosunda tabloyla büyüyen index ve autovacuum eşiği yanlış ölçeklenir; ikisini bekleyen işlere göre kurmanın ölçülmüş gerekçesi
ORM bizi tembelleştiriyor mu yoksa gerçekten koruyor mu? İki yaklaşımın güvenlik, okunabilirlik ve performans dengesi.
Eksik indeks sorguyu yavaşlatır, gereğinden fazla indeks her yazma işlemini pahalılaştırır. Doğru dengeyi tahminle değil ölçümle kurmak.
Production'da kesinti yaratmadan migration almak: geri uyumlu adımlar, çok aşamalı kolon değişiklikleri ve tablo kilitlenmesini önleme.
Tek bir konuyu bölüm bölüm işleyen yazılar.
Tek bir PostgreSQL kümesini üretimde ayakta tutmanın pratiği: bağlantı havuzu, yedekleme, okuma/yazma ayrımı, sıfır kesintili göç ve geri-dönüş testi.
5 bölümlük dizi
Runtime, framework ve bağımlılık upgrade'ini risk kararı olarak ele almak: tetikleyiciler, envanter, karar matrisi, rollout ve upgrade etmeme kararı.
2 bölümlük dizi
Tamamen tarayıcıda çalışan geliştirici araçları.
Metni Base64 olarak encode ve decode eder; URL-safe varyantı ve UTF-8 (Unicode) metni destekler. Tarayıcıda çalışır, metin dışarı gönderilmez.
JSON içeriğini 2 boşluk, 4 boşluk ya da tab girintisiyle biçimlendirir veya sıkıştırır; hatalı JSON için hata verir. Tarayıcıda çalışır, veri dışarı çıkmaz.
JWT header ve payload kısımlarını çözer, exp ve iat zamanlarını ISO biçiminde gösterir. İmzayı doğrulamaz; token tarayıcıda kalır, dışarı gönderilmez.
Kriptografik olarak güvenli parola üretici: uzunluk ve karakter sınıfları ayarlanır, karışan ve shell özel karakterleri çıkarılabilir. Tarayıcıda çalışır.
Türkçe teknik içerikte eksik olan şey daha fazla giriş anlatımı değil; bir mühendisin aynı kararla karşılaştığında dönüp bakacağı referans. Mühendislik bölümünün gitmek istediği yer burası: yıllar sonra açıldığında da hangi kısıt altında verildiği belli olan kararların arşivi.
Bunu üç şeyle ölçüyorum. Bir yazının Türkçe mühendislik sohbetlerinde kaynak olarak gösterilmesi. Araçlardan gelen bir mühendisin yazılara geçmesi. Sitenin bir pazarlama sayfası gibi değil, dokümantasyon gibi açılması.
Not defteri büyüyecek, ama hızlanmayacak.