<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Muhammet Şafak — Sor Bakalım — Soru &amp; Cevap</title><description>Yazılım mimarisi, kariyer, PHP, Go ve geliştirme süreçleri üzerine merak ettiklerini sor; cevapları burada herkese açık paylaşıyorum.</description><link>https://www.muhammetsafak.com.tr/</link><language>tr-TR</language><lastBuildDate>Fri, 04 Sep 2026 00:00:00 GMT</lastBuildDate><managingEditor>info@muhammetsafak.com.tr (Muhammet Şafak)</managingEditor><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/rss.xml" rel="self" type="application/rss+xml"/><item><title>Birbirine bağımlı birden fazla işi, ilk hata hepsini iptal edecek şekilde errgroup ile mi yürütmeliyim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/birbirine-bagimli-birden-fazla-isi-ilk-hata-hepsini-iptal-edecek-sekilde/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/birbirine-bagimli-birden-fazla-isi-ilk-hata-hepsini-iptal-edecek-sekilde/</guid><description>`errgroup.WithContext`&apos;e geçip üstüne request-level bir timeout koyun ve ctx&apos;i her HTTP/DB çağrısına geçirin; ihmal edilen ctx, iptali sessizce öldürür.</description><pubDate>Fri, 04 Sep 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/birbirine-bagimli-birden-fazla-isi-ilk-hata-hepsini-iptal-edecek-sekilde.md" rel="alternate" type="text/markdown"/><category>go</category><category>concurrency</category></item><item><title>İşlediğim satırları aynı anda güncellerken chunk yerine chunkById mı kullanmalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/isledigim-satirlari-ayni-anda-guncellerken-chunk-yerine-chunkbyid-mi-kullanmaliyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/isledigim-satirlari-ayni-anda-guncellerken-chunk-yerine-chunkbyid-mi-kullanmaliyim/</guid><description>Satır başına gerçek iş varsa `chunkById()` kullanıp cursor kolonuna dokunmayın; iş yalnız bir kolonu güncellemekse tek bir set-based `UPDATE`&apos;e geçin.</description><pubDate>Tue, 01 Sep 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/isledigim-satirlari-ayni-anda-guncellerken-chunk-yerine-chunkbyid-mi-kullanmaliyim.md" rel="alternate" type="text/markdown"/><category>laravel</category><category>eloquent</category><category>performans</category></item><item><title>readonly value object&apos;lerimde &quot;withX&quot; tarzı kopyalama metotlarını nasıl temiz yazarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/readonly-value-objectlerimde-withx-tarzi-kopyalama-metotlarini-nasil-temiz-yazarim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/readonly-value-objectlerimde-withx-tarzi-kopyalama-metotlarini-nasil-temiz-yazarim/</guid><description>`readonly`&apos;de withX yeni instance döndürür: taşınabilir yol `new self` + named arguments, PHP 8.5&apos;te doğrulama basitse `clone($this, [...])`.</description><pubDate>Fri, 28 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/readonly-value-objectlerimde-withx-tarzi-kopyalama-metotlarini-nasil-temiz-yazarim.md" rel="alternate" type="text/markdown"/><category>php</category><category>oop</category></item><item><title>Senior&apos;dan staff&apos;a geçişte işin doğası nasıl değişiyor?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/seniordan-staffa-geciste-isin-dogasi-nasil-degisiyor/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/seniordan-staffa-geciste-isin-dogasi-nasil-degisiyor/</guid><description>Org seviyesinde sahipsiz bir problemi üstlenip çözümü yazılı bir tech strategy&apos;ye dökün, etkiyi commit&apos;lerinizle değil ekiplerin çıktısıyla gösterin.</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/seniordan-staffa-geciste-isin-dogasi-nasil-degisiyor.md" rel="alternate" type="text/markdown"/><category>kariyer</category><category>liderlik</category></item><item><title>Correlation ID&apos;yi HTTP isteğinden kuyruğa düşen job&apos;lara kadar nasıl taşımalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/correlation-idyi-http-isteginden-kuyruga-dusen-joblara-kadar-nasil-tasimaliyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/correlation-idyi-http-isteginden-kuyruga-dusen-joblara-kadar-nasil-tasimaliyim/</guid><description>ID&apos;yi W3C `traceparent` olarak üretip SQS message attribute&apos;unda taşıyın, her sınırda OTel propagator ile enjekte edin, logger&apos;a `trace_id` verin.</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/correlation-idyi-http-isteginden-kuyruga-dusen-joblara-kadar-nasil-tasimaliyim.md" rel="alternate" type="text/markdown"/><category>observability</category><category>logging</category><category>queue</category></item><item><title>Container&apos;ı non-root çalıştırınca mount edilen storage dizinine yazamıyorum, izinleri nasıl çözerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/containeri-non-root-calistirinca-mount-edilen-storage-dizinine-yazamiyorum-izinleri-nasil/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/containeri-non-root-calistirinca-mount-edilen-storage-dizinine-yazamiyorum-izinleri-nasil/</guid><description>Kullanıcıyı build-time `ARG UID` ile sabitleyin, `COPY --chown` kullanın, named volume&apos;de entrypoint yalnız `storage` ve `bootstrap/cache`&apos;i chown etsin.</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/containeri-non-root-calistirinca-mount-edilen-storage-dizinine-yazamiyorum-izinleri-nasil.md" rel="alternate" type="text/markdown"/><category>docker</category><category>guvenlik</category><category>laravel</category></item><item><title>OpenAPI şemasını önce mi yazmalıyım yoksa koddan mı üretmeliyim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/openapi-semasini-once-mi-yazmaliyim-yoksa-koddan-mi-uretmeliyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/openapi-semasini-once-mi-yazmaliyim-yoksa-koddan-mi-uretmeliyim/</guid><description>`openapi.yaml`&apos;ı tek doğru kaynak yapıp contract-first gidin; drift&apos;i bitiren şey yön değil, CI&apos;da spec&apos;i koda karşı doğrulayan yeşil contract testtir.</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/openapi-semasini-once-mi-yazmaliyim-yoksa-koddan-mi-uretmeliyim.md" rel="alternate" type="text/markdown"/><category>api</category><category>api-design</category></item><item><title>Sadece &apos;pending&apos; satırları taranan bir kuyruk tablosunda partial index kullanmalı mıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/sadece-pending-satirlari-taranan-bir-kuyruk-tablosunda-partial-index-kullanmali-miyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/sadece-pending-satirlari-taranan-bir-kuyruk-tablosunda-partial-index-kullanmali-miyim/</guid><description>`WHERE status=&apos;pending&apos;` partial index&apos;ine `ORDER BY` kolonunu da katın, `FOR UPDATE SKIP LOCKED` ile eşleyin ve `&apos;pending&apos;`&apos;i sorguya literal geçin.</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/sadece-pending-satirlari-taranan-bir-kuyruk-tablosunda-partial-index-kullanmali-miyim.md" rel="alternate" type="text/markdown"/><category>postgresql</category><category>veritabani</category><category>performans</category></item><item><title>İç içe geçmiş servis çağrılarında context iptalini doğru şekilde nasıl yayarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/ic-ice-gecmis-servis-cagrilarinda-context-iptalini-dogru-sekilde-nasil-yayarim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/ic-ice-gecmis-servis-cagrilarinda-context-iptalini-dogru-sekilde-nasil-yayarim/</guid><description>İptalin yayılması için `r.Context()`&apos;i her downstream çağrıya geçirin, zincirde `context.Background()` bırakmayın, side-effect&apos;e `WithoutCancel` verin.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/ic-ice-gecmis-servis-cagrilarinda-context-iptalini-dogru-sekilde-nasil-yayarim.md" rel="alternate" type="text/markdown"/><category>go</category><category>concurrency</category></item><item><title>Integer cent olarak sakladığım para alanları için custom cast mı yoksa accessor/mutator mı kullanmalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/integer-cent-olarak-sakladigim-para-alanlari-icin-custom-cast-mi-yoksa/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/integer-cent-olarak-sakladigim-para-alanlari-icin-custom-cast-mi-yoksa/</guid><description>DB&apos;de integer cent, modelde immutable `Money`: eşlemeyi tek bir `CastsAttributes` sınıfına toplayın, currency&apos;yi aynı cast&apos;ta ikinci kolon yapın.</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/integer-cent-olarak-sakladigim-para-alanlari-icin-custom-cast-mi-yoksa.md" rel="alternate" type="text/markdown"/><category>laravel</category><category>eloquent</category><category>php</category></item><item><title>Tip güvenli koleksiyonlar için PHPStan generics mi kullanmalıyım, yoksa her tür için ayrı sınıf mı yazmalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/tip-guvenli-koleksiyonlar-icin-phpstan-generics-mi-kullanmaliyim-yoksa-her-tur/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/tip-guvenli-koleksiyonlar-icin-phpstan-generics-mi-kullanmaliyim-yoksa-her-tur/</guid><description>`list&lt;Order&gt;` docblock&apos;ları ve CI&apos;da katı PHPStan&apos;ı varsayılan yapın; davranış gerekince tek generic `Collection&lt;T&gt;`, güven sınırında concrete sınıf.</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/tip-guvenli-koleksiyonlar-icin-phpstan-generics-mi-kullanmaliyim-yoksa-her-tur.md" rel="alternate" type="text/markdown"/><category>php</category><category>static-analysis</category></item><item><title>Orta seviyeden senior&apos;a geçerken beklenen &quot;daha geniş etki&quot;yi nasıl gösteririm?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/orta-seviyeden-seniora-gecerken-beklenen-daha-genis-etki-yi-nasil-gosteririm/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/orta-seviyeden-seniora-gecerken-beklenen-daha-genis-etki-yi-nasil-gosteririm/</guid><description>Terfiyi soyut bir hedef değil somut bir hamle yapın: kimsenin sahiplenmediği bulanık bir problemi bir çeyrek boyunca tanımından yayılmasına dek üstlenin.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/orta-seviyeden-seniora-gecerken-beklenen-daha-genis-etki-yi-nasil-gosteririm.md" rel="alternate" type="text/markdown"/><category>kariyer</category></item><item><title>Loglarımda WARN ile ERROR seviyelerini ne zaman kullanacağıma dair net bir kural nasıl belirlerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/loglarimda-warn-ile-error-seviyelerini-ne-zaman-kullanacagima-dair-net-bir/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/loglarimda-warn-ile-error-seviyelerini-ne-zaman-kullanacagima-dair-net-bir/</guid><description>Bir satır gece 3&apos;te birini uyandırmayı gerektiriyorsa ERROR, gerektirmiyorsa WARN yazın; hatayı sınırında bir kez loglayıp alert&apos;i ERROR oranına bağlayın.</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/loglarimda-warn-ile-error-seviyelerini-ne-zaman-kullanacagima-dair-net-bir.md" rel="alternate" type="text/markdown"/><category>observability</category><category>logging</category></item><item><title>Container&apos;daki healthcheck&apos;i Dockerfile&apos;a mı yazmalıyım yoksa Kubernetes probe&apos;larına mı bırakmalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/containerdaki-healthchecki-dockerfilea-mi-yazmaliyim-yoksa-kubernetes-probelarina-mi-birakmaliyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/containerdaki-healthchecki-dockerfilea-mi-yazmaliyim-yoksa-kubernetes-probelarina-mi-birakmaliyim/</guid><description>Readiness, liveness ve startup&apos;ı Kubernetes probe&apos;ları olarak tanımlayın; HEALTHCHECK&apos;i yalnız imaj Compose&apos;da da koşuyorsa tutup aynı endpoint&apos;e bağlayın.</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/containerdaki-healthchecki-dockerfilea-mi-yazmaliyim-yoksa-kubernetes-probelarina-mi-birakmaliyim.md" rel="alternate" type="text/markdown"/><category>docker</category><category>kubernetes</category><category>guvenilirlik</category></item><item><title>Public API&apos;mde bir endpoint&apos;i kullanımdan kaldırırken sunset sürecini nasıl yönetmeliyim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/public-apimde-bir-endpointi-kullanimdan-kaldirirken-sunset-surecini-nasil-yonetmeliyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/public-apimde-bir-endpointi-kullanimdan-kaldirirken-sunset-surecini-nasil-yonetmeliyim/</guid><description>Kullanımı partner bazında ölçün, her yanıta Sunset ve Deprecation başlığı koyun, tarihli sunset duyurup brownout yapın, kullanım sıfıra yaklaşınca kesin.</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/public-apimde-bir-endpointi-kullanimdan-kaldirirken-sunset-surecini-nasil-yonetmeliyim.md" rel="alternate" type="text/markdown"/><category>api</category><category>api-design</category></item><item><title>Sürekli güncellenen bir sessions tablosunda staging&apos;de Index Scan alan sorgu production&apos;da neden Seq Scan&apos;e düşüyor, EXPLAIN ile nasıl teşhis ederim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/surekli-guncellenen-bir-sessions-tablosunda-stagingde-index-scan-alan-sorgu-productionda/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/surekli-guncellenen-bir-sessions-tablosunda-stagingde-index-scan-alan-sorgu-productionda/</guid><description>Production&apos;da EXPLAIN (ANALYZE, BUFFERS) çekip tabloyu ANALYZE edin ve n_dead_tup&apos;a bakın; sessions için autovacuum&apos;u sıkılaştırıp partial index ekleyin.</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/surekli-guncellenen-bir-sessions-tablosunda-stagingde-index-scan-alan-sorgu-productionda.md" rel="alternate" type="text/markdown"/><category>postgresql</category><category>performans</category></item><item><title>Goroutine sızıntılarını uzun süre çalışan bir Go servisinde nasıl tespit edip önlerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/goroutine-sizintilarini-uzun-sure-calisan-bir-go-servisinde-nasil-tespit-edip/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/goroutine-sizintilarini-uzun-sure-calisan-bir-go-servisinde-nasil-tespit-edip/</guid><description>NumGoroutine()&apos;i dışa açıp zirvede pprof goroutine dökümü alın, binlerce kopyalı park etmiş stack&apos;in spawn noktasını ctx.Done()&apos;a uydurun, goleak ekleyin.</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/goroutine-sizintilarini-uzun-sure-calisan-bir-go-servisinde-nasil-tespit-edip.md" rel="alternate" type="text/markdown"/><category>go</category><category>concurrency</category></item><item><title>Eloquent&apos;te N+1&apos;i erken yakalamak için Model::preventLazyLoading&apos;i yalnızca lokalde mi yoksa production&apos;da da mı açmalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/eloquentte-n-1i-erken-yakalamak-icin-model-preventlazyloadingi-yalnizca-lokalde-mi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/eloquentte-n-1i-erken-yakalamak-icin-model-preventlazyloadingi-yalnizca-lokalde-mi/</guid><description>Lokal ve CI&apos;da tam katı (throw) çalıştırın; production&apos;da ayarı açık tutup ihlali handleLazyLoadingViolationUsing ile isteği çökertmeden log&apos;layın.</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/eloquentte-n-1i-erken-yakalamak-icin-model-preventlazyloadingi-yalnizca-lokalde-mi.md" rel="alternate" type="text/markdown"/><category>laravel</category><category>eloquent</category><category>performans</category></item><item><title>PHP durum sabitlerimi backed enum&apos;a taşımak kod tabanıma ne kazandırır, neyi zorlaştırır?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/php-durum-sabitlerimi-backed-enuma-tasimak-kod-tabanima-ne-kazandirir-neyi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/php-durum-sabitlerimi-backed-enuma-tasimak-kod-tabanima-ne-kazandirir-neyi/</guid><description>Aynı integer değerleriyle backed enum ekleyin, sınırlarda tryFrom() kullanın ve eski sabitleri deprecated alias tutup çağrıları kademeli taşıyın.</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/php-durum-sabitlerimi-backed-enuma-tasimak-kod-tabanima-ne-kazandirir-neyi.md" rel="alternate" type="text/markdown"/><category>php</category><category>refactoring</category></item><item><title>API sunucumu Cloudflare Tunnel arkasına alıp 443&apos;ü internete kapatmalı mıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/api-sunucusunu-cloudflare-tunnel-arkasina-mi-almali/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/api-sunucusunu-cloudflare-tunnel-arkasina-mi-almali/</guid><description>Tünel sağlam bir desen ama tek yol bağımlılığıdır; mevcut Caddy kurulumunda kalıp origin&apos;i Cloudflare IP&apos;lerine kilitleyin ve origin pulls ekleyin.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/api-sunucusunu-cloudflare-tunnel-arkasina-mi-almali.md" rel="alternate" type="text/markdown"/><category>altyapi</category><category>cloudflare</category><category>laravel</category></item><item><title>Hata oranı artınca otomatik rollback yapan (self-healing) deploy altyapısını nasıl tasarlarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/hata-artisinda-otomatik-rollback-ve-kendi-kendini-iyilestiren-deploy/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/hata-artisinda-otomatik-rollback-ve-kendi-kendini-iyilestiren-deploy/</guid><description>Yeni sürümü canary ağırlığında bir bake süresi boyunca 5xx ve latency eşiğine karşı ölçün; eşik aşılırsa son kararlı sürüme dönüp ekibi yalnızca uyarın.</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/hata-artisinda-otomatik-rollback-ve-kendi-kendini-iyilestiren-deploy.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>dayaniklilik</category><category>observability</category></item><item><title>Fintek API&apos;si için Canary mi, Blue-Green deployment mı?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/canary-mi-blue-green-mi-fintek-api-icin-deploy-stratejisi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/canary-mi-blue-green-mi-fintek-api-icin-deploy-stratejisi/</guid><description>Rutin sürümlerde Canary&apos;yi varsayılan yapın, instant rollback istediğiniz büyük cutover&apos;lara Blue-Green&apos;i saklayın; ikisi de geriye uyumlu şema şart koşar.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/canary-mi-blue-green-mi-fintek-api-icin-deploy-stratejisi.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>dayaniklilik</category></item><item><title>CI/CD&apos;de OIDC ve IAM Role ile şifresiz (secretless) AWS erişimini nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-secret-yonetimi-ve-oidc-ile-sifresiz-erisim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-secret-yonetimi-ve-oidc-ile-sifresiz-erisim/</guid><description>GitHub Secrets&apos;taki uzun ömürlü AWS anahtarlarını silip repo ve branch&apos;e scope&apos;lu bir IAM role&apos;ü OIDC ile üstlenin; bulut dışı secret&apos;ı runtime&apos;da çekin.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-secret-yonetimi-ve-oidc-ile-sifresiz-erisim.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>guvenlik</category><category>altyapi</category></item><item><title>CI/CD&apos;de veritabanı göçlerini (migrations) güvenli nasıl çalıştırırım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-veritabani-goclerini-guvenli-calistirmak/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-veritabani-goclerini-guvenli-calistirmak/</guid><description>Kolonu nullable ekleyip backfill&apos;i ayrı throttle&apos;lı bir adıma alın, migration&apos;ı deploy&apos;dan ayrı bir aşamada koşturun, eskiyi sonraki release&apos;te düşürün.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/ci-cd-de-veritabani-goclerini-guvenli-calistirmak.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>veritabani</category><category>laravel</category></item><item><title>DeployerPHP zero-downtime deploy&apos;da OPcache&apos;ten gelen 500 hatalarını nasıl engellerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/deployerphp-ile-sifir-kesinti-deploy-ve-opcache-temizligi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/deployerphp-ile-sifir-kesinti-deploy-ve-opcache-temizligi/</guid><description>Symlink&apos;i çevirdikten sonra PHP-FPM&apos;i graceful reload edin (restart değil); Octane&apos;deyseniz worker&apos;lar için octane:reload şart, opcache_reset isteğe bağlı.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/deployerphp-ile-sifir-kesinti-deploy-ve-opcache-temizligi.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>laravel</category></item><item><title>Docker imaj boyutunu multi-stage build ve distroless ile nasıl küçültürüm?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/docker-imaj-boyutunu-multi-stage-ve-distroless-ile-kucultmek/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/docker-imaj-boyutunu-multi-stage-ve-distroless-ile-kucultmek/</guid><description>Build araçlarını builder aşamasında bırakın: final aşama Go için distroless ya da scratch, PHP için fpm-alpine olsun; container&apos;ı non-root çalıştırın.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/docker-imaj-boyutunu-multi-stage-ve-distroless-ile-kucultmek.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>docker</category><category>altyapi</category></item><item><title>Gitflow&apos;dan Trunk-Based&apos;e geçerken feature flag mimarisini nasıl konumlandırırım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/gitflow-mu-trunk-based-mi-ve-feature-flag-mimarisi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/gitflow-mu-trunk-based-mi-ve-feature-flag-mimarisi/</guid><description>Uzun ömürlü dalları kaldırıp değişiklikleri küçük parçalar hâlinde main&apos;e alın, bitmemiş işi kapalı bir flag arkasında tutun ve biten flag&apos;i temizleyin.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/gitflow-mu-trunk-based-mi-ve-feature-flag-mimarisi.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>git</category><category>mimari</category></item><item><title>Go CLI aracını GoReleaser ve Homebrew ile çoklu platforma nasıl dağıtırım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/go-cli-aracini-goreleaser-ve-homebrew-ile-dagitmak/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/go-cli-aracini-goreleaser-ve-homebrew-ile-dagitmak/</guid><description>Tag push&apos;unda tetiklenen tek bir workflow cross-compile edip Release&apos;i yayımlasın, brews: bloğu tap formülünü güncellesin; tap için ayrı bir PAT şart.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/go-cli-aracini-goreleaser-ve-homebrew-ile-dagitmak.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>go</category></item><item><title>Hassas finansal veriyi şifrelerken anahtarı .env&apos;de tutmak neden riskli — KMS/Vault ne sağlar?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/hassas-finansal-veriyi-sifrelemek-ve-anahtar-yonetimi-kms/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/hassas-finansal-veriyi-sifrelemek-ve-anahtar-yonetimi-kms/</guid><description>Anahtarı .env&apos;den çıkarıp KMS ya da Vault&apos;ta tutun ve envelope encryption kullanın; kimlik ve kart verisinde mümkünse tokenization tercih edin.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/hassas-finansal-veriyi-sifrelemek-ve-anahtar-yonetimi-kms.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>guvenlik</category><category>altyapi</category></item><item><title>Self-hosted CI/CD runner&apos;larını nasıl izole eder, her çalışmadan sonra temizlenen (ephemeral) ortamı nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/self-hosted-ci-cd-runner-izolasyonu-ve-ephemeral-ortam/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/self-hosted-ci-cd-runner-izolasyonu-ve-ephemeral-ortam/</guid><description>Runner&apos;ı kaydol-çalış-yok ol modeline geçirip job&apos;ları unprivileged çalıştırın; Docker soketini vermeyin ve fork PR&apos;larını bu runner&apos;da hiç koşturmayın.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/self-hosted-ci-cd-runner-izolasyonu-ve-ephemeral-ortam.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>guvenlik</category><category>docker</category></item><item><title>Terraform state&apos;i S3 + DynamoDB locking ile nasıl güvenli yönetirim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/terraform-state-yonetimi-s3-ve-dynamodb-ile-locking/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/terraform-state-yonetimi-s3-ve-dynamodb-ile-locking/</guid><description>Versiyonlu, şifreli bir S3 backend&apos;e geçip DynamoDB lock tablosu ekleyin (deprecated ama çalışır), state&apos;i ortam başına ayırın, apply&apos;ı CI&apos;dan koşturun.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/terraform-state-yonetimi-s3-ve-dynamodb-ile-locking.md" rel="alternate" type="text/markdown"/><category>ci-cd</category><category>altyapi</category></item><item><title>WAL arşivleme ve PITR ile felaketten saniyeler öncesine nasıl dönerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/veritabani-pitr-ve-wal-arsivleme-ile-felaket-oncesine-donmek/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/veritabani-pitr-ve-wal-arsivleme-ile-felaket-oncesine-donmek/</guid><description>Periyodik base backup alıp WAL&apos;ı sürekli S3&apos;e arşivleyin, recovery_target_time ile hatalı ifadenin saniyeler öncesine dönün ve restore&apos;u prova edin.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/veritabani-pitr-ve-wal-arsivleme-ile-felaket-oncesine-donmek.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>postgresql</category><category>dayaniklilik</category></item><item><title>Canlı tabloda dual-write ile sıfır kayıplı şema geçişini nasıl koordine ederim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/canli-tabloda-dual-write-ile-sifir-kayipli-sema-gecisi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/canli-tabloda-dual-write-ile-sifir-kayipli-sema-gecisi/</guid><description>20M satırda bloklayan `ALTER TABLE` yerine expand/contract yürütün: kolonları nullable ekleyin, dual-write edin, throttled batch&apos;lerle backfill edin.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/canli-tabloda-dual-write-ile-sifir-kayipli-sema-gecisi.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>postgresql</category><category>ci-cd</category></item><item><title>Zaman serisi verisi için TimescaleDB mi, InfluxDB mu?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/zaman-serisi-verisi-timescaledb-mi-influxdb-mu/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/zaman-serisi-verisi-timescaledb-mi-influxdb-mu/</guid><description>Günde 100M satır düz bir tabloda patlar: hypertable ile zamana göre parçalayın, ortalamaları continuous aggregate&apos;e alın, eski chunk&apos;ları sıkıştırın.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/zaman-serisi-verisi-timescaledb-mi-influxdb-mu.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>postgresql</category><category>olcekleme</category></item><item><title>Redis&apos;te canlı leaderboard için neden Sorted Set kullanmalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/redis-veri-tipleri-leaderboard-icin-sorted-set/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/redis-veri-tipleri-leaderboard-icin-sorted-set/</guid><description>Skorları String&apos;de tutup uygulamada sıralamak yerine Sorted Set kullanın: `ZADD` O(log N) günceller, `ZREVRANGE 0 99` ilk 100&apos;ü zaten sıralı döner.</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/redis-veri-tipleri-leaderboard-icin-sorted-set.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>redis</category><category>performans</category></item><item><title>CQRS&apos;i ne zaman uygulamalı ve okuma/yazma modellerini nasıl senkronlamalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/cqrs-ne-zaman-uygulanir-ve-okuma-yazma-senkronizasyonu/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/cqrs-ne-zaman-uygulanir-ve-okuma-yazma-senkronizasyonu/</guid><description>Raporlamayı bir read-replica&apos;ya taşıyın, tam CQRS&apos;e ancak sorgu şekilleri tek şemaya sığmadığında geçin ve okuma modelini outbox event&apos;leriyle besleyin.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/cqrs-ne-zaman-uygulanir-ve-okuma-yazma-senkronizasyonu.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>mimari</category><category>elasticsearch</category></item><item><title>Bakiye güncellemede race condition: Pessimistic Lock mı, Redlock mı?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/bakiye-guncellemede-race-condition-pessimistic-lock-mu-redlock-mu/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/bakiye-guncellemede-race-condition-pessimistic-lock-mu-redlock-mu/</guid><description>Parayı DB&apos;nin garantisinde tutun: atomik koşullu `UPDATE ... WHERE balance &gt;= 40` ya da `SELECT ... FOR UPDATE` kullanın, Redlock&apos;u DB dışına bırakın.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/bakiye-guncellemede-race-condition-pessimistic-lock-mu-redlock-mu.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>queue</category><category>redis</category></item><item><title>Esnek ürün nitelikleri için NoSQL mu, PostgreSQL mi seçmeliyim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/esnek-urun-nitelikleri-icin-nosql-mu-postgresql-mi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/esnek-urun-nitelikleri-icin-nosql-mu-postgresql-mi/</guid><description>İlişkisel çekirdeği (ürün, fiyat, sipariş) PostgreSQL&apos;de tutup değişken nitelikleri GIN index&apos;li tek bir `JSONB` kolonuna koyun; raporlama bölmeye karşı.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/esnek-urun-nitelikleri-icin-nosql-mu-postgresql-mi.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>mimari</category><category>postgresql</category></item><item><title>Kuyrukta poison pill (zehirli mesaj) ve Dead Letter Queue&apos;yu nasıl yönetirim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/kuyrukta-poison-pill-ve-dead-letter-queue-yonetimi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/kuyrukta-poison-pill-ve-dead-letter-queue-yonetimi/</guid><description>İşe `tries` ve `backoff` verin: sınır dolunca Laravel işi `failed_jobs`&apos;a taşır, `JobFailed` listener&apos;ı alert eder, düzelen işi `queue:retry` geri oynatır.</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/kuyrukta-poison-pill-ve-dead-letter-queue-yonetimi.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>queue</category><category>laravel</category></item><item><title>Health check tasarımı: Liveness ve Readiness ayrımını nasıl yaparım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/health-check-tasarimi-liveness-ve-readiness-ayrimi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/health-check-tasarimi-liveness-ve-readiness-ayrimi/</guid><description>Liveness&apos;ı bağımlılıksız tutun, bağımlılıkları readiness&apos;ta cache&apos;li yoklayın: liveness fail pod&apos;u restart eder, readiness fail yalnız trafiği keser.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/health-check-tasarimi-liveness-ve-readiness-ayrimi.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>altyapi</category><category>kubernetes</category></item><item><title>PostgreSQL tablo partitioning&apos;e sıfır kesinti ile nasıl geçerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-tablo-partitioning-sifir-kesinti-ile-gecis/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-tablo-partitioning-sifir-kesinti-ile-gecis/</guid><description>`created_at` üzerinde aylık RANGE declarative partitioning kurun, geçmişi batch&apos;lerle backfill edip isimleri tek transaction&apos;da takaslayın.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-tablo-partitioning-sifir-kesinti-ile-gecis.md" rel="alternate" type="text/markdown"/><category>veritabani</category><category>postgresql</category><category>olcekleme</category></item><item><title>Veritabanı deadlock&apos;larını önlemek için hangi kurallara dikkat etmeliyim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/veritabani-deadlock-tespiti-ve-onleme-kurallari/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/veritabani-deadlock-tespiti-ve-onleme-kurallari/</guid><description>Kilitleri tek bir global sırada, artan PK gibi, alın; transaction&apos;ı kısa ve dar tutun, hedefli `FOR UPDATE` kullanın, kalanı backoff ile retry edin.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/veritabani-deadlock-tespiti-ve-onleme-kurallari.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>veritabani</category><category>postgresql</category></item><item><title>Go HTTP sunucusunda panic&apos;i recovery middleware ile nasıl yönetirim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/go-da-panic-yonetimi-ve-recovery-middleware/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/go-da-panic-yonetimi-ve-recovery-middleware/</guid><description>Zincirin en dışına `defer recover()` koyun, stack&apos;i request id ile loglayıp generic 500 dönün, metrik basın, her goroutine&apos;e kendi recover&apos;ını verin.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/go-da-panic-yonetimi-ve-recovery-middleware.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>go</category></item><item><title>Felaket kurtarma: RTO ve RPO&apos;ya göre aktif-pasif senaryoyu nasıl kurgularım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/felaket-kurtarma-rto-rpo-ve-aktif-pasif-senaryo/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/felaket-kurtarma-rto-rpo-ve-aktif-pasif-senaryo/</guid><description>RPO 5 dakika sürekli cross-region replikasyon ve PITR, RTO 30 dakika ise IaC ile hazır bekleyen sıcak yedek ve Route 53 failover demek; düzenli prova edin.</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/felaket-kurtarma-rto-rpo-ve-aktif-pasif-senaryo.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>altyapi</category><category>veritabani</category></item><item><title>Log storm ve disk dolma krizini nasıl önlerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/log-storm-ve-disk-dolma-krizini-onlemek/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/log-storm-ve-disk-dolma-krizini-onlemek/</guid><description>Tekrarlı logu uygulamada sayaçla tek satıra indirin, retry&apos;a backoff koyun, logrotate&apos;e boyut ve sayı sınırı verin, `/var/log`&apos;u kök diskten ayırın.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/log-storm-ve-disk-dolma-krizini-onlemek.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>observability</category><category>altyapi</category></item><item><title>Dağıtık brute force ve DDoS&apos;a karşı akıllı rate limiting&apos;i nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/dagitik-brute-force-ve-ddos-icin-akilli-rate-limiting/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/dagitik-brute-force-ve-ddos-icin-akilli-rate-limiting/</guid><description>IP limiti dönen proxy&apos;lere yenilir: Redis sliding-window&apos;u hesap + IP + ASN&apos;de anahtarlayın, hesap kilidi ekleyin, volumetrik seli edge&apos;e bırakın.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/dagitik-brute-force-ve-ddos-icin-akilli-rate-limiting.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>guvenlik</category><category>redis</category></item><item><title>Graceful degradation: kritik olmayan servisleri yük altında nasıl izole ederim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/graceful-degradation-kritik-olmayan-servisleri-izole-etmek/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/graceful-degradation-kritik-olmayan-servisleri-izole-etmek/</guid><description>Kritik akışı (gez, sepet, ödeme) lüks bileşenlerden ayırın, lüksleri kısa timeout&apos;lu feature flag arkasına koyun, kill-switch&apos;i kriz gelmeden prova edin.</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/graceful-degradation-kritik-olmayan-servisleri-izole-etmek.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>mimari</category><category>olcekleme</category></item><item><title>Dağıtık sistemde Saga Pattern ile eventual consistency&apos;yi nasıl tasarlarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/dagitik-sistemde-saga-pattern-ile-eventual-consistency/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/dagitik-sistemde-saga-pattern-ile-eventual-consistency/</guid><description>Tek atomik işlemi telafi aksiyonlu yerel işlemlere bölün: adımları orchestrator kuyruktan sürsün, her adım idempotent olsun, olaylar outbox&apos;tan çıksın.</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/dagitik-sistemde-saga-pattern-ile-eventual-consistency.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>mikroservis</category><category>queue</category></item><item><title>PostgreSQL split-brain&apos;i quorum ve mutabakat ile nasıl önlerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-split-brain-quorum-ve-mutabakat-ile-onlemek/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-split-brain-quorum-ve-mutabakat-ile-onlemek/</guid><description>Failover&apos;ı elle yazmayın: Patroni + etcd ile terfiyi quorum&apos;a bağlayın, çoğunluktan kopan eski primary fencing ile kendini replica&apos;ya düşürsün.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-split-brain-quorum-ve-mutabakat-ile-onlemek.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>postgresql</category><category>veritabani</category></item><item><title>Üçüncü parti API bağımlılığında Circuit Breaker&apos;ı nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/ucuncu-parti-api-icin-circuit-breaker-deseni/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/ucuncu-parti-api-icin-circuit-breaker-deseni/</guid><description>Breaker tek başına yetmez: `connect_timeout` ve `timeout`&apos;u 800ms-2s&apos;ye çekin, bağımlılığı bulkhead ile izole edin, cache&apos;li bir fallback tanımlayın.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/ucuncu-parti-api-icin-circuit-breaker-deseni.md" rel="alternate" type="text/markdown"/><category>dayaniklilik</category><category>mimari</category><category>laravel</category></item><item><title>CDN&apos;de asset sürümleme: hash&apos;leme ve cache stratejisini nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/cdn-asset-surumleme-hashleme-ve-cache-stratejisi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/cdn-asset-surumleme-hashleme-ve-cache-stratejisi/</guid><description>Query-string busting&apos;i bırakın: asset&apos;i content-hash&apos;li adla `immutable` cache&apos;leyin, HTML&apos;i kısa ömürlü tutun, canlıya geçmeden önce yükleyin.</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/cdn-asset-surumleme-hashleme-ve-cache-stratejisi.md" rel="alternate" type="text/markdown"/><category>performans</category><category>ci-cd</category><category>altyapi</category></item><item><title>Elasticsearch&apos;te &apos;search-as-you-type&apos; performansını edge n-gram ile nasıl optimize ederim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/elasticsearch-anlik-arama-edge-ngram-ile-optimizasyon/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/elasticsearch-anlik-arama-edge-ngram-ile-optimizasyon/</guid><description>Autocomplete&apos;te wildcard kullanmayın; önekleri edge_ngram ile yazma anında üretip arama tarafında standart analyzer bırakın, sorgu term lookup&apos;a insin.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/elasticsearch-anlik-arama-edge-ngram-ile-optimizasyon.md" rel="alternate" type="text/markdown"/><category>performans</category><category>elasticsearch</category><category>veritabani</category></item><item><title>2-5 GB dosyaları PHP belleğini şişirmeden stream ile nasıl indirtirim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/buyuk-dosyalari-php-bellegini-sismeden-stream-ile-indirmek/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/buyuk-dosyalari-php-bellegini-sismeden-stream-ile-indirmek/</guid><description>2-5 GB dosyayı presigned URL ya da X-Accel-Redirect ile PHP&apos;nin dışından servis edin; zorundaysanız readStream ile chunk&apos;layıp buffering&apos;i kapatın.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/buyuk-dosyalari-php-bellegini-sismeden-stream-ile-indirmek.md" rel="alternate" type="text/markdown"/><category>performans</category><category>laravel</category><category>altyapi</category></item><item><title>HTTP/2 ve HTTP/3 (QUIC) API performansını nasıl etkiler?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/http-2-ve-http-3-quic-api-performansina-etkisi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/http-2-ve-http-3-quic-api-performansina-etkisi/</guid><description>HTTP/2&apos;yi hemen açın; çoklama ekran başına 4-5 isteği tek bağlantıya indirir, mobil kitle ağırlıktaysa HTTP/3 ekleyin ve domain sharding&apos;i kaldırın.</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/http-2-ve-http-3-quic-api-performansina-etkisi.md" rel="alternate" type="text/markdown"/><category>performans</category><category>altyapi</category><category>networking</category></item><item><title>PgBouncer&apos;da Session/Transaction/Statement modlarından hangisini seçmeliyim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/pgbouncer-session-transaction-statement-modu-ve-prepared-statement/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/pgbouncer-session-transaction-statement-modu-ve-prepared-statement/</guid><description>Web filosunda Transaction modunu seçin; bedeli protokol seviyesi prepared statement&apos;lardır, onları kapatın ya da PgBouncer 1.21+ desteğini açın.</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/pgbouncer-session-transaction-statement-modu-ve-prepared-statement.md" rel="alternate" type="text/markdown"/><category>performans</category><category>postgresql</category><category>veritabani</category></item><item><title>Yeni bir projeye mikroservislerle mi başlamalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/yeni-projeye-mikroservisle-mi-baslamali/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/yeni-projeye-mikroservisle-mi-baslamali/</guid><description>Sıfırdan başlayan çoğu üründe modüler monolitle başlayıp sınırları kodda zorlayın; bir modülü ancak ayrı ölçeklenmesi gerektiğinde servise terfi ettirin.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/yeni-projeye-mikroservisle-mi-baslamali.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>mikroservis</category></item><item><title>Autoscaling scale-in sırasında SIGTERM ile graceful shutdown&apos;ı nasıl sağlarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/autoscaling-sirasinda-sigterm-ile-graceful-shutdown/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/autoscaling-sirasinda-sigterm-ile-graceful-shutdown/</guid><description>SIGTERM&apos;de önce load balancer&apos;dan çıkıp yeni isteği kesin, açık işleri server.Shutdown(ctx) deadline&apos;ında bitirin ve grace süresini drain&apos;e hizalayın.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/autoscaling-sirasinda-sigterm-ile-graceful-shutdown.md" rel="alternate" type="text/markdown"/><category>performans</category><category>olcekleme</category><category>go</category></item><item><title>PostgreSQL&apos;de composite index kolon sırasını nasıl seçerim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-composite-index-kolon-sirasi-nasil-secilir/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-composite-index-kolon-sirasi-nasil-secilir/</guid><description>Tek bir (user_id, status, created_at DESC) composite index kurun: eşitlik kolonları başa, sıralama kolonu sona; kapsanan tekli indeksleri silin.</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/postgresql-composite-index-kolon-sirasi-nasil-secilir.md" rel="alternate" type="text/markdown"/><category>performans</category><category>postgresql</category><category>veritabani</category></item><item><title>Redis cache stampede&apos;i (thundering herd) nasıl önlerim — mutex lock mı, XFetch mi?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/redis-cache-stampede-mutex-lock-mu-xfetch-mi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/redis-cache-stampede-mutex-lock-mu-xfetch-mi/</guid><description>Çoğu durumda single-flight lock ve TTL jitter yeter; XFetch&apos;i recompute gerçekten pahalıyken açın ve her iki hâlde stale-while-revalidate ekleyin.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/redis-cache-stampede-mutex-lock-mu-xfetch-mi.md" rel="alternate" type="text/markdown"/><category>performans</category><category>redis</category><category>caching</category></item><item><title>Go&apos;da GC baskısını sync.Pool ve escape analizi ile nasıl azaltırım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/go-da-gc-baskisini-sync-pool-ve-escape-analizi-ile-azaltmak/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/go-da-gc-baskisini-sync-pool-ve-escape-analizi-ile-azaltmak/</guid><description>Duraklamaların ardındaki düşman tahsis hızıdır: pprof ile en çok tahsis edeni öldürün, hot path&apos;i sync.Pool ile havuzlayın, GOGC ayarını en sona bırakın.</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/go-da-gc-baskisini-sync-pool-ve-escape-analizi-ile-azaltmak.md" rel="alternate" type="text/markdown"/><category>performans</category><category>go</category></item><item><title>Laravel Octane (FrankenPHP) altında bellek sızıntısını nasıl debug ederim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/laravel-octane-frankenphp-bellek-sizintisi-nasil-debug-edilir/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/laravel-octane-frankenphp-bellek-sizintisi-nasil-debug-edilir/</guid><description>Önce memory_get_usage eğrisini çıkarın, service provider&apos;ları bisect edip suçluyu daraltın, stateful singleton&apos;ları Octane hook&apos;larında sıfırlayın.</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/laravel-octane-frankenphp-bellek-sizintisi-nasil-debug-edilir.md" rel="alternate" type="text/markdown"/><category>performans</category><category>laravel</category><category>octane</category></item><item><title>Multi-tenant SaaS&apos;ta veritabanı izolasyonu: ayrı DB mi, şema mı, tenant_id mi?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/multi-tenant-saas-veritabani-izolasyon-stratejisi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/multi-tenant-saas-veritabani-izolasyon-stratejisi/</guid><description>10.000 tenant&apos;ta database-per-tenant operasyonel olarak ölçeklenmez; her tabloda tenant_id tutup izolasyonu Postgres Row-Level Security&apos;ye gömün.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/multi-tenant-saas-veritabani-izolasyon-stratejisi.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>veritabani</category><category>olcekleme</category></item><item><title>Ödeme webhook&apos;u aynı bildirimi tekrar gönderiyor; idempotency&apos;i nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/webhook-mukerrer-bildirim-idempotency-ve-hmac/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/webhook-mukerrer-bildirim-idempotency-ve-hmac/</guid><description>HMAC&apos;i ham gövdede constant-time doğrulayın, hızlı 200 dönüp işi kuyruğa alın ve tekilliği event_id üzerindeki UNIQUE constraint&apos;e yaptırın.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/webhook-mukerrer-bildirim-idempotency-ve-hmac.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>guvenlik</category><category>api</category></item><item><title>PHP monolitten ödeme modülünü Strangler Fig ile nasıl koparırım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/monolitten-mikroservise-strangler-fig-ile-kademeli-gecis/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/monolitten-mikroservise-strangler-fig-ile-kademeli-gecis/</guid><description>Ödemeyi gateway&apos;de 5/20/100 ağırlıkla kaydırıp önce shadow&apos;da doğrulayın; asıl iş tabloları ayırmak, arkasında anti-corruption layer ve outbox durur.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/monolitten-mikroservise-strangler-fig-ile-kademeli-gecis.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>mikroservis</category><category>go</category></item><item><title>Cloudflare Workers + KV ile edge cache kurarsam invalidation&apos;ı nasıl yaparım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/cloudflare-workers-kv-ile-edge-cache-ve-invalidation/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/cloudflare-workers-kv-ile-edge-cache-ve-invalidation/</guid><description>Fiyat değiştiği an aynı transaction ya da outbox içinde KV&apos;ye write-through yapın veya key&apos;i silin; kısa TTL ve versiyonlu key yalnızca emniyet ağıdır.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/cloudflare-workers-kv-ile-edge-cache-ve-invalidation.md" rel="alternate" type="text/markdown"/><category>altyapi</category><category>cloudflare</category><category>caching</category></item><item><title>Mikroservislerde dağıtık izlemeyi (OpenTelemetry) nasıl kurarım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/mikroserviste-dagitik-izleme-opentelemetry-ile-nasil-kurulur/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/mikroserviste-dagitik-izleme-opentelemetry-ile-nasil-kurulur/</guid><description>W3C Trace Context&apos;te standartlaşıp propagation&apos;ı OTel SDK&apos;ya bırakın ve traceparent&apos;ı kuyruk mesajının header&apos;ına koyun; zincir orada kopuyor.</description><pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/mikroserviste-dagitik-izleme-opentelemetry-ile-nasil-kurulur.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>observability</category><category>mikroservis</category></item><item><title>WireGuard ile Docker ağları çakışıyor; routing&apos;i nasıl stabilize ederim?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/wireguard-ile-docker-agi-ip-cakismasi-ve-routing/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/wireguard-ile-docker-agi-ip-cakismasi-ve-routing/</guid><description>Çakışma runtime hatası değil adresleme planı sorunudur: Docker havuzunu daemon.json&apos;da pinleyin, AllowedIPs&apos;i DB subnet&apos;ine kısın, rotaları kalıcı yapın.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/wireguard-ile-docker-agi-ip-cakismasi-ve-routing.md" rel="alternate" type="text/markdown"/><category>altyapi</category><category>networking</category><category>docker</category></item><item><title>LLM sağlayıcısını (Ollama → Bedrock/OpenAI) nasıl soyutlamalıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/ollama-dan-uretimde-bedrock-openai-a-gecerken-llm-soyutlamasi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/ollama-dan-uretimde-bedrock-openai-a-gecerken-llm-soyutlamasi/</guid><description>Tek bir dar arayüz (complete(prompt, opts)) ve config ile seçilen üç implementasyon kurun; context penceresi, gecikme ve maliyeti config olarak taşıyın.</description><pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/ollama-dan-uretimde-bedrock-openai-a-gecerken-llm-soyutlamasi.md" rel="alternate" type="text/markdown"/><category>mimari</category></item><item><title>Yerel diskteki dosyaları S3&apos;e taşırken EFS ara çözüm olur mu?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/yerel-diskten-s3-e-gecerken-efs-ara-cozum-mu/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/yerel-diskten-s3-e-gecerken-efs-ara-cozum-mu/</guid><description>EFS&apos;i ara durak yapmayın; Flysystem&apos;in s3 diskine geçip okuma ve yazmayı Storage::disk() üzerinden yapın ve dual-read ile kesintisiz taşıyın.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/yerel-diskten-s3-e-gecerken-efs-ara-cozum-mu.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>altyapi</category><category>olcekleme</category></item><item><title>Laravel ve Go servisleri arasında mesaj şeması için Protobuf mu, JSON Schema mı?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/laravel-ve-go-arasinda-mesaj-semasi-protobuf-mu-json-schema-mi/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/laravel-ve-go-arasinda-mesaj-semasi-protobuf-mu-json-schema-mi/</guid><description>Yoğun Laravel-Go trafiğinde Protobuf ve bir schema registry seçin; JSON Schema&apos;yı hafif trafiğe bırakın ve gevşek array&apos;i sınırda tipli DTO&apos;ya çevirin.</description><pubDate>Sun, 03 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/laravel-ve-go-arasinda-mesaj-semasi-protobuf-mu-json-schema-mi.md" rel="alternate" type="text/markdown"/><category>mimari</category><category>mikroservis</category><category>go</category></item><item><title>Logları OpenSearch&apos;e gönderirken Fluent Bit ile arasına Kafka/Redis buffer koymalı mıyım?</title><link>https://www.muhammetsafak.com.tr/sor-bakalim/loglari-opensearch-e-gonderirken-araya-kafka-buffer-koymali-miyim/</link><guid isPermaLink="true">https://www.muhammetsafak.com.tr/sor-bakalim/loglari-opensearch-e-gonderirken-araya-kafka-buffer-koymali-miyim/</guid><description>Önce Fluent Bit&apos;in filesystem buffer&apos;ını açın; 40k/s kalıcıysa Kafka&apos;ya geçin, Redis listesini yalnızca kaybını göze aldığınız loglarda kullanın.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><atom:link href="https://www.muhammetsafak.com.tr/sor-bakalim/loglari-opensearch-e-gonderirken-araya-kafka-buffer-koymali-miyim.md" rel="alternate" type="text/markdown"/><category>altyapi</category><category>observability</category><category>kafka</category></item></channel></rss>