#architecture
27 içerik: Journal, Note, System.
- 5 bölüm
NoSQL Tuzağı: "Şeması Yok" Diye Başlamak
Şemasız başlamanın verdiği rahatlıkla NoSQL'e geçen projelerin er geç çarptığı tutarlılık ve veri bütünlüğü krizleri.
- 4 bölüm
PostgreSQL Her Şeye Yeter mi?
Ayrı arama motoru, kuyruk veya doküman DB'si eklemeden önce: PostgreSQL'in tek başına nereye kadar yettiği ve sınırının nerede başladığı.
- ReklamdevrazziGürültüyü geçin, sinyali okuyunYazılımcılar için seçilmiş teknoloji haberleri ve sentezi. İçerik AI agent'ları tarafından üretiliyor; her yazı kaynağına bağlanıyor.
- 4 bölüm
Gereğinden Karmaşık Bir Sistemin Verdiği Sinyaller
Kodun veya mimarinin gereksiz karmaşıklaştığını ele veren somut kırmızı çizgiler — ve sadeleştirmeye nereden başlanacağı.
- 6 bölüm
Dış Servis Entegrasyonlarında Circuit Breaker
Kritik bir sistemi dış API'lere bağlarken: timeout, retry ve circuit breaker ile bir servisin çöküşünün tüm sistemi düşürmesini engellemek.
- 7 bölüm
Serverless'a Geçiş Kararı: Cold-Start ve Vendor Lock-in
FaaS'a geçmeden önce: cold-start gecikmesinin gerçek maliyeti, vendor lock-in riski ve serverless'ın hangi iş yüklerinde kazandırdığı.
- 6 bölüm
BFF Pattern: Mobil ve Web İçin Ayrı API Katmanı
Mobil ve web için ayrı API katmanları: tek API'yi her istemciye uydurmanın gizli maliyeti ve BFF'in ne zaman gerçekten gerektiği.
- 7 bölüm
Senkron mu Asenkron mu? HTTP ve Kuyruk Arasındaki Sınır
Bir işi HTTP isteğiyle anında mı yapmalı, kuyruğa mı atmalı? Yanıt süresi ve hata toleransı üzerinden karar çizgisi.
- 10 bölüm
Transactional Outbox: Dual-Write, İdempotent Tüketim
Dual-write'ı outbox'la kapatmak, doğan at-least-once tekrarını idempotent tüketimle bastırmak, event'in içindeki kişisel veriyi alanda şifrelemek.
- 5 bölüm
Event-Driven Mimari: Ne Çözer, Neyi Gizler?
Event'lerle gevşek bağ kurmanın bedeli: kazandırdığı esneklik ile sistem akışını takip edilemez hale getirme riski arasındaki denge.
- 6 bölüm
Çok Kümeli GitOps’ta Sıfır Statik Yetki
Uzun ömürlü kubeconfig olmadan çok kümeli GitOps: SPIFFE kimlikleri, SPIRE'ın bastığı kısa ömürlü SVID'ler — kurma sırası ve her adımın maliyeti.
- 5 bölüm
Dead-Letter Kuyruğunu Daha Kötü Yapmadan Replay Etmek
Naif replay kuyruğu yeniden zehirler ya da yan etkileri ikinci kez tetikler. Güvenli şekil: reset, dry-run, önce sandbox, select.
- 5 bölüm
Polyglot Bir Kuyrukta Dağıtık İzleme
Donmuş bir envelope üzerinden PHP, Go ve Python'a geçen bir mesajı tek bir OpenTelemetry trace'ine çevirmek — yeni alan, yeni bağımlılık yok.
- 4 bölüm
Şemayı Kuyruğun Kenarında Doğrulamak
Bir mesajın data'sı, kuyruğun kontrol etmediği tipsiz bir sözleşmedir. Kenarda doğrula: üretici yayınlamadan önce, tüketici güvenlik ağı olarak.
- 4 bölüm
Mimari Kararlar Çürür Çünkü Onları Kimse Çalıştırmaz
Bir wiki'ye yazılmış mimari karar bir dilektir. Zorlayamadığın sınırlar sessizce aşınır — diyagram kodla örtüşmeyi bırakana dek. Kuralı çalıştırılabilir yap.
- 7 bölüm
Idempotency: Aynı Mesaj İki Kez Geldiğinde
At-least-once teslimat, bir handler'ın aynı mesajı iki kez göreceği anlamına gelir. Idempotency anahtarı, nereden geldiği ve çökmeden sağ çıkan dedupe.
- 5 bölüm
Şema Evrimi: Sözleşmeyi Kırmadan Değiştirmek
Servisler arası bir sözleşmeyi atomik değiştiremezsin. Kural: additive güvenli, kırıcı değişiklik yeni bir kimlik ister — ve önce tüketiciler yükseltir
- 5 bölüm
Katmanlı Mimari mi, Clean Architecture mı?
Klasik katmanlı yapı çoğu projeye yeterken neden soyutlama katmanlarında boğuluyoruz; Clean Architecture gerçekten ne zaman değer katar?
- 4 bölüm
Vibe Coding ile Production'a Çıkılır mı?
Vibe coding ilk sürümün maliyetini düşürür, yanlış olmanın maliyetini değil. O fatura build'de değil, production'da çıkar.
- 5 bölüm
"İleride Lazım Olur" Kodunun Production Faturası
YAGNI'yi pratikte uygulamak: bugün gerekmeyen esnekliği eklemenin bakım, okunabilirlik ve hata yüzeyi olarak geri ödenen bedeli.
- 10 bölüm
Ardışık Numara Üretiminde Race Condition ve Gap
Yasal olarak ardışık ve boşluksuz numaraları paralel worker'larla üretmek: race condition ile gap'i birlikte çözen JIT rezervasyon kalıbı.
- 5 bölüm
Mikroservise Ne Zaman Geçerim?
Monolitten dağıtık mimariye geçişi haklı çıkaran ölçülmüş sinyaller — ve geçiş için henüz erken olduğunu söyleyen yaygın yanlış gerekçeler.
- 5 bölüm
Projelere Neden Modüler Monolit ile Başlıyorum?
Mikroservislere atlamadan önce tek deploy edilebilir bir uygulamada net modül sınırları kurmanın gerekçesi — ve bu kararı ne zaman bıraktığım.
- 9 bölüm
Veri Yoğunluklu Sistemlerde Ölçek Kırılma Noktaları
Veri yükü arttıkça boring mimari nerede kırılır? Working set, read replica, partitioning, yazma yükü, ayrı veri katmanı — sırayla ve maliyetleriyle.
- 7 bölüm
Neden Boring Architecture'ı Tercih Ediyorum
Yeni teknoloji peşinde koşmak yerine kanıtlanmış araçları seçmenin pragmatik gerekçesi. Bu bir korkaklık değil, bir bütçe kararı.
- 5 bölüm
Shared Redis Kullanırken Namespace İzolasyonu
Tek bir Redis instance birden çok proje arasında paylaşılırken key collision ve yanlışlıkla silme kazalarından korunmak için kullandığım örüntü.
- 11 bölüm
Tek VPS Üzerinde Çoklu Proje Mimarisi
Bir VPS, birden çok bağımsız uygulama. Kubernetes yerine bilinçli minimalizm: kullanıcı izolasyonu, ayrı PHP-FPM pool, paylaşılan PostgreSQL/Redis.
- 13 bölüm
Laravel Production Stack: Her Bileşen Neden Orada?
Nginx + PHP-FPM + Redis + PostgreSQL + Supervisor + Horizon ile production-grade bir Laravel kurulumu. Her bileşenin işi ve değiştirildiğinde ne kaybedileceği.