Tag
#architecture
27 yazı: 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
Bir Sistemin "Gereğinden Karmaşık" Olduğunu Gösteren 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 ile 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, At-Least-Once ve İdempotent Tüketim
Veritabanına yazıp event'i kuyruğa düşürememe: dual-write'ı outbox'la kapatmak, doğan at-least-once tekrarını idempotent tüketimle bastırmak ve alanı şifrelemek.
- 5 bölüm
Event-Driven Mimari: Ne Zaman Kurtarır, Ne Zaman Karmaşıklaştırır?
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 ya da token olmadan çok kümeli GitOps. SPIFFE ID’ler, SPIRE’ın bastığı kısa ömürlü SVID’ler, trust-domain federasyonu — kurma sırası ve her adımın maliyeti.
- 5 bölüm
Dead-Letter Kuyruğunu Daha Kötü Yapmadan Replay Etmek
Kesinti sırasında DLQ doldu, geri istiyorsun. 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
Bir mesaj PHP, Go ve Python arasında donmuş bir envelope üzerinden geçiyor. Yolculuğunu tek bir OpenTelemetry trace’ine çevirmek — yeni alan ve çekirdek bağımlılığı olmadan — ve dürüst sınırı.
- 4 bölüm
Şemayı Kuyruğun Kenarında Doğrulamak
Bir mesajın data'sı, kuyruğun kontrol etmeyeceği tipsiz bir sözleşmedir. Onu kenarda doğrula — üretici tarafında yayınlamadan önce, tüketici tarafında güvenlik ağı olarak.
- 4 bölüm
Mimari Kararların Çürüyor Çünkü Onları Hiçbir Şey Çalıştırmıyor
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
Bir mesajın data şekli, servisler arası bir sözleşmedir ve onu 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 bir ilk sürümün maliyetini düşürür, yanlış olmanın maliyetini değil. O fatura build'de değil, production'da çıkar — ve onu kimin elinde çıkardığına bağlıdır.
- 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: JIT Rezervasyon
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ü ve ayrı veri katmanı — sıralı kırılma noktaları ve her birinin maliyeti.
- 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 fazla bağımsız uygulama. Kubernetes yerine bilinçli minimalizm: kullanıcı izolasyonu, ayrı PHP-FPM pool, paylaşılan PostgreSQL/Redis, sade deploy.
- 13 bölüm
Laravel Production Stack
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.