<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[sph.sh Blog]]></title>
        <description><![CDATA[Ayhan Sipahi, Berlin merkezli yazılım mühendisliği içgörüleri, mimari notlar ve teknik yazılar paylaşır.]]></description>
        <link>https://sph.sh/tr</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Sun, 17 May 2026 20:54:52 GMT</lastBuildDate>
        <atom:link href="https://sph.sh/rss/tr.xml" rel="self" type="application/rss+xml"/>
        <pubDate>Sun, 17 May 2026 20:54:51 GMT</pubDate>
        <copyright><![CDATA[2026 sph.sh]]></copyright>
        <language><![CDATA[tr]]></language>
        <ttl>60</ttl>
        <item>
            <title><![CDATA[AWS Bedrock ve CDK ile RAG Agent Kurmak]]></title>
            <description><![CDATA[AWS Bedrock + Knowledge Bases + OpenSearch Serverless üstüne CDK ile TypeScript kullanarak RAG agent kurmak — mimari, IAM bağlantısı, otomatik ingestion ve chat UI.]]></description>
            <link>https://sph.sh/tr/posts/aws-bedrock-rag-cdk-port/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-bedrock-rag-cdk-port/</guid>
            <category><![CDATA[aws-bedrock]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[rag]]></category>
            <category><![CDATA[opensearch-serverless]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[iam]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AWS, Bedrock Agent ile Knowledge Bases ve OpenSearch Serverless üçlüsünü yönetilen RAG yolu olarak konumlandırıyor: retrieval kodunu kendin yazmadan, belgeye dayalı sohbet uygulaması çıkarıyorsun. DigitalOcean rag-assistant şablonunun şeklini AWS-native servislere TypeScript ile CDK üzerinde taşıdım, uçtan uca dağıttım ve ilk koşunun düştüğünü gördüm. AWS Bedrock yönetilen RAG yığını CDK ile çalışıyor, ancak belge boşluğundan doğan iki açık ilk dağıtımını düşürecek: bölgeler arası inference profile için IAM açığı ve dağıtım anında otomatik ingestion job'un olmaması.</p>
<p><strong>Mimari eşleme</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Amazon Bedrock Knowledge Bases: Anatomi ve Confluence Şeklindeki Soru]]></title>
            <description><![CDATA[Bedrock Knowledge Base'in aslında ne olduğunu, hangi veri kaynaklarının ve vektör mağazalarının birinci sınıf desteklendiğini ve küçük korpuslarda konsol varsayılanının neden nadiren doğru seçim olduğunu platform mühendisi gözüyle inceliyoruz.]]></description>
            <link>https://sph.sh/tr/posts/bedrock-knowledge-bases-anatomy/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/bedrock-knowledge-bases-anatomy/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-bedrock]]></category>
            <category><![CDATA[rag]]></category>
            <category><![CDATA[vector-databases]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[knowledge-base]]></category>
            <category><![CDATA[confluence]]></category>
            <category><![CDATA[embeddings]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Konsol sihirbazının arkasındaki varsayılan</strong></p>
<p>Amazon Bedrock Knowledge Bases; bir konnektörü, bir chunker'ı, bir embedding modelini, bir vektör mağazasını ve bir retrieval API'sini tek bir yönetilen yüzeyde paketler. Confluence konnektörü aslında kılık değiştirmiş bir vektör mağazası kararıdır: AWS dokümantasyonu, Confluence Cloud'un "şu anda" yalnızca OpenSearch Serverless vektör mağazası ile kullanılabildiğini açıkça belirtir ve aynı kilitlenme SharePoint ve Salesforce için de geçerlidir. Bu tek kısıt mimariyi iki yola ayırır; konnektörü bağlamadan önce seçim yapmak sizi yeniden yazımdan kurtarır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kafka mı, Event Bus mı? SNS/SQS/EventBridge'i Aşmanız Gerektiğini Söyleyen Sinyaller]]></title>
            <description><![CDATA[Yönetilen bir event bus'tan Kafka'ya geçişi hak eden sinyaller ve rip-and-replace yapmadan taşımak için outbox tabanlı dört aşamalı geçiş planı.]]></description>
            <link>https://sph.sh/tr/posts/kafka-or-event-bus-migration-signals/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/kafka-or-event-bus-migration-signals/</guid>
            <category><![CDATA[kafka]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[sns]]></category>
            <category><![CDATA[sqs]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[migration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>SNS+SQS, EventBridge, Pub/Sub veya Service Bus üzerinde çalışan ekiplerin çoğu eninde sonunda bir duvara çarpar ve "Kafka'ya geçmeli miyiz?" sorusunu sorar. Sorun şu: "duruma bağlı" cevapları hangi koşulların gerçekten önemli olduğunu sıralamadığı için karar, en son okunan dokümana doğru kayar. Kafka; dayanıklılık, replay, sıralama ve sürdürülebilir throughput sorunlarının cevabıdır; yönetilen event bus'ta iki veya daha fazla somut sinyal ateşlenene kadar kalın, sonra rip-and-replace yerine transactional outbox ile aşamalı geçiş yapın.</p>
<p>Yazı, bugün üretimde bir event bus çalıştıran backend geliştiricileri ve cloud mimarları için. Yedi sinyali, sizi bus'ta tutması gereken karşı sinyalleri ve outbox desenine dayanan dört aşamalı geçiş planını sıralıyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Bedrock AgentCore'u CDK ile deploy etmek: hızlı başlangıç]]></title>
            <description><![CDATA[AgentCore Runtime üzerinde minimal bir Strands agent'ı CDK ile deploy etme rehberi — parametrize stack, arm64 build, deploy ve invoke akışı, ve ilk çağrıdan önce gereken IAM ve Marketplace ön koşulları.]]></description>
            <link>https://sph.sh/tr/posts/agentcore-cdk-quickstart/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/agentcore-cdk-quickstart/</guid>
            <category><![CDATA[aws-bedrock]]></category>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[infrastructure-as-code]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Çıkış noktası</strong></p>
<p>Önceki post AgentCore Runtime'ı mimari düzeyde anlatıyor: container, identity, memory, gateway. Bu yazı tam orada bırakıyor ve deployment sorusunu soruyor: AgentCore artık @aws-cdk/aws-bedrock-agentcore-alpha üzerinden CDK'dan erişilebilir, peki uçtan uca çalışan bir trial neye benziyor? Pratikte kod kısa ve ağırlığı alpha L2 taşıyor; ilk invoke sonuç dönmeden önce birkaç IAM ve Marketplace ön koşulunun yerine oturması gerekiyor.</p>
<p><strong>Ne kuruyoruz</strong></p>
<p>eu-central-1'de AgentCore Runtime üzerinde minimal bir Strands agent'ı deploy eden tek bir CDK stack'i; build script'i ve boto3 invoke yardımcısı dahil. Tam dosya yapısı:</p>
<p>[code block]</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Claude'u GitHub Action ile PR Reviewer Olarak Kurmak]]></title>
            <description><![CDATA[Anthropic'in claude-code-action'ını bir GitHub repo'suna eklemek için sıkılaştırılmış, kopyalanmaya hazır bir kurulum; üretim için güvenlik ve maliyet ayarları açıkça anlatılıyor.]]></description>
            <link>https://sph.sh/tr/posts/claude-code-action-pr-reviewer-setup/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/claude-code-action-pr-reviewer-setup/</guid>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[github-actions]]></category>
            <category><![CDATA[code-review]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[anthropic]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Tek bir reviewer'ın darboğaza dönüştüğü küçük takımlarda PR'lar geç merge edilir ve gün sonunda yorgun bir gözle onaylanır. Sıkıcı hata sınıfı (eksik null kontrolü, yutulmuş bir hata, yanlış logger, eklenmiş ama hiç çalıştırılmamış bir test) dikkatli bir ilk okuyucunun otuz saniyede yakaladığı, yorgun bir insanın ise üzerinden geçtiği şeydir. Anthropic'in baktığı anthropics/claude-code-action, bugün bir PR pipeline'ına AI ilk-okuma reviewer'ı eklemenin doğru varsayılanı: en düşük sürtünmeyle çalışan kurulum, Anthropic'in auth ve prompt injection sıkılaştırmalarını miras alıyor, kendisi gerekli reviewer sayılmadan normal branch protection ile birlikte çalışıyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TypeScript Geliştiricilerin Monolitten Lambda'ya Taşıdığı Beş Anti-Pattern]]></title>
            <description><![CDATA[DI container'lar, monolitik SDK'lar, god-handler'lar, modül üstü secret çağrıları ve ağır ORM'ler - soğuk başlatmada bedeli ve yerine geçen fonksiyonel yapı.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-typescript-anti-patterns/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-typescript-anti-patterns/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[cold-start]]></category>
            <category><![CDATA[bundle-size]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Problem</strong></p>
<p>Ekipler NestJS, Spring veya .NET monolitlerinden AWS Lambda'ya geçerken uzun ömürlü servislerde işe yarayan kalıpları yanlarında getiriyor. Bundle'lar şişiyor, cold start uzuyor ve platformun ekonomisi geri tepiyor. Lambda bir mikroservis değil, fonksiyondur - monolit OO/DI kalıpları bundle'ı şişirir, cold start'ı uzatır.</p>
<p>Hasarın çoğunu beş alışkanlık üretiyor: DI container'lar, modüler olmayan AWS SDK import'ları, god-handler servis sınıfları, modül üstünde senkron secret çağrısı ve ağır ORM'ler. Aşağıdaki her bölüm semptomu adlandırır, maliyeti açıklar ve fonksiyonel alternatifi verir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cloudflare Workers'a WASM Görsel Yeniden-Boyutlama Modülü Yüklemek]]></title>
            <description><![CDATA[Rust + WASM ile yazılmış bir görsel yeniden-boyutlama handler'ının Cloudflare Workers'ın binary-size, bellek ve CPU tavanlarına sığıp sığmayacağını POC öncesi inceleyen bir keşif yazısı.]]></description>
            <link>https://sph.sh/tr/posts/cloudflare-workers-wasm-image-resize/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cloudflare-workers-wasm-image-resize/</guid>
            <category><![CDATA[webassembly]]></category>
            <category><![CDATA[wasm]]></category>
            <category><![CDATA[cloudflare-workers]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[edge-computing]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Body'den JPEG alıp yeniden boyutlandırılmış JPEG döndüren bir POST /resize?w=800&q=85 handler'ı, Cloudflare Workers + WASM'ın bir görsel hattı sunucusu olarak en sade, oyuncak olmayan stres testidir. Tasarım üç edge-platform limitine aynı anda yüklenir: derlenmiş binary boyutu, isolate başına bellek ve istek başına CPU süresi. Bu yazı POC çalışmadan önce hangi limitin önce, hangi sırayla ve hangi sinyalle ısıracağını adlandırır.</p>
<p><strong>İş</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WebAssembly 101: Üç Bahis, Tek Bytecode]]></title>
            <description><![CDATA[Stack'ten bağımsız bir WebAssembly haritası (tarayıcıda performans, sunucuda WASI runtime, edge'de compute) üç farklı bahsi ayırarak hangi konuşmanın hangisinden bahsettiğini anlamanı sağlar.]]></description>
            <link>https://sph.sh/tr/posts/webassembly-101/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/webassembly-101/</guid>
            <category><![CDATA[webassembly]]></category>
            <category><![CDATA[wasm]]></category>
            <category><![CDATA[wasi]]></category>
            <category><![CDATA[edge-computing]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>WebAssembly konuşmaları sürekli birbirini ıskalıyor; çünkü tek bir kelime üç çok farklı mimari bahsi örtüyor. Frontend geliştirici "web'i hızlandırır" diye düşünüyor, backend geliştirici "container'ların yerine geçer" diye okuyor, platform geliştirici "edge'i çalıştırır" diye varsayıyor ve üçü de kısmen haklı. Bu yazı üç bahsi ayırıyor; böylece sonraki Wasm sohbetinde hangisinin masada olduğunu anlayabilesin.</p>
<p><strong>30 Saniyede WASM</strong></p>
<p>Yazının tezi, herhangi bir ekseni açmadan önce: <strong>Tek bytecode, üç ayrı bahis. Tarayıcıda performans, sunucuda WASI runtime, edge'de compute. Her biri farklı bir soruya cevap.</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[İzole Consumer Hesaplarına Event Fan-Out: Sıfır Dokunuşlu Producer, Domain Başına Sahiplik]]></title>
            <description><![CDATA[Çok takımlı AWS organizasyonları için platform mühendisliği varsayılanı: tek event, birçok consumer, her biri kendi hesabında kendi SQS ve DLQ'suyla; fan-out event bus katmanında yaşar.]]></description>
            <link>https://sph.sh/tr/posts/event-fanout-isolated-consumer-accounts/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/event-fanout-isolated-consumer-accounts/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[multi-account]]></category>
            <category><![CDATA[sqs]]></category>
            <category><![CDATA[dynamodb-streams]]></category>
            <category><![CDATA[cross-account]]></category>
            <category><![CDATA[platform-engineering]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bir producer servisi yeni consumer'ları midye gibi üstüne toplar. Event isteyen her yeni takım başka bir if enabled(x) publish(x) dalı ekler ve her yeni consumer için producer'ın deploy edilmesi gerekir. Dallar, uygulama koduymuş gibi görünen bir anahtar kutusudur; herhangi bir hatanın etki alanı ise ödeme işlemleriyle aynı hesabın içindedir.</p>
<p>Bu yazı, çok takımlı bir AWS organizasyonunda event omurgasının sahibi olan platform ve backend mühendisleri içindir. Audit, Customer Center, Marketing ve gelecekteki consumer'lar için varsayılan bir topoloji tanımlar ve farklı bir omurgaya ne zaman geçmek gerektiğini gösterir.</p>
<p><strong>Tez: fan-out event bus katmanında yaşar, uygulama kodunda değil</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[wasmCloud + NATS: Kilitlenme Aslında Event Bus Topolojisinde Yaşar]]></title>
            <description><![CDATA[Bir keşif tezi: event-driven sistemlerde vendor lock-in runtime katmanında değil, bus topolojisinde yaşar; wasmCloud ve NATS ise bus'ı taşınabilir bir primitif haline getiriyor.]]></description>
            <link>https://sph.sh/tr/posts/wasmcloud-nats-event-bus-portability/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/wasmcloud-nats-event-bus-portability/</guid>
            <category><![CDATA[wasmcloud]]></category>
            <category><![CDATA[nats]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[webassembly]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[aws-eventbridge]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Somut Problem</strong></p>
<p>Serverless kilitlenmesi üzerine konuşmaların çoğu runtime katmanına takılıyor: Lambda'ya karşı Cloud Functions, Workers'a karşı Containers. Event bus ise tesisat gibi ele alınıyor. Event-driven sistemlerde bu çerçeveleme tersine, çünkü runtime haftalar içinde değiştirilebilir, bus topolojisi ise çeyrekler içinde. Bu yazı, Lambda ve EventBridge ile zaten rahat çalışan ama wasmCloud ve NATS'a daha yakından bakmak gerekip gerekmediğini merak eden mühendisler için bir tez denemesi.</p>
<p><strong>Tez</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web ve Mobil için Asenkron API Desenleri: Görüşlü Bir Varsayılan]]></title>
            <description><![CDATA[Tek bir backend üzerinde çalışan web SPA ve mobil uygulama için uzun süreli işlere dair tek bir varsayılan desen ve onu geçersiz kılmanız gereken durumlar.]]></description>
            <link>https://sph.sh/tr/posts/async-api-patterns-web-mobile/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/async-api-patterns-web-mobile/</guid>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[websockets]]></category>
            <category><![CDATA[server-sent-events]]></category>
            <category><![CDATA[webhooks]]></category>
            <category><![CDATA[queues]]></category>
            <category><![CDATA[resilience]]></category>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[http]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Somut Problem</strong></p>
<p>Çoğu ürün API'si düz senkron istek/yanıt ile başlar. Login için, bir kullanıcı kaydını okumak için, basit bir arama için çalışır. Sonra bir uçnokta gerçek iş yapmak zorunda kalır.</p>
<p>Altı ila on saniye süren bir ödeme yetkilendirmesini düşünün. Bu kadar uzun bir spinner checkout dönüşümünü düşürür; kullanıcılar butona tekrar basar ve altta bir idempotency katmanı olmadığında backend ikinci bir ücretlendirmeyi kabul eder.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hepsine Hükmeden Tek Kurulum: Model-Bağımsız AI Kodlama Yapılandırması]]></title>
            <description><![CDATA[Claude Code, Codex, Copilot, Cursor ve OpenCode'un aynı kuralları okumasını sağlayan pratik bir repo düzeni ve taşınabilirliğin kırıldığı noktaların dürüst bir özeti.]]></description>
            <link>https://sph.sh/tr/posts/model-agnostic-ai-coding-setup/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/model-agnostic-ai-coding-setup/</guid>
            <category><![CDATA[ai-coding]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[github-copilot]]></category>
            <category><![CDATA[cursor]]></category>
            <category><![CDATA[opencode]]></category>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[developer-workflow]]></category>
            <category><![CDATA[agents-md]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Ekipler nadiren tek bir AI kodlama aracında uzlaşır; yalnızca Claude Code, Codex, Copilot, Cursor ya da OpenCode'dan biriyle çalışan bir repo, farklı bir araç seçen her katkı sağlayıcıyı dışarıda bırakır. Bu yazı, AGENTS.md dosyasını tek kaynak olarak kullanan somut bir düzen gösterir: diğer araçların beklediği her dosya adı için symlink ya da @-import, araçlar arası tool katmanı için MCP. Aynı zamanda hayalin kırıldığı yerleri de işaretler: skill'ler, slash komutları ve Windows symlink tuzakları.</p>
<p><strong>Problem</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Async Backend'ler İçin UX Rehberi: Optimistic, Decoupled, ya da Hiçbiri]]></title>
            <description><![CDATA[Async backend'le çalışan tasarımcılar için pragmatik rehber: üç etkileşim şekli, hangisi ne zaman, ve karşı durmanız gereken dört anti-pattern.]]></description>
            <link>https://sph.sh/tr/posts/ux-event-based-backends-optimistic-to-decoupled/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ux-event-based-backends-optimistic-to-decoupled/</guid>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[state-management]]></category>
            <category><![CDATA[patterns]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[mobile]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 18 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Spinner'lar Backend'inizden Gelen Bir Hata Raporudur</strong></p>
<p>Event-based bir backend, işi istek/yanıt döngüsünün dışına taşır: istemci gönderir, sunucu kabul edip kuyruğa alır ve durum değişikliği bir süre sonra gerçekleşir. Spinner, sistemin bu oturum için aktif olarak sonucu ürettiği sinyalini verir; ancak event-based bir akışta client tarafında beklenen bir iş yoktur. UI iki farklı durumu birleştirir (backend işi sıraya aldı vs. backend şu anda sonucu hesaplıyor); oysa bu iki durum kullanıcıya farklı sözler verir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Idempotency: API'lerde Güvenli Retry için Başlangıç Rehberi]]></title>
            <description><![CDATA[API, ödeme akışı ve mesaj tüketicisi geliştiren yazılımcılar için idempotency'ye pratik bir giriş. HTTP metot semantiği, idempotency key'leri, veritabanı upsert ve yaygın tuzakları çalışan Node.js örnekleriyle anlatır.]]></description>
            <link>https://sph.sh/tr/posts/idempotency-beginners-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/idempotency-beginners-guide/</guid>
            <category><![CDATA[idempotency]]></category>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <category><![CDATA[http]]></category>
            <category><![CDATA[reliability]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Idempotency, aynı işlemin defalarca çalıştırılmasının bir kez çalıştırılmasıyla aynı sonucu üretmesi özelliğidir. Para, yan etki ya da dağıtık iş tutan her API için kritiktir; çünkü altta yatan taşıma katmanları (HTTP, mobil radyolar, mesaj aracıları) başarısızlık durumunda niyetten bağımsız olarak retry yapar. Idempotent olmayan bir endpoint, her retry'ı bir duplicate yazmaya çevirir: çift ücretlendirme, tekrarlanan siparişler, iki kez işlenen işler.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Döngüyü Kapatmak: Mobil Uygulamalarda Reklam Harcamasından Ücretli Aboneye]]></title>
            <description><![CDATA[SKAN 4, AdAttributionKit ve ATT sonrası gizlilik döneminde reklam tıklamasını ücretli aboneliğe bağlayan ölçüm hattı için mühendislik rehberi. Olay taksonomisi, referans mimari ve mutabakat desenleri.]]></description>
            <link>https://sph.sh/tr/posts/mobile-ad-attribution-subscription-conversion/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mobile-ad-attribution-subscription-conversion/</guid>
            <category><![CDATA[ios]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[skadnetwork]]></category>
            <category><![CDATA[adattributionkit]]></category>
            <category><![CDATA[revenuecat]]></category>
            <category><![CDATA[storekit-2]]></category>
            <category><![CDATA[meta-capi]]></category>
            <category><![CDATA[attribution]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Abonelik uygulamalarında attribution, bir reklam tıklamasını veri ambarındaki doğrulanmış bir ücretli abonelik olayına bağlamak zorundadır; install ara bir sinyaldir, gelir olayı değildir ve SKAN 4 ile ATT, click-to-install bağlantısını install-to-subscription bağlantısından daha zor gözlemlenir hale getirir. Tek bir hattın birbirinden bağımsız saatlerle gelen üç kaynağı (SKAN postback'leri, mobil uygulama olayları, ödeme sağlayıcı makbuzları) uzlaştırması gerekir ki pazarlama, finans ve ürün aynı sayılar üzerinde çalışabilsin.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2026'da RevenueCat Alternatifleri: Mobil Uygulamalar için Abonelik Platformu Seçimi]]></title>
            <description><![CDATA[2026'da RevenueCat, Adapty, Qonversion, Apphud, Chargebee ve Stripe Billing arasında seçim yapmak için kıdemli geliştiricilere yönelik karar çerçevesi; fiyatlandırma matematiği, DMA etkisi ve migrasyon dersleri.]]></description>
            <link>https://sph.sh/tr/posts/revenuecat-alternatives-comparison-2026/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/revenuecat-alternatives-comparison-2026/</guid>
            <category><![CDATA[revenuecat]]></category>
            <category><![CDATA[adapty]]></category>
            <category><![CDATA[qonversion]]></category>
            <category><![CDATA[apphud]]></category>
            <category><![CDATA[stripe]]></category>
            <category><![CDATA[chargebee]]></category>
            <category><![CDATA[subscriptions]]></category>
            <category><![CDATA[paywall]]></category>
            <category><![CDATA[storekit]]></category>
            <category><![CDATA[in-app-purchase]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 09 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Mobil abonelik altyapısı katmanlı bir seçimdir: cihaz üstündeki SDK ve entitlement motoru, onun arkasındaki faturalama/katalog/vergi katmanı ve en üstteki paywall, deneyleme ve analitik araçları. İlk katmanda RevenueCat varsayılandır ve diğer iki katmanı da çoğu ekip için yeterince iyi karşılar; ancak brüt gelir üzerinden alınan %1 MTR ücreti yaklaşık 100 bin dolar MTR'ın üstünde matematiği değiştirir ve 2026 pazarı, varsayılanı belirli bir eksende güç karşılığında bırakan birkaç alternatif sunar: paywall deneylemede Adapty, analitik/fiyat oranında Qonversion, win-back akışlarında Apphud, çapraz platform faturalamada Chargebee ve Stripe Billing.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Zapier MCP ile İzin Kontrol Katmanı: AI Agent'lar için Geniş API Erişimini Yönetmek]]></title>
            <description><![CDATA[Zapier MCP'nin AI agent'lar için aksiyon bazlı beyaz liste, merkezi kimlik yönetimi ve insan onay mekanizması sunması. Özel proxy çözümlerine yönetilen bir alternatif.]]></description>
            <link>https://sph.sh/tr/posts/zapier-mcp-api-permission-control/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/zapier-mcp-api-permission-control/</guid>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[ai-integration]]></category>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[automation]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 05 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Doğrudan MCP sunucu entegrasyonları, AI agent'lara geniş ve çoğu zaman kontrolsüz API erişimi verir. Önceki yazıda en az yetki prensibini uygulamak için özel kapsamlı proxy'ler nasıl oluşturulur göstermiştik. Zapier MCP, yönetilen bir alternatif sunuyor: aksiyon bazlı beyaz liste, merkezi kimlik yönetimi ve insan onay mekanizması; proxy kodu yazmadan. Bu yazı, Zapier MCP'nin ne zaman doğru seçim olduğunu, yönetilen çoklu uygulama erişimi için nasıl yapılandırılacağını ve özel proxy'lerin hâlâ nerede avantajlı olduğunu ele alıyor.</p>
<p><strong>Sorun: MCP'de Kontrolsüz API İzinleri</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mobil IAP ve Paywall Stratejileri - App Store, Play Store, RevenueCat]]></title>
            <description><![CDATA[Mobil uygulama içi satın alma kuralları, paywall kalıpları ve sunucu tarafı makbuz doğrulama ile RevenueCat entegrasyonu üzerine pratik bir rehber.]]></description>
            <link>https://sph.sh/tr/posts/mobile-iap-paywall-strategies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mobile-iap-paywall-strategies/</guid>
            <category><![CDATA[in-app-purchase]]></category>
            <category><![CDATA[revenucat]]></category>
            <category><![CDATA[paywall]]></category>
            <category><![CDATA[app-store]]></category>
            <category><![CDATA[google-play]]></category>
            <category><![CDATA[mobile-development]]></category>
            <category><![CDATA[payment-systems]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Mobil monetizasyon ilk bakışta basit görünür -- ta ki ilk App Store red yanıtını alana ya da makbuz doğrulamanızda jailbreak'li cihazların premium içeriğe ücretsiz erişmesine izin veren bir açık keşfedene kadar. Uygulama mağazası ödeme kuralları, komisyon yapıları ve teknik gereksinimler, her mobil geliştiricinin dikkatli şekilde yönetmesi gereken karmaşık bir alan oluşturur.</p>
<p>Bu yazıda mobil IAP'nin pratik tarafını ele alıyoruz: her iki mağazanın gereksinimleri, farklı iş modelleri için çalışan paywall kalıpları, RevenueCat'in çapraz platform abonelik yönetimini neden basitleştirdiği ve event-driven mimari ile güvenilir bir makbuz doğrulama pipeline'ı nasıl kurulur.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Omnichannel Yetkilendirme Senkronizasyonu: Platformlar Arası Abonelik Erişimi]]></title>
            <description><![CDATA[EventBridge, webhook ve idempotent işleme kullanarak web, iOS ve Android genelinde abonelik erişimini tutarlı tutan güvenilir bir yetkilendirme senkronizasyon katmanı nasıl oluşturulur.]]></description>
            <link>https://sph.sh/tr/posts/omnichannel-entitlement-sync/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/omnichannel-entitlement-sync/</guid>
            <category><![CDATA[webhooks]]></category>
            <category><![CDATA[idempotency]]></category>
            <category><![CDATA[entitlements]]></category>
            <category><![CDATA[aws-eventbridge]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[payment-systems]]></category>
            <category><![CDATA[subscriptions]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Bir ürün web, iOS ve Android üzerinde abonelik sattığında, her platform kendi şemasında, kendi yaşam döngüsüyle ve kendi teslim gecikmesiyle abonelik olayları yayar. Yetkilendirme senkronizasyon katmanı, bu heterojen olayları "bu kullanıcı şu anda neye erişebilir?" sorusuna tek ve tutarlı bir cevaba dönüştüren parçadır. Platform başına naif bir handler, saatler içinde senkronizasyondan çıkar; asıl sorun webhook tesisatı değil, dağıtık durumun kendisidir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ödeme Sağlayıcıları ve Uyumluluk: Stripe, Adyen, Chargebee, Paddle, PayPal Karşılaştırması]]></title>
            <description><![CDATA[SaaS işletmeleri için ödeme sağlayıcılarının pratik karşılaştırması. Merchant of Record ve Payment Processor modelleri, PSD2/SCA uyumluluğu, KDV yönetimi ve doğru sağlayıcıyı seçmek için karar çerçevesi.]]></description>
            <link>https://sph.sh/tr/posts/payment-providers-comparison-compliance/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/payment-providers-comparison-compliance/</guid>
            <category><![CDATA[stripe]]></category>
            <category><![CDATA[adyen]]></category>
            <category><![CDATA[chargebee]]></category>
            <category><![CDATA[paddle]]></category>
            <category><![CDATA[paypal]]></category>
            <category><![CDATA[payment-systems]]></category>
            <category><![CDATA[compliance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Küresel ödeme kabulünün aynı şekilde davranmayan üç katmanı vardır: işlem işleme, vergi uyumluluğu ve satışın yasal sorumluluğu. Sağlayıcıyı yalnızca işlem ücretine bakarak seçen bir SaaS ekibi, diğer iki katmanı genellikle bir KDV denetimi, bir PSD2/SCA red oranı ya da bir chargeback politikası gün yüzüne çıkardığında fark eder. Asıl karar, ekibin hangi katmanları kendi yönettiği ve hangilerini dışarıya verdiğidir.</p>
<p>Bu yazı, SaaS işletmeleri için beş sağlayıcıyı (Stripe, Adyen, Chargebee, Paddle, PayPal) karşılaştırır. Payment Processor ve Merchant of Record ayrımını, PSD2/SCA ve KDV yükümlülüklerini ve ekip büyüklüğüne, coğrafyaya, iş modeline dayalı bir karar çerçevesini ele alır.</p>
<p><strong>Payment Processor ve Merchant of Record Farkı</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Abonelik Yaşam Döngüsü Yönetimi: Yükseltmeler, Dunning ve Dolandırıcılık Tespiti]]></title>
            <description><![CDATA[Abonelik durum makineleri, proration stratejileri, dunning yönetimi ve dolandırıcılık tespit kalıpları hakkında Stripe webhook'ları ve AWS EventBridge ile pratik bir rehber.]]></description>
            <link>https://sph.sh/tr/posts/subscription-lifecycle-management/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/subscription-lifecycle-management/</guid>
            <category><![CDATA[subscriptions]]></category>
            <category><![CDATA[stripe]]></category>
            <category><![CDATA[fraud-detection]]></category>
            <category><![CDATA[dunning]]></category>
            <category><![CDATA[churn]]></category>
            <category><![CDATA[payment-systems]]></category>
            <category><![CDATA[aws-eventbridge]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 02 Apr 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Abonelik faturalaması kısa bir mutlu yola ve gelir kaybedilmeden fark edilmeyen uzun bir uç durumlar kuyruğuna sahiptir. Naif bir proration adımı plan yükseltmelerinde çift ücret keser; varsayılan bir yeniden deneme politikası dunning sırasında kartları yakar; eksik dolandırıcılık sinyalleri sonunda chargeback olarak geri döner. Abonelikler tek bir işlem değildir; birer durum makinesidir ve her faturalama olayı çalıştırılabilen, başarısız olabilen veya tekrarlayabilen bir geçiştir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Başkalarının Claude Code Skill'lerini Kopyalamak Neden İşe Yaramaz]]></title>
            <description><![CDATA[Claude Code konfigürasyonlarını kopyalamak context window şişmesine, araç seçim kalitesinin düşmesine ve uyumsuz iş akışlarına yol açar. Token bütçesi hesapları ve kademeli iyileştirme yaklaşımıyla desteklenen, bilinçli yapay zeka aracı konfigürasyonu rehberi.]]></description>
            <link>https://sph.sh/tr/posts/why-copying-claude-code-skills-doesnt-work/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/why-copying-claude-code-skills-doesnt-work/</guid>
            <category><![CDATA[developer-experience]]></category>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[best-practices]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 23 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Claude Code ekosistemi artık 500'den fazla topluluk skill'i, 1.200'den fazla agent skill'i ve düzinelerce MCP sunucu dizini barındırıyor. Birinin "awesome" kurulumunu klonlama dürtüsü güçlü. Ancak konfigürasyonları kopyalamak üç birleşik soruna yol açar. Birincisi, gerçek koda yer bırakmayan context window şişmesi. İkincisi, modelin doğru aracı seçme yeteneğini düşüren araç kalabalığı. Üçüncüsü, kod tabanınla uyuşmayan iş akışları. Bu yazıda token matematiğini, araştırma verilerini ve bilinçli konfigürasyon oluşturmak için pratik bir çerçeve sunuyorum.</p>
<p><strong>Sorun: Kopyala-Yapıştır Konfigürasyon</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[SaaS Yetkilendirme için AWS Cognito + Verified Permissions]]></title>
            <description><![CDATA[AWS Cognito ve Verified Permissions ile SaaS yetkilendirme mimarisi. Cedar politika dili, çok kiracılı desenler, JWT token akışı, maliyet analizi ve TypeScript örnekleriyle yaygın hatalar.]]></description>
            <link>https://sph.sh/tr/posts/cognito-avp-saas-authorization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cognito-avp-saas-authorization/</guid>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cognito]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[saas]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>AWS Cognito kimlik doğrulamayı yönetir. AWS Verified Permissions (AVP) yetkilendirmeyi yönetir. Birlikte AWS'nin yerel SaaS yetkilendirme altyapısını oluşturur. Bu yazıda iki servisin nasıl entegre edildiğini, Cedar politikalarının kiracı izolasyonunu nasıl sağladığını ve B2B SaaS ürünleri için çok kiracılı yetkilendirmenin nasıl yapılandırılacağını inceliyoruz. TypeScript entegrasyon kodu, Cedar politika örnekleri, maliyet analizi ve Microsoft Entra ID yaklaşımıyla bir karşılaştırma içerir.</p>
<p>> <strong>Note</strong>: Bu yazı Harici Yetkilendirme Sistemleri serisinin 2. bölümüdür. 1. bölüm, daha geniş yetkilendirme platformu haritasını ve karar çerçevesini kapsar.</p>
<p><strong>Cognito'nun Yetkilendirmedeki Rolü</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Harici Yetkilendirme Yönetim Sistemleri: Mimarınız İçin Doğru Platformu Seçmek]]></title>
            <description><![CDATA[AWS Verified Permissions, SpiceDB, OpenFGA, Cerbos ve OPA dahil harici yetkilendirme platformlarının tarafsız değerlendirmesi. Mimari desenler, maliyet analizi ve mühendislik ekipleri için karar çerçevesi.]]></description>
            <link>https://sph.sh/tr/posts/external-authorization-management-systems/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/external-authorization-management-systems/</guid>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[opa]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Özel yetkilendirme sistemleri geliştirmek birçok uygulama için işe yarıyor. Ancak dağıtık sistemler giderek daha fazla, politika değerlendirme, ilişki yönetimi ve ayrıntılı erişim kontrolünü bir servis olarak sunan özel yetkilendirme altyapılarından fayda görüyor. Bu yazı mevcut platform haritasını çıkarıyor, mimari yaklaşımları karşılaştırıyor ve AWS Verified Permissions, SpiceDB, OpenFGA, Cerbos, OPA ve diğer platformlar arasında seçim yapmak için bir karar çerçevesi sunuyor. Bu yazı, belirli platformlara ve politika dillerine daha derinlemesine dalan bir serinin ilk yazısıdır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cedar vs Rego vs OpenFGA: Politika Dili Karşılaştırması]]></title>
            <description><![CDATA[Cedar, Rego, OpenFGA DSL ve Cerbos YAML/CEL politika dillerinin derinlemesine teknik karşılaştırması. Söz dizimi, performans kıyaslamaları, biçimsel doğrulama, araç desteği ve her dil için TypeScript entegrasyon örneklerini kapsar.]]></description>
            <link>https://sph.sh/tr/posts/policy-language-comparison-cedar-rego-openfga/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/policy-language-comparison-cedar-rego-openfga/</guid>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[opa]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Yetkilendirme için seçtiğin politika dili, güvenlik mimarinin tamamını şekillendirir. Politikaların nasıl yazılacağını, test edileceğini, dağıtılacağını ve denetleneceğini belirler. Daha sonra dil değiştirmek, tüm politikaları yeniden yazmak demektir. Bu yazı, dört ana yetkilendirme politika dilinin -- Cedar, Rego, OpenFGA DSL ve Cerbos YAML/CEL -- söz dizimi, performans özellikleri, biçimsel doğrulama, araç desteği ve TypeScript entegrasyon kalıpları açısından derinlemesine teknik karşılaştırmasını sunuyor. Amaç, geçiş maliyeti engelleyici hale gelmeden önce bilinçli bir dil seçimi yapmanı sağlamak.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[SpiceDB vs Auth0 FGA: İlişki Tabanlı Yetkilendirme Karşılaştırması]]></title>
            <description><![CDATA[SpiceDB ve Auth0 FGA (OpenFGA) arasında detaylı bir teknik karşılaştırma -- şema tasarımı, tutarlılık modelleri, dağıtım ve ölçeklenebilirlik açısından farklı tercihler yapan iki Zanzibar tabanlı yetkilendirme sistemi.]]></description>
            <link>https://sph.sh/tr/posts/spicedb-vs-auth0-fga/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/spicedb-vs-auth0-fga/</guid>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>SpiceDB ve Auth0 FGA, Zanzibar tabanlı iki önde gelen yetkilendirme sistemidir. Ancak temelde farklı tercihler yaparlar. SpiceDB, ZedToken'lar aracılığıyla güçlü tutarlılık garantileri sunan gRPC-öncelikli, kendi sunucunuzda barındırılabilen (veya Authzed üzerinden yönetilen) bir motorudur. Auth0 FGA ise farklı bir tutarlılık modeli ile OpenFGA üzerine kurulu, REST-öncelikli, tamamen yönetilen bir hizmettir. Bu yazı, her iki sistemin şema dillerini, mimarisini, tutarlılık modellerini ve entegrasyon kalıplarını yan yana karşılaştırır. Her iki sistem için de çalışan TypeScript örnekleri sunarak doğru seçimi yapmanıza yardımcı olmayı amaçlar.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Müşteri geri bildirimini ürün değerine dönüştürmek]]></title>
            <description><![CDATA[Kanal karmaşasında triage, keşif ve önceliklendirme için uygulanabilir bir operasyon çerçevesi.]]></description>
            <link>https://sph.sh/tr/posts/customer-feedback-product-value/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/customer-feedback-product-value/</guid>
            <category><![CDATA[customer-feedback]]></category>
            <category><![CDATA[product-management]]></category>
            <category><![CDATA[prioritization]]></category>
            <category><![CDATA[user-research]]></category>
            <category><![CDATA[product-discovery]]></category>
            <category><![CDATA[voice-of-customer]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 19 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Müşteri geri bildirimi nadiren tertemiz bir problem tanımı olarak gelir. Slack mesajları, destek yanıtları, satış notları, puanlar ve tek cümlelik özellik istekleri olarak gelir. Zor olan <strong>toplamak değil</strong>. Zor olan, o akışı <strong>en yüksek sesin veya en büyük logonun varsayılan olarak yol haritasını çekmesine izin vermeden</strong> kararlara dönüştürmektir.</p>
<p>Bu yazı, intake, triage, gerektiğinde keşif, teslimat ve müşteriye dönük kapalı döngüden oluşan operasyonel bir halka anlatıyor. Destek SLA’ları, mühendislik kuyrukları ve kusurlu metrikler gerçeğiyle harmanlanmış bir ürün pratiği.</p>
<p><strong>Geri bildirim neden bunaltıcı hissedilir</strong></p>
<p>Farklı ekiplerde tekrar eden birkaç örüntü:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Yetkilendirme Temelleri ve İzin Sistemleri Neden Bozulur]]></title>
            <description><![CDATA[Authentication ve authorization farkı, yaygın izin sistemi tuzakları, fail-closed prensibi ve her izin sisteminin karşılaması gereken hedefler.]]></description>
            <link>https://sph.sh/tr/posts/scalable-permission-systems-101-authorization-fundamentals/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/scalable-permission-systems-101-authorization-fundamentals/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Broken access control, OWASP Top 10'da (2021, 2025 güncellemesinde de doğrulandı) bir numaralı güvenlik açığı. İzin sistemi hataları genellikle tek bir eksik kontrolden kaynaklanmıyor -- kontrolleri unutmayı kolay, tutarlı tutmayı zor kılan bir mimariden kaynaklanıyor. Bu yazıda izin sistemlerinin neden bozulduğunu inceliyor, fail-closed prensibini tanıtıyor ve iyi tasarlanmış bir izin sisteminin karşılaması gereken hedefleri belirliyoruz.</p>
<p><strong>Kimlik Doğrulama ve Yetkilendirme</strong></p>
<p>Bu iki kavram genellikle tek bir "auth" kelimesi altında birleştiriliyor ve bu da karışıklığa yol açıyor. Temelde farklı konulardır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Service Layer ile Merkezi Yetkilendirme]]></title>
            <description><![CDATA[Dağınık izin kontrollerini merkezi bir service layer'a taşıyın, Next.js middleware guard'ları ekleyin ve derinlemesine savunma yetkilendirme mimarisi oluşturun.]]></description>
            <link>https://sph.sh/tr/posts/scalable-permission-systems-102-service-layer-centralization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/scalable-permission-systems-102-service-layer-centralization/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Post 101'de dağınık izin kontrollerinin kök sorunlarını teşhis ettik: tutarsız mantık, güvenlik açıkları ve bakım yükü. Bu yazı ilk çözümü sunuyor -- service layer pattern. Tüm yetkilendirme mantığı, uygulama kodunuz ile veritabanı arasında tek bir katmana taşınıyor. Next.js middleware ile route koruması ve birden fazla seviyede guard pattern'leriyle birleştiğinde, izin kontrollerinin bir kez ve doğru şekilde yapıldığı bir derinlemesine savunma mimarisi oluşuyor.</p>
<p><strong>Dağınık Kontroller Sorunu -- Kök Neden</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RBAC: TypeScript ile Type-Safe Rol Bazlı Erişim Kontrolü]]></title>
            <description><![CDATA[TypeScript ile type-safe bir RBAC sistemi oluşturun, birleşik bir can() fonksiyonu yazın, UI ve backend'de izinleri senkronize edin ve RBAC'ın sınırlarını anlayın.]]></description>
            <link>https://sph.sh/tr/posts/scalable-permission-systems-103-role-based-access-control/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/scalable-permission-systems-103-role-based-access-control/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[rbac]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Post 102 yetkilendirmeyi service layer'da merkezileştirdi; izin kontrollerinin <em>nerede</em> yapılacağı sorusunu çözdü. Ancak service layer içindeki izin kuralları hala sabit kodlanmış if/else zincirleri: if (session.role === 'admin') return true. Yeni bir rol eklemek, her servis dosyasındaki her yardımcı fonksiyonu değiştirmek anlamına geliyor.</p>
<p>Bu yazı o zincirleri RBAC (Rol Bazlı Erişim Kontrolü) ile değiştiriyor. Ferraiolo ve Kuhn tarafından 1992'de biçimlendirilen ve NIST tarafından INCITS 359-2004 olarak standartlaştırılan bir modeldir. Tek bir type-safe can() fonksiyonu tüm sabit kodlanmış kontrollerin yerini alıyor. Hem sunucu hem istemci tarafında çalışarak Post 102'nin bir sınırlama olarak belirttiği izin mantığı tekrarını ortadan kaldırıyo...</p><p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ABAC: Policy Engine ile Attribute Bazlı Erişim Kontrolü]]></title>
            <description><![CDATA[TypeScript'te builder pattern, koşullu izinler ve RBAC'ın sınırlarını aşan type-safe policy değerlendirmesi ile bir ABAC policy engine oluşturun.]]></description>
            <link>https://sph.sh/tr/posts/scalable-permission-systems-104-attribute-based-access-control/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/scalable-permission-systems-104-attribute-based-access-control/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[abac]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Post 103 type-safe RBAC'ı can(role, resource, action) fonksiyonu ve deklaratif bir izin matrisi ile oluşturdu. Yeni bir rol eklemek tek satırlık bir değişiklik. Sunucu ve istemci tek bir doğruluk kaynağını paylaşıyor.</p>
<p>Ancak bağlamsal kararlar (sahiplik, departman kapsamı, belge durumu) RBAC dışında özel yardımcı fonksiyonlar olarak kalmaya devam ediyor. canModifyDocument, canEditInDepartment, canPublishInReviewStatus gibi fonksiyonlar can() fonksiyonunun yanında çoğalıyor. Her biri tip sisteminin doğrulayamadığı özel bir if/else zinciri.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[İleri ABAC: Field-Level İzinler ve Veritabanı Entegrasyonu]]></title>
            <description><![CDATA[ABAC'ı ortam bazlı kurallar, alan seviyesinde okuma ve yazma izinleri ve tekrarlanan izin mantığını ortadan kaldıran otomatik veritabanı sorgusu filtreleme ile genişletin.]]></description>
            <link>https://sph.sh/tr/posts/scalable-permission-systems-105-advanced-abac-field-level-db/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/scalable-permission-systems-105-advanced-abac-field-level-db/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[abac]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Post 104 builder pattern ile type-safe bir ABAC policy engine oluşturdu. can(user, action, resource, data?) fonksiyonu özne, kaynak ve eylem niteliklerini deklaratif koşullar aracılığıyla değerlendiriyor. Sahiplik, departman kapsamı ve kaynak durumu artık dağınık yardımcı fonksiyonlar değil, policy kuralları.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Multi-Tenancy, Kütüphaneler ve Mimari Kararlar]]></title>
            <description><![CDATA[İzin sisteminize multi-tenant izolasyonu ekleyin, CASL'ı bir kütüphane alternatifi olarak değerlendirin ve doğru yetkilendirme mimarisini seçmek için karar çerçevelerini kullanın.]]></description>
            <link>https://sph.sh/tr/posts/scalable-permission-systems-106-multi-tenancy-libraries-decisions/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/scalable-permission-systems-106-multi-tenancy-libraries-decisions/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[abac]]></category>
            <category><![CDATA[casl]]></category>
            <category><![CDATA[multi-tenancy]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Post 101 bir izin sistemi için yedi hedef belirledi ve dağınık kontrol anti-pattern'ini ortaya koydu. Post 102 yetkilendirmeyi bir service layer içinde merkezileştirdi. Post 103 type-safe RBAC ekledi. Post 104 rol-izin matrisini ABAC policy engine ile değiştirdi. Post 105 ABAC'ı çevre koşulları, alan düzeyinde okuma/yazma izinleri ve veritabanı sorgu filtreleme ile genişletti.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MCP Katmanını Atla: AI Agentleri için Kapsamlı API Erişimi]]></title>
            <description><![CDATA[Production takımlarının geniş MCP erişimini neden scoped API proxy'leriyle değiştirdiğini anlatan rehber. Atlassian (Jira/Confluence), Google Workspace ve Notion örnekleriyle FastAPI proxy, CLI wrapper ve n8n workflow'ları.]]></description>
            <link>https://sph.sh/tr/posts/skip-mcp-layer-scoped-api-access/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/skip-mcp-layer-scoped-api-access/</guid>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[ai-integration]]></category>
            <category><![CDATA[rest-api]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 12 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Atlassian'ın Rovo MCP Server'ı yapay zeka agentlerini Jira ve Confluence'a bağlar, ancak geniş erişim modeli production ortamlarında ciddi sorunlar yaratır: zayıf proje kapsamı, yüksek token maliyeti ve ya hep ya hiç araç erişimi. Bu yazıda üç somut alternatifi ele alıyoruz: FastAPI/Express scoped proxy, ACLI CLI wrapper ve n8n workflow. Her biri çalışan kodlarla birlikte. Temel fikir: yapay zeka agentine yalnızca ihtiyacı olan endpoint'leri göster, geri kalanını gizle.</p>
<p><strong>Sorun: Atlassian Ekosisteminde MCP</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Control Tower Çoklu Hesap Stratejisi: Landing Zone'dan Kurumsal Governance'a]]></title>
            <description><![CDATA[OU yapısı, SCP, RCP, Account Factory for Terraform, IAM Identity Center ve merkezi güvenlik mimarisi konularını kapsayan AWS Control Tower çoklu hesap stratejisi tasarımı ve uygulaması için pratik bir rehber.]]></description>
            <link>https://sph.sh/tr/posts/aws-control-tower-multi-account-strategy/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-control-tower-multi-account-strategy/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-control-tower]]></category>
            <category><![CDATA[multi-account]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[iam]]></category>
            <category><![CDATA[scp]]></category>
            <category><![CDATA[landing-zone]]></category>
            <category><![CDATA[governance]]></category>
            <category><![CDATA[terraform]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AWS Control Tower, iyi governance'a sahip bir çoklu hesap AWS ortamının temelini oluşturur. Bu yazı, OU yapısı tasarımı, koruma mekanizması seçimi, Account Factory otomasyonu ve hesaplar arası erişim kalıpları için pratik karar verme süreçlerini ele alır. AWS dokümantasyonunu tekrarlamak yerine, hangi yaklaşımın ne zaman kullanılacağına ve pratik ödünleşimlere odaklanır.</p>
<p>> <em>AWS Control Tower Landing Zone 4.0 ve AFT v1.18.x'e göre son doğrulama: Mart 2026. AWS servisleri hızla gelişir; en son değişiklikler için her zaman resmi dokümantasyonu kontrol et.</em></p>
<p><strong>Çoklu Hesap Stratejisi Neden Önemli</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Maaş mı, Etki mi, Tatmin mi? Her Mühendisin Yüzleştiği Meslek Sorusu]]></title>
            <description><![CDATA[Maaş-etki-tatmin tartışmasının neden yanlış bir üçleme olduğu ve cevabınızın mesleki gelişim aşamanız hakkında ne söylediği.]]></description>
            <link>https://sph.sh/tr/posts/salary-impact-satisfaction-vocation/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/salary-impact-satisfaction-vocation/</guid>
            <category><![CDATA[career-growth]]></category>
            <category><![CDATA[job-satisfaction]]></category>
            <category><![CDATA[burnout]]></category>
            <category><![CDATA[developer-experience]]></category>
            <category><![CDATA[ikigai]]></category>
            <category><![CDATA[self-determination-theory]]></category>
            <category><![CDATA[career-planning]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 04 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Büyük Ölçekli Mikroservis Mimarisi için Ölçeklenebilir Bir GitHub Actions Platformu Oluşturmak]]></title>
            <description><![CDATA[Organizasyon düzeyinde paylaşımlı bir GitHub Actions platformu kurmak için pratik bir rehber: mimari kararlar, güvenlik yönetişimi, benimseme stratejisi ve bu süreçte yaptığımız en büyük 7 hata.]]></description>
            <link>https://sph.sh/tr/posts/github-actions-platform-scale/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/github-actions-platform-scale/</guid>
            <category><![CDATA[github-actions]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[platform-engineering]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[governance]]></category>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[best-practices]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[React Native Expo ile Sentry Entegrasyonu: Pratik Hızlı Rehber]]></title>
            <description><![CDATA[React Native Expo uygulamasına Sentry hata izleme entegrasyonu için adım adım rehber. SDK başlatma, Expo Router enstrümantasyonu, session replay, EAS Build ve EAS Update için source map yükleme ve sık karşılaşılan sorunları kapsar.]]></description>
            <link>https://sph.sh/tr/posts/sentry-react-native-expo-setup/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/sentry-react-native-expo-setup/</guid>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[expo]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[performance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 16 Feb 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bu rehber, Sentry'yi bir React Native Expo uygulamasına entegre etme sürecini kurulumdan production-grade source map yüklemesine kadar adım adım anlatıyor. Kritik yapılandırma detaylarını, Expo Go kısıtlamalarını, session replay kurulumunu ve hazırlıksız yakalandığında saatler kaybettirebilecek yaygın tuzakları kapsıyor. EAS Build ve EAS Update entegrasyonları production'da debug süresini önemli ölçüde kısaltır.</p>
<p><strong>Ön Koşullar</strong></p>
<p>Başlamadan önce şunlara ihtiyacın var:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Developer Relations: Ürünler ve Geliştirici Toplulukları Arasında Köprü Kurmak]]></title>
            <description><![CDATA[DevRel rolünün kapsamlı analizi: Marketing ve sales engineering'den farkları, gereken beceriler ve şirketlerin ne zaman developer relations'a yatırım yapması gerektiği.]]></description>
            <link>https://sph.sh/tr/posts/devrel-role-analysis/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/devrel-role-analysis/</guid>
            <category><![CDATA[career]]></category>
            <category><![CDATA[engineering-roles]]></category>
            <category><![CDATA[developer-relations]]></category>
            <category><![CDATA[community-building]]></category>
            <category><![CDATA[tech-careers]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 04 Feb 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Developer Relations (DevRel) sıklıkla "geliştiriciler için marketing" veya "konferanslarda konuşup seyahat ederek para kazanma" olarak yanlış anlaşılıyor. Bu, stratejik değeri gözden kaçırıyor: DevRel, geliştirici gerçekliğini sistematik olarak yakalayan ve ürün geliştirmeye geri aktaran, aynı zamanda geliştirici eğitimini hiçbir dokümantasyon ekibinin tek başına başaramayacağı ölçekte büyüten bir fonksiyondur. Bu analiz, DevRel'in gerçekte ne içerdiğini, bu rollerde kimlerin başarılı olduğunu ve şirketlerin bu fonksiyona ne zaman yatırım yapması gerektiğini inceliyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DynamoDB Rate Limiting: Single Table Design'da Ölçekte Stratejiler]]></title>
            <description><![CDATA[Single Table Design uygulamalarında DynamoDB throttling'i önleme ve yönetme stratejileri. Partition key tasarımı, write sharding, kapasite modları, DAX caching, retry pattern'leri ve yüksek throughput sistemler için CloudWatch monitoring konularını kapsar.]]></description>
            <link>https://sph.sh/tr/posts/dynamodb-rate-limit-strategies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/dynamodb-rate-limit-strategies/</guid>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[rate-limiting]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[single-table-design]]></category>
            <category><![CDATA[caching]]></category>
            <category><![CDATA[monitoring]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 28 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>DynamoDB'yi ölçekte kullanırken throttling kaçınılmaz bir sorun haline geliyor. ProvisionedThroughputExceededException hatası, tablo seviyesinde yeterli kapasite olmasına rağmen sıkça karşılaşılan bir durum. Bunun nedenini anlamak için DynamoDB'nin iç mekanizmalarına inmek gerekiyor.</p>
<p>Bu rehberde, Single Table Design uygulamalarında throttling'i önleme ve yönetme konusunda kanıtlanmış pattern'leri ele alacağız. Partition key stratejilerinden, sorunları kullanıcıları etkilemeden yakalayan monitoring yapılandırmalarına kadar her şeyi kapsıyoruz.</p>
<p><strong>DynamoDB'nin Throttling Mekanizmasını Anlamak</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MCP İleri Düzey Kalıplar: Yetenekler, İş Akışları, Entegrasyon ve RBAC]]></title>
            <description><![CDATA[Model Context Protocol implementasyonları için kurumsal düzeyde kalıplar: araç bileşimi, çoklu ajan orkestrasyonu, rol tabanlı erişim kontrolü ve production gözlemlenebilirlik.]]></description>
            <link>https://sph.sh/tr/posts/mcp-advanced-patterns-workflows-rbac/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mcp-advanced-patterns-workflows-rbac/</guid>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[ai-integration]]></category>
            <category><![CDATA[rbac]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[enterprise-architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>MCP benimsenmesi lansmanından bu yana hızla büyümüş olsa da, içeriklerin çoğu temel sunucu implementasyonunu kapsıyor. Bu yazı bir sonraki seviyeyi hedefliyor: uygun çoklu ajan iş akışları, araç bileşim kalıpları, RBAC ile kurumsal düzeyde güvenlik ve production gözlemlenebilirlik ile sofistike MCP tabanlı sistemlerin nasıl tasarlanacağı. Odak noktası, ölçekte çalışan kalıplar ve neyin başarılı olup neyin ileride sorun yarattığına dair somut örnekler.</p>
<p><strong>Ölçeklendirme Zorluğu</strong></p>
<p>Temel MCP entegrasyonlarını başarıyla deploy eden organizasyonlar, ölçeklendikçe öngörülebilir zorluklarla karşılaşıyor:</p>
<p><strong>Araç Patlaması</strong>: 5 araçla başlayıp 10 sunucu üzerinde 50'ye büyümek, ajanlar için keşif ve seçim sorunları yaratıyo...</p><p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RAG Veri Hazırlama: Yapay Zeka Sisteminin Başarısını Belirleyen Temel]]></title>
            <description><![CDATA[RAG sistemleri için doküman parsing, chunking stratejileri, bağlamsal zenginleştirme ve embedding optimizasyonunu kapsayan kapsamlı kılavuz]]></description>
            <link>https://sph.sh/tr/posts/rag-data-preparation/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/rag-data-preparation/</guid>
            <category><![CDATA[rag]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[embeddings]]></category>
            <category><![CDATA[langchain]]></category>
            <category><![CDATA[vector-databases]]></category>
            <category><![CDATA[data-preparation]]></category>
            <category><![CDATA[genai]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Çoğu RAG implementasyon başarısızlığı retrieval mimarisine değil, veri hazırlamaya dayanıyor. Ekipler retrieval parametrelerini haftalarca ayarlarken asıl problem kötü parse edilmiş dokümanlar veya uygunsuz chunking oluyor. Bu kılavuz, RAG sisteminizin kalite tavanını belirleyen kritik temeli kapsıyor.</p>
<p><strong>Veri Hazırlama Neden En Kritik RAG Adımı</strong></p>
<p>RAG implementasyonlarında yaygın bir pattern var: sofistike retrieval mimarileri (hybrid search, reranking, CRAG) hala kötü sonuçlar üretiyor. Kök neden neredeyse her zaman veri hazırlama katmanında.</p>
<p>[code block]</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Forward Deployed Engineer: Kod ile İş Dünyası Arasında Köprü Kuran Rol]]></title>
            <description><![CDATA[Forward Deployed Engineer rolünün analizi, Solutions Architect ve Technical Account Manager pozisyonlarından farkları ve AI implementasyonunun bu hibrit rolü neden vazgeçilmez kıldığı.]]></description>
            <link>https://sph.sh/tr/posts/forward-deployed-engineer-role-analysis/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/forward-deployed-engineer-role-analysis/</guid>
            <category><![CDATA[career]]></category>
            <category><![CDATA[engineering-roles]]></category>
            <category><![CDATA[ai-implementation]]></category>
            <category><![CDATA[enterprise-software]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Forward Deployed Engineer (FDE) rolü, teknoloji şirketlerinin kurumsal müşterilere nasıl değer sunduğunu temelden değiştiren bir yaklaşımı temsil ediyor. Bu model, satış sonrası desteğin ötesine geçerek müşteri sahasında gerçek mühendislik katkısı sunar. Tasarım aşamasında veya satış döngüsünde sona eren geleneksel çözüm rollerinin aksine, FDE'ler müşterilerle birlikte çalışarak production kodu yazıyor, gerçek entegrasyon zorluklarını çözüyor ve ürün yetenekleri ile iş gereksinimleri arasındaki boşluğu kapatıyor. Bu analiz, FDE rolünü farklı kılanları, AI implementasyonunun talebi neden hızlandırdığını ve bunun mühendislik kariyerleri için ne anlama geldiğini inceliyor.</p>
<p><strong>Ana Tez: Slide Değil, Kod</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TypeScript AI SDK Karşılaştırması: Agent Geliştirme için Vercel AI SDK vs OpenAI Agents SDK]]></title>
            <description><![CDATA[AI agent geliştirmek için TypeScript SDK'larının pratik karşılaştırması - Vercel AI SDK, OpenAI Agents SDK ve AWS Bedrock entegrasyonu. Kod örnekleri, karar frameworkleri ve production patternleri içeriyor.]]></description>
            <link>https://sph.sh/tr/posts/typescript-ai-sdk-agent-tooling/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/typescript-ai-sdk-agent-tooling/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 19 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>TypeScript'te AI agent geliştirmek, Vercel AI SDK'nin provider-agnostic yaklaşımı, OpenAI'nin native handofflu Agents SDK'si veya direkt provider SDK'leri arasında seçim yapmayı gerektiriyor. Bu karşılaştırma, bilinçli kararlar vermenize yardımcı olmak için tool calling patternlerini, streaming yeteneklerini ve production değerlendirmelerini inceliyor. Analiz, her yaklaşım için gerçek kod örnekleri, maliyet etkileri ve pratik karar frameworkleri içeriyor.</p>
<p><strong>TypeScript AI SDK Ekosistemi</strong></p>
<p>Agent geliştirme ekosistemi önemli ölçüde olgunlaştı. Eskiden özel çözümler bir araya getirdiğimiz yerde, şimdi üç ana yaklaşım TypeScript agent geliştirmesine hakim:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kurumsal AI Entegrasyon Seviyeleri: SaaS'tan Fine-Tuning'e Karar Rehberi]]></title>
            <description><![CDATA[Kurumsal AI entegrasyon kararları için pratik 6 seviyeli framework. ChatGPT, RAG, MCP agent veya fine-tuning ne zaman kullanılmalı, PII ve finans sektörü uyumluluk gereksinimleri odaklı rehber.]]></description>
            <link>https://sph.sh/tr/posts/ai-integration-levels-enterprise-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-integration-levels-enterprise-guide/</guid>
            <category><![CDATA[ai-integration]]></category>
            <category><![CDATA[enterprise-ai]]></category>
            <category><![CDATA[rag]]></category>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[fine-tuning]]></category>
            <category><![CDATA[compliance]]></category>
            <category><![CDATA[gdpr]]></category>
            <category><![CDATA[kvkk]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 17 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Kurumsal AI benimseme süreci genellikle tahmin edilebilir bir patern izler: ekipler basit alternatifleri doğrulamadan sofistike çözümlerin peşinden koşar. Bu rehber, teknik karar vericilerin AI yeteneklerini gerçek iş ihtiyaçlarıyla eşleştirmesine yardımcı olan 6 seviyeli entegrasyon framework'ü (L1-L6) sunar. Framework, PII'yi sert bir mimari kapısı olarak vurgular ve finans sektörü düzenleyici gereksinimlerini ele alarak hem aşırı mühendislik hem de uyumluluk başarısızlıklarından kaçınmak için somut karar kriterleri sağlar.</p>
<p><strong>Aşırı Mühendislik Tuzağı</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI/LLM Sözlüğü: Her Geliştiricinin Bilmesi Gereken 82 Terim]]></title>
            <description><![CDATA[AI/LLM alanında pratik, implementation odaklı bir sözlük. Token'lardan agent'lara, RAG'dan fine-tuning'e, kod örnekleri ve dürüst değerlendirmelerle.]]></description>
            <link>https://sph.sh/tr/posts/ai-llm-glossary-developer-terms/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-llm-glossary-developer-terms/</guid>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[genai]]></category>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[rag]]></category>
            <category><![CDATA[embeddings]]></category>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[fine-tuning]]></category>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[langchain]]></category>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[anthropic]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 17 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AI terminolojisi çoğu dokümantasyonun takip edemeyeceği kadar hızlı gelişiyor. Her hafta yeni terimler ortaya çıkıyor - RAG, RLHF, LoRA, MCP, GGUF - ve genellikle farklı kaynaklar arasında tutarsız tanımlarla. Bu gerçek bir problem yaratır: vendor materyalleri kavramları karıştırıyor ve bir terimin kavramsal anlamını bilmek, onu pratik olarak nasıl kullanacağını bilmekten önemli ölçüde farklı.</p>
<p>Bu sözlük bu boşluğu kapatıyor. Sadece tanımlar değil - LLM destekli sistemler geliştirmekten gelen implementation bağlamı, yaygın yanlış anlamalar ve pratik rehberlik. Bir PM "knowledge base'imizi embed etmekten" bahsettiğinde veya temperature 0'ın neden hallucination'ları engellemediğini açıklaman gerektiğinde referansın olarak düşün.</p>
<p><strong>Navigasyon</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TypeScript Formatlama ve Linting Araçları Karşılaştırması: Biome, Oxlint, ESLint ve Prettier]]></title>
            <description><![CDATA[Modern TypeScript linting ve formatlama araçlarının kapsamlı karşılaştırması - ESLint, Prettier, Biome ve Oxlint - performans ölçümleri, konfigürasyon örnekleri ve migration stratejileriyle.]]></description>
            <link>https://sph.sh/tr/posts/compare-typescript-formatting-linting-tools/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/compare-typescript-formatting-linting-tools/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[eslint]]></category>
            <category><![CDATA[prettier]]></category>
            <category><![CDATA[biome]]></category>
            <category><![CDATA[oxlint]]></category>
            <category><![CDATA[tooling]]></category>
            <category><![CDATA[linting]]></category>
            <category><![CDATA[formatting]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>TypeScript araç ekosistemi, Rust tabanlı alternatiflerin sahneye çıkmasıyla önemli ölçüde değişti. Farklı proje boyutlarında hem geleneksel hem de modern araçlarla çalışmak, "en iyi" seçimin büyük ölçüde belirli kısıtlamalara bağlı olduğunu öğretti. Bu karşılaştırma, TypeScript projeleriniz için bilinçli bir karar vermenize yardımcı olmak üzere ESLint, Prettier, Biome ve Oxlint'i inceliyor.</p>
<p><strong>Özet</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Beklenti Uçurumu: İşe Alım Vaatleri İşyeri Gerçekliğiyle Karşılaştığında]]></title>
            <description><![CDATA[Bait-and-switch işe alım, güç dengesizlikleri ve eksik istihdam konusunda kapsamlı bir analiz. Çalışanların kendilerini koruması ve işverenlerin güven inşa etmesi için uygulanabilir framework'ler.]]></description>
            <link>https://sph.sh/tr/posts/hiring-expectations-workplace-power-dynamics/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/hiring-expectations-workplace-power-dynamics/</guid>
            <category><![CDATA[hiring]]></category>
            <category><![CDATA[career-development]]></category>
            <category><![CDATA[workplace-dynamics]]></category>
            <category><![CDATA[management]]></category>
            <category><![CDATA[employee-experience]]></category>
            <category><![CDATA[organizational-culture]]></category>
            <category><![CDATA[professional-growth]]></category>
            <category><![CDATA[leadership]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 09 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Bu yazı, işverenlerin işe alım sürecinde vaat ettikleri ile çalışanların işe başladıktan sonra deneyimledikleri arasındaki kopukluğu inceliyor. Greenhouse, Gallup ve McKinsey araştırmalarından yararlanarak, bait-and-switch işe alım kalıplarını, istihdam ilişkilerindeki güç dinamiklerini ve eksik istihdamın psikolojik etkisini analiz ediyorum. Amaç, bu zorluklarla başa çıkan çalışanlar ve şeffaf işe alım uygulamalarıyla güven inşa etmek isteyen işverenler için uygulanabilir framework'ler sunmak.</p>
<p><strong>Problemin Boyutu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Sessiz Erozyon: Satın Alma Sonrası Kültürel Asimilasyon Ödediğiniz Değeri Nasıl Yok Ediyor]]></title>
            <description><![CDATA[Büyük şirketler küçük organizasyonları satın aldığında, genellikle kültürel asimilasyon yoluyla ödedikleri değeri yok ederler. M&A başarısızlık kalıplarından, organizasyonel psikoloji araştırmalarından ve kanıtlanmış entegrasyon stratejilerinden öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/post-acquisition-cultural-erosion/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/post-acquisition-cultural-erosion/</guid>
            <category><![CDATA[mergers-acquisitions]]></category>
            <category><![CDATA[organizational-culture]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[business-strategy]]></category>
            <category><![CDATA[cultural-integration]]></category>
            <category><![CDATA[talent-retention]]></category>
            <category><![CDATA[change-management]]></category>
            <category><![CDATA[industry-insights]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 07 Jan 2026 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Satın alma sonrası kültürel erozyon, anlaşma kapandıktan sonra satın alınan şirketin ayırt edici yeteneklerinin, insan kaynağının ve karar kalıplarının kademeli olarak kaybolmasıdır. Verilere göre gerçekleşmeyen M&A değerinin en büyük tek kaynağıdır: anlaşmaların %70-90'ı beklenen değeri sağlayamıyor ve bu başarısızlıkların %60-75'i pazar, ürün ya da finansal nedenlerden değil, kültürel uyumsuzluktan kaynaklanıyor. Kültürel erozyon rastgele bir kayma değil; etnosentrik liderlik, iç-grup ve dış-grup dinamikleri ve karar otoritesini satın alan tarafın mevcut normlarına akıtan bilinçsiz önyargı tarafından yürütülen sistematik bir süreçtir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda'da Bun ve Alternatif JavaScript Runtime'ları Çalıştırma]]></title>
            <description><![CDATA[Bun ve Deno'yu AWS Lambda üzerinde custom runtime kullanarak çalıştırmak için teknik implementasyon rehberi, gerçek performans benchmark'ları, maliyet analizi ve production deployment pattern'leri ile.]]></description>
            <link>https://sph.sh/tr/posts/bun-on-lambda-custom-runtimes/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/bun-on-lambda-custom-runtimes/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[bun]]></category>
            <category><![CDATA[deno]]></category>
            <category><![CDATA[custom-runtime]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>AWS Lambda resmi olarak Node.js'i destekliyor, ancak platformun custom runtime özelliği Bun ve Deno gibi alternatif JavaScript runtime'larına kapı açıyor. Bu rehber, bu runtime'ları Lambda üzerinde çalıştırmanın teknik implementasyonunu iki yaklaşımla inceliyor: Lambda Layer'ları ve container image'ları. Gerçek benchmark'lardan gelen performans karakteristiklerini, implementasyon tuzaklarını ve AWS'nin optimize edilmiş Node.js runtime'ı ile alternatif runtime'lar arasındaki trade-off'ları inceleyeceğiz.</p>
<p><strong>Custom Runtime Sorusu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Production Sistemleri için Prompt Engineering: Sistematik Bir Mühendislik Yaklaşımı]]></title>
            <description><![CDATA[Kurumsal LLM uygulamaları için production-grade prompt engineering sistemleri oluşturmak üzerine kapsamlı bir teknik rehber: sistematik tasarım, güvenlik, observability ve maliyet optimizasyonu.]]></description>
            <link>https://sph.sh/tr/posts/prompt-engineering-production/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/prompt-engineering-production/</guid>
            <category><![CDATA[prompt-engineering]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[ai-development]]></category>
            <category><![CDATA[production-systems]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[langchain]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>İyi promptlar yazmak basit olsa da, production için sağlam prompt engineering sistemleri oluşturmak tamamen farklı bir zorluk. Bu rehber, production-grade LLM uygulamaları için gereken sistematik mühendislik yaklaşımını kapsıyor: yapılandırılmış prompt tasarımı, lifecycle yönetimi, güvenlik savunmaları, kapsamlı observability ve maliyet optimizasyon stratejileri. Deneysel promptlarla enterprise-ready altyapı arasındaki boşluğu nasıl kapatacağını öğreneceksin.</p>
<p><strong>Production Boşluğu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[JavaScript'te SOLID Prensipleri: TypeScript ve React ile Pratik Rehber]]></title>
            <description><![CDATA[SOLID prensiplerininin modern JavaScript geliştirmede nasıl uygulanacağını öğrenin. TypeScript, React hooks ve fonksiyonel pattern'ler ile pratik örnekler - ayrıca ne zaman kullanmalı, ne zaman gereksiz.]]></description>
            <link>https://sph.sh/tr/posts/solid-principles-javascript/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/solid-principles-javascript/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[solid-principles]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[clean-code]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 26 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>SOLID prensipleri object-oriented programming için formüle edilmişti, ama modern JavaScript geliştirme farklı görünüyor - functional pattern'ler, React hooks, dynamic typing. Bu prensipler hala önemli mi? Cevap evet, ama önemli adaptasyonlarla.</p>
<p>Bu prensipler JavaScript'te değerli olmaya devam ediyor, ama çeviri gerekiyor. Sorun bunları kullanıp kullanmamak değil, inheritance yerine composition'ı ve katı interface'ler yerine duck typing'i tercih eden bir dilde nasıl uygulayacağımız.</p>
<p><strong>Özet</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS ile Edge Computing: CloudFront Functions vs Lambda@Edge]]></title>
            <description><![CDATA[Global uygulamalar için AWS edge computing çözümlerini seçme ve uygulama üzerine pratik örnekler ve maliyet optimizasyonu stratejileri içeren kapsamlı teknik rehber.]]></description>
            <link>https://sph.sh/tr/posts/edge-computing-aws/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/edge-computing-aws/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cloudfront]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[edge-computing]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 25 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Edge computing, kod yürütmeyi merkezi data center'lardan kullanıcılara yakın konumlara taşıyor. AWS CloudFront dünya çapında 1600+ edge location ile çalışıyor ve iki farklı edge computing çözümü sunuyor: CloudFront Functions ve Lambda@Edge. Her iki servis ile çalışmak bana doğru seçimin maliyet, performans ve implementasyon karmaşıklığı üzerinde önemli etkisi olduğunu öğretti.</p>
<p>AWS ile edge computing çözümleri geliştirirken öğrendiklerim.</p>
<p><strong>CloudFront Edge Computing'i Anlamak</strong></p>
<p>CloudFront ile edge computing, kodu kullanıcılara yakın edge location'larda çalıştırarak yürütmeyi mümkün kılıyor. Her iki servis de request'leri edge'de işleyerek latency sorunlarını çözüyor, ancak farklı kullanım senaryolarına hitap ediyorlar.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Amazon Cognito Derinlemesine: Temel Authentication'ın Ötesinde]]></title>
            <description><![CDATA[Amazon Cognito'nun gelişmiş özellikleri üzerine kapsamlı teknik kılavuz: özel authentication akışları, federation pattern'leri, multi-tenancy mimarileri, migration stratejileri ve production-grade güvenlik implementasyonu.]]></description>
            <link>https://sph.sh/tr/posts/cognito-deep-dive/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cognito-deep-dive/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cognito]]></category>
            <category><![CDATA[authentication]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[multi-tenancy]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[federation]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 24 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Amazon Cognito, uygulamalar için yönetilen authentication ve authorization sağlıyor, ancak production sistemleri temel sign-up ve sign-in akışlarından fazlasını gerektiriyor. Bu kılavuz, mid-to-senior developer'ların ölçeklenebilir, güvenli authentication sistemleri oluşturmak için ihtiyaç duydukları gelişmiş Cognito pattern'lerini inceliyor: multi-factor workflow'lar için özel Lambda trigger'ları, multi-tenant token customization için Pre Token Generation, enterprise identity provider'ları ile SAML/OIDC federation, caching stratejileriyle API Gateway entegrasyonu ve Auth0 veya özel sistemlerden sıfır downtime migration.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Effect Öğrenmek: TypeScript Geliştiricileri için Pratik Bir Rehber]]></title>
            <description><![CDATA[Effect'i anlamak, adım adım öğrenmek ve AWS Lambda ile entegre etmek için kapsamlı bir rehber. Gerçek kod örnekleri, yaygın hatalar ve üretim kullanımından pratik desenler içerir.]]></description>
            <link>https://sph.sh/tr/posts/learning-effect-adoption-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/learning-effect-adoption-guide/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[effect]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[dependency-injection]]></category>
            <category><![CDATA[error-handling]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 23 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Effect, fonksiyonel effect sistemlerini production uygulamalarına getiren kapsamlı bir TypeScript kütüphanesi. Typed error'lar, dependency injection ve structured concurrency sağlıyor; hepsi compile time'da zorunlu tutuluyor. Bu rehber Effect'in ne olduğunu, 12 haftalık bir süreçte nasıl öğrenileceğini ve AWS Lambda ile nasıl entegre edileceğini anlatıyor. Effect ile çalışmak bana açık hata yönetiminin sadece güvenlikle ilgili olmadığını öğretti; API'leri nasıl tasarladığınızı ve hata durumları hakkında nasıl düşündüğünüzü temelden değiştiriyor. Bu yazı pratik kod örnekleri, gerçek kullanımdan yaygın hatalar ve Effect düşünen ekipler için benimseme stratejileri içeriyor.</p>
<p><strong>Bu Rehber Hakkında Bir Not</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Secrets Manager & Parameter Store: Güvenlik Best Practices]]></title>
            <description><![CDATA[AWS Secrets Manager ve Systems Manager Parameter Store'u karşılaştıran kapsamlı teknik rehber - hangi servisi ne zaman kullanmalı ve gerçek dünya implementation pattern'leri.]]></description>
            <link>https://sph.sh/tr/posts/secrets-manager/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/secrets-manager/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[secrets-manager]]></category>
            <category><![CDATA[parameter-store]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[kms]]></category>
            <category><![CDATA[ecs]]></category>
            <category><![CDATA[eks]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 23 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AWS'de çalışan mühendisler sık sık aynı dilemmayla karşılaşır: secrets management için Secrets Manager mi yoksa Parameter Store mu kullanmalı? Her iki servis de sensitive data saklıyor ama farklı amaçlara hizmet ediyorlar ve farklı maliyet yapıları var. Bu rehber teknik karar kriterleri, complete implementation pattern'leri ve gerçek dünyadan öğrenilmiş dersleri içeriyor. Kısa kural: statik config → Parameter Store; RDS şifreleri ve rotation → Secrets Manager.</p>
<p><strong>Servisleri Anlamak</strong></p>
<p>Implementation'a geçmeden önce, bu servisler arasındaki teknik farkları ortaya koyalım. Cross-account secret paylaşımı gerekiyorsa Secrets Manager resource policy'leri daha esnek; Parameter Store için RAM (Resource Access Manager) kullanırsınız.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[API Versioning Stratejileri: İlk Release'den Sunset'a Kadar]]></title>
            <description><![CDATA[URL ve header versioning yaklaşımları, breaking change yönetimi, Sunset header'ları ile deprecation, AWS API Gateway pattern'leri, GraphQL schema evolution ve consumer-driven contract testing'i kapsayan kapsamlı bir API versioning rehberi.]]></description>
            <link>https://sph.sh/tr/posts/api-versioning/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/api-versioning/</guid>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[versioning]]></category>
            <category><![CDATA[rest-api]]></category>
            <category><![CDATA[graphql]]></category>
            <category><![CDATA[aws-api-gateway]]></category>
            <category><![CDATA[deprecation]]></category>
            <category><![CDATA[contract-testing]]></category>
            <category><![CDATA[pact]]></category>
            <category><![CDATA[openapi]]></category>
            <category><![CDATA[migration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>API versioning bir URL kuralı değil, bir sözleşme yönetimi problemidir. Bir sürüm, belirli bir istemci kümesine belirli bir kırıcı değişiklik kümesi hakkında verilen bir sözdür ve bunun arkasındaki strateji (URL yolu, header, content negotiation ya da sürümlenmiş kaynak grafı) istemci migrasyonlarının ne kadar maliyetli olacağını, kullanımdan kaldırılmış yüzeyin ne kadar süre deploy'da kalacağını ve geçişler sırasında altyapının ne kadar ikiye katlanacağını belirler. Çoğu API versioning yeniden yazımı, /v2/ ile v2. arasında seçim yapmakla değil, ekibin sözleşmeyi örtük olarak iletiyor olduğunu fark edip onu açık hale getirmekle ilgilidir.</p>
<p><strong>Özet</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Feature Flags at Scale: Implementation Pattern'leri ve Platform Karşılaştırması]]></title>
            <description><![CDATA[Distributed sistemlerde feature flag implementasyonu için production odaklı bir rehber. LaunchDarkly, Unleash ve AWS AppConfig karşılaştırması ile gradual rollout, A/B testing ve technical debt yönetimi için çalışan örnekler.]]></description>
            <link>https://sph.sh/tr/posts/feature-flags-scale/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/feature-flags-scale/</guid>
            <category><![CDATA[feature-flags]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[continuous-delivery]]></category>
            <category><![CDATA[trunk-based-development]]></category>
            <category><![CDATA[a-b-testing]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[release-management]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Feature flag'ler, kodu production'a deploy ederken feature görünürlüğünü runtime'da kontrol etmeni sağlar. Bu rehber, scale'de feature flag implementation pattern'lerini inceliyor ve LaunchDarkly, Unleash, AWS AppConfig platformlarını karşılaştırıyor. SDK entegrasyonu, targeting rule'ları, A/B testing entegrasyonu, circuit breaker pattern'leri ve flag technical debt yönetimi gibi kritik konuları ele alacağım. TypeScript örnekleri gradual rollout, kill switch ve lifecycle management stratejilerini gösteriyor.</p>
<p><strong>Deployment Koordinasyon Problemi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modern Web Uygulamaları için E2E Testing Stratejileri - Pratik Bir Mühendislik Rehberi]]></title>
            <description><![CDATA[Playwright ve Cypress ile güvenilir, sürdürülebilir E2E test suite'leri nasıl oluşturulur öğrenin. Framework seçimi, flaky test önleme, CI/CD entegrasyonu ve gerçek dünya optimizasyon stratejilerini kapsıyor.]]></description>
            <link>https://sph.sh/tr/posts/e2e-testing-strategies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/e2e-testing-strategies/</guid>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[playwright]]></category>
            <category><![CDATA[cypress]]></category>
            <category><![CDATA[e2e]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[performance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 20 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>End-to-end testing, Playwright ve Cypress gibi modern framework'lerle önemli ölçüde gelişti. Bu rehber, gerçek bug'ları yakalarken flakiness'ı minimize eden güvenilir E2E test suite'leri oluşturmak için pratik stratejileri inceliyor. Framework seçimi, mimari pattern'ler, API mocking, visual regression, accessibility testing ve CI/CD optimizasyonunu kapsıyoruz. Bu araçlarla çalışırken öğrendiğim şey, başarının tool seçiminden çok mimari kararlardan geldiği; doğru test isolation, stable selector'ler ve dengeli test pyramid'leri hangi framework'ü seçtiğinden daha önemli.</p>
<p><strong>Framework Seçimi: Playwright vs Cypress</strong></p>
<p><strong>Mimari Farklar</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Caching Stratejileri: Yerel Bellekten Distributed Sistemlere]]></title>
            <description><![CDATA[In-memory uygulama cache'lerinden distributed Redis cluster'lara ve CDN edge caching'e kadar çok katmanlı caching stratejilerini uygulamaya yönelik kapsamlı bir rehber. Cache-aside ve write-through pattern'leri ne zaman kullanılır, ElastiCache ile MemoryDB arasında nasıl seçim yapılır ve production'da cache stampede nasıl önlenir öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/caching-strategies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/caching-strategies/</guid>
            <category><![CDATA[caching]]></category>
            <category><![CDATA[redis]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[elasticache]]></category>
            <category><![CDATA[cloudfront]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 19 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Etkili caching çok katmanlı bir problemdir: en hızlı katman süreç içi bir LRU, sonraki uzaktaki bir cache (Redis ya da Memcached), onun üstünde edge'de bir CDN'dir ve her katmanın farklı geçersiz kılma semantiği, tutarlılık garantisi ve hata biçimi vardır. %15 hit rate'e sahip bir Redis cluster'ı, yanlış katman için yanlış iş yapıyor demektir; Redis'in o iş için yanlış araç olması gerekmez. Popüler bir anahtar expire olduğunda oluşan thundering herd de aslında bir cache problemi değil, tek katmanlı herhangi bir cache'in maruz kalacağı bir sürü-koruma (stampede) problemidir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Maliyet Optimizasyonu Araç Seti - Production Workload'lar için Pratik Stratejiler]]></title>
            <description><![CDATA[Native AWS servisleri, otomasyon ve kanıtlanmış implementation pattern'leri kullanarak AWS maliyetlerini %40-70 azaltmaya yönelik kapsamlı bir rehber.]]></description>
            <link>https://sph.sh/tr/posts/aws-cost-optimization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cost-optimization/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[finops]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[aurora]]></category>
            <category><![CDATA[spot-instances]]></category>
            <category><![CDATA[s3]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AWS maliyet optimizasyonu, tek bir sihirli araç bulmakla ilgili değil; native AWS servisleri, otomasyon ve organizasyonel pratikleri birleştiren sistematik bir yaklaşım inşa etmekle ilgili. Reaktif fatura analizine odaklanan geleneksel maliyet yönetiminin aksine, modern AWS maliyet optimizasyonu proaktif monitoring, right-sizing, akıllı satın alma stratejileri ve sürekli governance gerektirir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mozilla SOPS: GitOps için Gerçekten İşe Yarayan Secret Encryption]]></title>
            <description><![CDATA[Git repository'lerinde encrypted secret'ları yönetmek için Mozilla SOPS rehberi. Age encryption, AWS CDK pattern'leri, AWS Lambda entegrasyonu ve serverless workflow'lar için production-ready security stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/mozilla-sops-gitops-secrets/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mozilla-sops-gitops-secrets/</guid>
            <category><![CDATA[sops]]></category>
            <category><![CDATA[gitops]]></category>
            <category><![CDATA[terraform]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[encryption]]></category>
            <category><![CDATA[aws-kms]]></category>
            <category><![CDATA[age]]></category>
            <category><![CDATA[secrets-management]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws-sam]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Mozilla SOPS (Secrets OPerationS), GitOps'ta temel bir sorunu çözüyor: secret'ları version control'e güvenli bir şekilde nasıl commit edebiliriz ama aynı zamanda developer productivity'yi nasıl koruruz. Cloud-native secret store'lardan farklı olarak, SOPS dosyaları doğrudan Git repository'lerinde encrypt ediyor, YAML/JSON yapısını korurken hassas değerleri şifreliyor. Bu rehber age encryption, AWS Lambda entegrasyonu, AWS CDK workflow'ları, AWS SAM pattern'leri ve GitHub Actions, GitLab CI, Jenkins'te serverless deployment'lar için CI/CD otomasyonu gibi pratik implementation pattern'lerini kapsıyor.</p>
<p><strong>GitOps Secret Management Challenge</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Transactional Outbox Pattern: Dağıtık Sistemlerde Güvenilir Event Publishing]]></title>
            <description><![CDATA[Transactional Outbox Pattern'in dağıtık sistemlerdeki dual-write problemini nasıl çözdüğünü, PostgreSQL, DynamoDB ve CDC araçlarıyla pratik implementasyonlarını öğren.]]></description>
            <link>https://sph.sh/tr/posts/outbox-pattern/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/outbox-pattern/</guid>
            <category><![CDATA[distributed-systems]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cdc]]></category>
            <category><![CDATA[debezium]]></category>
            <category><![CDATA[patterns]]></category>
            <category><![CDATA[reliability]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 16 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Dual-write problemi, çalıştığım hemen her event-driven sistemde karşıma çıktı. Database'i güncelleyip aynı anda event yayınlaman gerektiğinde imkansız bir seçimle karşılaşırsın: işler ters gittiğinde hangi operasyon başarısız olacak? Transactional Outbox Pattern, her iki operasyonu da aynı database'e tek bir transaction içinde yazarak kanıtlanmış bir çözüm sunuyor. Ardından ayrı bir process eventleri güvenilir şekilde publish ediyor. Bu yazıda polling publishers, Change Data Capture (CDC) ve AWS serverless pattern'lerini kullanarak pratik implementasyonları inceliyoruz.</p>
<p><strong>Dual-Write Problemi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tech Şirketlerinde Kariyer Seviyeleri - Entry'den Distinguished Engineer'a]]></title>
            <description><![CDATA[Büyük tech şirketlerinde kariyer ilerlemesini anlamak, seviye eşleştirmelerini çözmek ve mühendislik kariyerinde stratejik kararlar almak için pratik bir rehber.]]></description>
            <link>https://sph.sh/tr/posts/career-levels-tech-companies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/career-levels-tech-companies/</guid>
            <category><![CDATA[career-growth]]></category>
            <category><![CDATA[engineering-levels]]></category>
            <category><![CDATA[staff-engineer]]></category>
            <category><![CDATA[principal-engineer]]></category>
            <category><![CDATA[big-tech]]></category>
            <category><![CDATA[compensation]]></category>
            <category><![CDATA[career-planning]]></category>
            <category><![CDATA[ic-vs-management]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Tech şirketlerindeki kariyer seviyeleri, özellikle şirket değiştirirken veya terfi planlarken mühendisleri sıklıkla kafasını karıştırıyor. Bu rehber, Amazon, Google, Meta, Microsoft, Spotify ve Zalando'daki kariyer seviyelerini inceliyor, eşdeğer seviyeleri eşleştiriyor ve her seviyenin scope, özerklik ve impact açısından ne anlama geldiğini açıklıyor. Terfilerde gezinme, Staff-level iş bulma ve kariyer yolu hakkında bilinçli kararlar verme konusunda pratik içgörüler paylaşacağım.</p>
<p><strong>Seviye Karmaşası Problemi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RAG Mimari Desenleri: Temel Vector Search'ün Ötesinde]]></title>
            <description><![CDATA[Hybrid search, reranking, GraphRAG ve self-corrective pattern'ler dahil gelişmiş RAG tekniklerine dair kapsamlı rehber. Production AWS implementasyonu örnekleriyle.]]></description>
            <link>https://sph.sh/tr/posts/rag-architecture-patterns/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/rag-architecture-patterns/</guid>
            <category><![CDATA[rag]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[vector-databases]]></category>
            <category><![CDATA[aws-bedrock]]></category>
            <category><![CDATA[opensearch]]></category>
            <category><![CDATA[langchain]]></category>
            <category><![CDATA[knowledge-graphs]]></category>
            <category><![CDATA[embeddings]]></category>
            <category><![CDATA[semantic-search]]></category>
            <category><![CDATA[genai]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Retrieval-Augmented Generation (RAG) sistemleri genellikle temel vector similarity search ile başlar, ancak bu yaklaşım multi-hop reasoning, exact keyword match ve complex query'lerde yetersiz kalır. Bu rehber, hybrid search, multi-stage reranking, intelligent chunking stratejileri, self-corrective retrieval (CRAG) ve knowledge graph'ler (GraphRAG) aracılığıyla bu sınırlamaları aşan gelişmiş RAG mimari desenlerini inceliyor. AWS Bedrock Knowledge Bases ve OpenSearch kullanarak pratik implementasyon pattern'lerini, production'da latency, maliyet ve accuracy arasındaki trade-off'ları ele alıyor ve RAGAS metrikleriyle evaluation framework'leri kuruyoruz. Çalışan kod örnekleri her bir pattern'i gerçekçi performance benchmark'larıyla gösteriyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS AppSync & GraphQL: Production-Ready Real-time API'ler Geliştirmek]]></title>
            <description><![CDATA[AWS AppSync ile ölçeklenebilir real-time API'ler geliştirmek için kapsamlı bir rehber: JavaScript resolver'lar, subscription filtering, caching stratejileri ve infrastructure as code pattern'leri.]]></description>
            <link>https://sph.sh/tr/posts/appsync-graphql/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/appsync-graphql/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[appsync]]></category>
            <category><![CDATA[graphql]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[real-time]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AWS AppSync, yönetilen WebSocket altyapısı, otomatik veri senkronizasyonu ve conflict resolution ile real-time GraphQL API'leri geliştirmeyi kolaylaştırıyor. Bu rehber, AppSync mimarisi, modern JavaScript resolver'lar, enhanced subscription filtering, caching stratejileri ve AWS CDK ile production deployment pattern'lerini inceliyor. AppSync ile çalışmak bana doğru resolver tipini ve data modeling stratejisini seçmenin hem performans hem de maliyet üzerinde önemli etkisi olduğunu öğretti; bu yazıda production ortamlarında işe yarayan pattern'leri paylaşıyorum.</p>
<p><strong>Problem Tanımı</strong></p>
<p>Real-time özellikler içeren modern uygulamalar geliştirmek, basit REST API development'ın ötesinde birkaç teknik zorluk sunuyor:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Agent Güvenliği: Production Sistemler için Guardrail'ler ve Defense Pattern'leri]]></title>
            <description><![CDATA[Production ortamında AI agent'ları güvenli hale getirmek için AWS Bedrock Guardrails, defense-in-depth stratejileri ve prompt injection, tool misuse ve multi-agent saldırılarını önlemeye yönelik pratik implementasyon pattern'leri rehberi.]]></description>
            <link>https://sph.sh/tr/posts/ai-agent-security/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-agent-security/</guid>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[aws-bedrock]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[prompt-injection]]></category>
            <category><![CDATA[guardrails]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[architecture-patterns]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AI agent'ları deneysel prototiplerden production sistemlere geçerken güvenlik kritik hale geldi. 2025'te organizasyonların %13'ü AI uygulama ihlali yaşadı ve %97'si uygun erişim kontrollerine sahip değil. Bu rehber, AWS Bedrock Guardrails, defense-in-depth stratejileri, prompt injection önleme, tool authorization ve multi-agent güvenlik konularını pratik implementasyon pattern'leriyle inceliyor. Production AI sistemleriyle çalışırken öğrendim ki, geleneksel güvenlik sınırları stokastik modeller için tam olarak geçerli değil. Defense-in-depth opsiyonel değil, zorunlu.</p>
<p><strong>Problem Context'i</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Platform Engineering: Geliştiricilerin Gerçekten Kullanmak İsteyeceği Internal Developer Platformları Oluşturmak]]></title>
            <description><![CDATA[Golden paths, self-servis altyapı ve product thinking kullanarak Internal Developer Platform (IDP) oluşturmanın pratik rehberi. Backstage, Port, AWS servisleri, DORA ötesi metrikler ve yaygın hatalar.]]></description>
            <link>https://sph.sh/tr/posts/platform-engineering-idp/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/platform-engineering-idp/</guid>
            <category><![CDATA[platform-engineering]]></category>
            <category><![CDATA[developer-experience]]></category>
            <category><![CDATA[backstage]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[internal-developer-platform]]></category>
            <category><![CDATA[golden-paths]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Platform Engineering, golden paths ve standartlaştırılmış workflow'lar aracılığıyla self-servis altyapı sağlayan Internal Developer Platformları oluşturur. Bu rehber IDP mimarisi, implementasyon desenleri, araç seçenekleri (Backstage, Port, AWS servisleri), başarı metrikleri ve geliştiricilerin gerçekten kullanacağı platformlar oluştururken karşılaşılan yaygın hataları kapsıyor.</p>
<p><strong>Platform Engineering'i Anlamak</strong></p>
<p>Platform ekipleriyle çalışmalardan öğrendiğim, <strong>Platform Engineering</strong>'in temelde software engineering organizasyonları için self-servis yetenekler sağlayan toolchain'ler ve workflow'lar tasarlamak olduğu. Temel değişim, internal developer'ları kontrol edilecek kullanıcılar yerine müşteri olarak görmek.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pact ile Contract Testing - Microservislerde API Uyumluluğunu Sağlama]]></title>
            <description><![CDATA[TypeScript microservislerde consumer-driven contract testing'i Pact ile uygulamaya yönelik pratik bir kılavuz. Breaking API değişikliklerini deployment öncesi yakalayın ve integration test yükünü azaltın.]]></description>
            <link>https://sph.sh/tr/posts/contract-testing-pact/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/contract-testing-pact/</guid>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[pact]]></category>
            <category><![CDATA[contract-testing]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[integration-testing]]></category>
            <category><![CDATA[api-compatibility]]></category>
            <category><![CDATA[production]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 11 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Pact ile consumer-driven contract testing, microservislerdeki kritik bir sorunu çözüyor: geniş end-to-end test yükü olmadan distributed team'ler arasında API uyumluluğunu korumak. Bu kılavuz TypeScript'te pratik implementasyonu gösteriyor - consumer test'lerinden CI/CD pipeline entegrasyonuna kadar. Temel bulgular: contract testing integration test süresini %60-70 azalttı, breaking change'leri deployment öncesi yakaladı ve bağımsız servis evrimini mümkün kıldı. Yaklaşım unit test'ler (çok izole) ile E2E test'ler (çok yavaş) arasındaki boşluğu dolduruyor, API uyumluluğunda hızlı feedback sağlıyor - ancak sınırlamalarını da kabul ediyor: servis sınırlarını validate eder, business workflow'ları değil.</p>
<p><strong>API Uyumluluk Problemi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Custom MCP Server Geliştirme: Production-Ready Kılavuz]]></title>
            <description><![CDATA[TypeScript ile organizasyonunuzun internal sistemleri için custom Model Context Protocol serverları nasıl geliştirip, güvenli hale getirip, deploy edeceğinizi öğren. Authentication, monitoring ve Kubernetes deployment örnekleriyle.]]></description>
            <link>https://sph.sh/tr/posts/custom-mcp-servers/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/custom-mcp-servers/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[authentication]]></category>
            <category><![CDATA[kubernetes]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Model Context Protocol (MCP), büyük AI providerlar arasında hızla standart haline geldi. GitHub ya da Slack gibi yaygın servisler için hazır serverlar işe yarasa da, organizasyonların internal API'leri entegre etmek, güvenlik politikalarını uygulamak ve domain-specific logic'i encode etmek için custom serverlar gerekiyor. Bu rehber, TypeScript ile production-ready custom MCP server geliştirmeyi anlatıyor: başlangıç setup'tan Kubernetes deployment'a kadar. Authentication, circuit breaker'lar, audit logging ve monitoring için çalışan kod örnekleriyle.</p>
<p><strong>Custom Integration Challenge</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[SNS/SQS Cross-Account Fan-Out: AWS'de Multi-Account Event Dağıtımı]]></title>
            <description><![CDATA[Amazon SNS ve SQS kullanarak güvenli cross-account event dağıtımı nasıl yapılır öğrenin. IAM policy'leri, KMS şifreleme, AWS CDK implementasyonu ve production'da karşılaşılan yaygın sorunları kapsıyor.]]></description>
            <link>https://sph.sh/tr/posts/sns-sqs-cross-account-fanout/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/sns-sqs-cross-account-fanout/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-sns]]></category>
            <category><![CDATA[aws-sqs]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 10 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Cross-account SNS/SQS fan-out, AWS hesap sınırları arasında güvenli event dağıtımı sağlıyor. Bu mimari pattern, bir hesaptaki tek bir SNS topic'in, farklı hesaplardaki birden fazla SQS queue'ya mesaj göndermesini sağlarken, yönetimsel izolasyonu koruyarak event-driven iletişimi mümkün kılıyor. Bu rehber, IAM policy'leri, KMS şifreleme, AWS CDK kurulumu ve production'da ortaya çıkan yaygın sorunların troubleshooting'ini içeriyor.</p>
<p><strong>Cross-Account Fan-Out Neden Önemli</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Workload'ları için FinOps: Production'da LLM Maliyet Yönetimi]]></title>
            <description><![CDATA[Token-based pricing, production LLM uygulamaları için benzersiz maliyet zorlukları yaratır. Prompt caching, model routing ve token budget'ları ile kaliteden ödün vermeden maliyetleri %60-80 azaltmak için sistematik optimizasyon stratejilerini öğren.]]></description>
            <link>https://sph.sh/tr/posts/finops-ai-workloads/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/finops-ai-workloads/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[finops]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[bedrock]]></category>
            <category><![CDATA[openai]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[performance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 09 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Production'da Large Language Model çalıştırmak, geleneksel cloud infrastructure'dan temelden farklı bir maliyet modeli sunuyor. Token-based pricing, maliyetlerin kullanım pattern'larına, prompt tasarımına ve model seçimine göre 100 kat değişebileceği anlamına geliyor. Öngörülebilir compute-hour faturalandırmanın aksine, LLM harcamaları kötü optimize edilmiş prompt'lardan veya sınırsız tool kullanımından beklenmedik şekilde artabiliyor.</p>
<p>Bu rehber, prompt caching (%90 tasarruf), intelligent model routing (%30-50 azalma), token budget enforcement ve semantic caching gibi sistematik LLM maliyet optimizasyon yaklaşımlarını inceliyor. Bu pattern'ları uygulayan ekipler tipik olarak kaliteyi koruyarak %60-80 maliyet azalması sağlıyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Chatbot'lardan Otonom Agent'lara: Mimari Desenler]]></title>
            <description><![CDATA[Kural tabanlı chatbot'lardan otonom AI agent'larına mimari evrimi keşfet. ReAct, Plan-and-Execute ve çoklu-agent desenleri TypeScript implementasyonları ve pratik geçiş stratejileriyle öğren.]]></description>
            <link>https://sph.sh/tr/posts/chatbots-to-autonomous-agents/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/chatbots-to-autonomous-agents/</guid>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[chatbots]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[design-patterns]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Kural tabanlı chatbot'lardan otonom AI agent'larına geçiş, sadece bir yetenek yükseltmesi değil; temel bir mimari değişimi temsil ediyor. Chatbot'lar önceden tanımlanmış intent'lere göre scriptli konuşmalar takip ederken, AI agent'ları memory, planlama yetenekleri ve tool erişimine sahipler. Bu, onların karmaşık görevleri otonomca parçalayabilmesini, kararlar alabilmesini ve sistemler arası çok adımlı workflow'ları execute edebilmesini sağlıyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Saga Pattern ile Dağıtık Transaction'lar: ACID Olmadan Consistency Sağlamak]]></title>
            <description><![CDATA[Microservices mimarisinde AWS Step Functions ve EventBridge kullanarak Saga pattern implementasyonu: idempotency, compensation logic ve production-ready pattern'ler.]]></description>
            <link>https://sph.sh/tr/posts/saga-pattern-distributed-transactions/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/saga-pattern-distributed-transactions/</guid>
            <category><![CDATA[saga-pattern]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[aws-step-functions]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[eventual-consistency]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Saga pattern, microservices mimarisinin en zorlu problemlerinden birini çözüyor: servisler arasında geleneksel ACID transaction'lar olmadan data consistency sağlamak. Bu yazıda, AWS Step Functions orchestration ve EventBridge choreography kullanarak saga implementasyonu, etkili compensation logic tasarımı, idempotency garantisi ve dağıtık sistemlerdeki isolation sorunlarını ele alıyorum. Orchestration ile choreography arasında ne zaman hangisini seçeceğini, concurrent saga conflict'leri önlemek için semantic locking'i nasıl uygulayacağını ve production ortamları için kritik observability pattern'lerini öğreneceksin.</p>
<p><strong>Dağıtık Transaction Problemi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Uygulamaları Test Etmek: Pratik Bir Strateji Rehberi]]></title>
            <description><![CDATA[AWS Lambda, API Gateway, DynamoDB ve Step Functions için hızlı geri bildirim ve production güvenilirliği sağlayan kapsamlı bir test stratejisi oluşturmayı öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/testing-serverless-applications/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/testing-serverless-applications/</guid>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[jest]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[aws-sam]]></category>
            <category><![CDATA[localstack]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[step-functions]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[integration-testing]]></category>
            <category><![CDATA[production]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 06 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Test Etme Zorluğu</strong></p>
<p>Serverless uygulamaları deploy döngüsünü dakikalara sıkıştırır; bu, test ekonomisini değiştirir: eskiden uzun sürüm süreciyle yakalanan bir hata artık bir insan incelemesinden önce production'a ulaşır. Test stratejisi, deploy hızının artık yakalayamadığı şeyi yakalamak zorundadır. Aynı zamanda serverless mimarisi yerel öncelikli testi kırar; Lambda cold start'ları, IAM izinleri, event şemaları ve yönetilen servisler arasındaki sınırlar yerelde canlı bir hesaptakinden farklı davranır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Mesajlaşma Servisleri: SQS vs SNS vs EventBridge - Karar Verme Çerçevesi]]></title>
            <description><![CDATA[Özelliklere göre değil, iletişim modeline göre seçim yap. SQS, SNS ve EventBridge arasında karar vermek için pratik bir rehber; çalışan CDK örnekleri ve maliyet analizi ile.]]></description>
            <link>https://sph.sh/tr/posts/aws-messaging-comparison/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-messaging-comparison/</guid>
            <category><![CDATA[aws-sqs]]></category>
            <category><![CDATA[aws-sns]]></category>
            <category><![CDATA[aws-eventbridge]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[messaging]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[serverless]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>SQS, SNS ve EventBridge arasında seçim yapmak bir özellik karşılaştırması değil, iletişim modeli kararıdır. SQS bir noktadan noktaya iş kuyruğu, SNS pub/sub fan-out ve EventBridge şema farkında, replay destekli bir olay yönlendiricisidir. Özellik listesine bakarak seçim yapan bir ekip, yanlış servis modelinin doğru servisin doğal olarak sağlayacağı davranışı geri kazanmak için özel bir katman yazmayı zorunlu kıldığını genellikle geç fark eder; AWS mesajlaşma yeniden yazımlarının çoğu buradan çıkar.</p>
<p>Bu yazı, üç servisi iletişim modeli, teslim semantiği, sıralama, maliyet ve operasyonel yüzey açısından karşılaştırır. Seçim karar ağacını, yaygın hibrit desenleri (SNS'den SQS'e fan-out, EventBridge'den SQS'e filtreli abonelik) ve servisler arası migrasyon maliyetlerini ele alır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Step Functions Derinlemesine: Dayanıklı Workflow Orchestration Geliştirme]]></title>
            <description><![CDATA[Production-ready serverless workflow'lar için AWS Step Functions'ı öğren. Standard vs Express workflow'lar, Distributed Map processing, error handling pattern'leri, callback entegrasyonu ve CDK örnekleriyle maliyet optimizasyonu stratejilerini keşfet.]]></description>
            <link>https://sph.sh/tr/posts/step-functions-deep-dive/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/step-functions-deep-dive/</guid>
            <category><![CDATA[aws-step-functions]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[workflow-orchestration]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AWS Step Functions, serverless uygulamalar için güçlü workflow orchestration sağlıyor ama Standard vs Express workflow seçimi, doğru error handling implementasyonu ve maliyet optimizasyonu pratik deneyim gerektiriyor. Bu rehber, production-ready pattern'leri kapsıyor: büyük ölçekli processing için Distributed Map, Task Token'larla callback pattern'leri, direct service integration'lar ve masrafları %90'ın üzerinde azaltabilen maliyet optimizasyon stratejileri. Çalışan CDK kod örnekleri Amazon States Language (ASL) pattern'lerini, exponential backoff ile error handling'i ve production ortamlar için monitoring kurulumunu gösteriyor.</p>
<p><strong>Orchestration Zorluğu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[LangChain Production'da: Çalışan Patternler ve İşe Yaramayan Anti-Patternler]]></title>
            <description><![CDATA[LangChain uygulamalarını production'a taşırken öğrendiklerim. Başarısızlığa yol açan anti-patternler, başarıyı sağlayan patternler, çalışan kod örnekleri ve maliyet optimizasyon stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/langchain-production-patterns/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/langchain-production-patterns/</guid>
            <category><![CDATA[langchain]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[monitoring]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 03 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Production Gap'i</strong></p>
<p>LangChain uygulamalarını prototipten production'a taşıdığında dokümantasyon örnekleri ile gerçek dünya gereksinimleri arasındaki fark ortaya çıkıyor. Development'ta mükemmel çalışan şeyler, production yükü altında pahalı, yavaş veya güvenilmez hale gelebiliyor.</p>
<p>Prototip iş yükleri yalnızca ölçekte görünen hata biçimlerini gizler: belirsiz girdiler üzerinde dakikalarca döngüye giren agent'lar, aydan aya %30-40 büyüyen token harcaması ve yalnızca kullanıcı şikayetleriyle keşfedilen sessiz hatalar. Framework'ün soyutlamaları prototyping'i hızlandırır ama production yükü altında ihtiyaç duyduğun maliyet, gecikme ve güvenilirlik kollarını gizler.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Model Context Protocol: Production-Ready AI Entegrasyonları Geliştirmek]]></title>
            <description><![CDATA[MCP'nin AI tool entegrasyonunu nasıl standartlaştırdığını, TypeScript örnekleriyle server geliştirme, güvenlik yönetimi ve production performans optimizasyonunu öğren.]]></description>
            <link>https://sph.sh/tr/posts/mcp-standard-ai-integration/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mcp-standard-ai-integration/</guid>
            <category><![CDATA[mcp]]></category>
            <category><![CDATA[ai-integration]]></category>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[llm]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Entegrasyon Problemini Anlamak</strong></p>
<p>AI entegrasyonları üzerinde çalışırken bir pattern ortaya çıktı: her yeni AI modeli, her veri kaynağı ve tool için custom bağlantılara ihtiyaç duyuyor. Matematik acımasız; M model çarpı N tool, M×N custom implementation demek. Takımların Slack, GitHub ve database'ler için haftalarca bespoke entegrasyon geliştirdiğini, AI provider değiştiğinde tüm süreci tekrarladığını gördüm.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Bedrock AgentCore ile Production-Ready AI Agentları Geliştirmek]]></title>
            <description><![CDATA[AWS Bedrock AgentCore'un agentic AI'ı ölçekte deploy etme altyapı zorluklarını nasıl çözdüğünü öğrenin - prototipten production'a runtime, memory, gateway ve multi-agent koordinasyonu ile.]]></description>
            <link>https://sph.sh/tr/posts/bedrock-agentcore-production/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/bedrock-agentcore-production/</guid>
            <category><![CDATA[aws-bedrock]]></category>
            <category><![CDATA[ai-agents]]></category>
            <category><![CDATA[agentic-ai]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[production]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Production Aşamasındaki Zorluklar</strong></p>
<p>Birçok ekip gerçek değer gösteren etkileyici LangChain veya CrewAI prototipleri geliştiriyor - ta ki bunları deploy etme zamanı gelene kadar. "Laptopumda çalışıyor" aşamasından production'a geçiş session isolation, credential management, memory persistence, observability ve security kontrolleri gerektiriyor. Bu altyapıyı sıfırdan inşa etmek aylar alıyor, bu yüzden AI projelerinin %70'i pilot aşamasını geçemiyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Amazon Aurora: AWS'nin Cloud-Native Veritabanını Anlamak]]></title>
            <description><![CDATA[Aurora mimarisi, maliyet analizi ve RDS'e göre ne zaman seçilmesi gerektiğine dair kapsamlı rehber. Migration stratejileri, performans özellikleri ve gerçek dünya karar çerçeveleri içerir.]]></description>
            <link>https://sph.sh/tr/posts/amazon-aurora-introduction/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/amazon-aurora-introduction/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aurora]]></category>
            <category><![CDATA[rds]]></category>
            <category><![CDATA[database]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[mysql]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 29 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Amazon Aurora ile standart RDS arasında seçim yapmak basit değil. Aurora, 5x MySQL ve 3x PostgreSQL performansı, 128TB'ye kadar otomatik storage scaling ve %99.99 availability vaat ediyor. Ama I/O pricing modeline aşina olmayan ekipleri şaşırtabilecek ek karmaşıklık ve maliyetle geliyor.</p>
<p>Karar "daha iyi" olmakla ilgili değil - veritabanı mimarisini workload özelliklerine, operasyonel gereksinimlere ve maliyet kısıtlamalarına uydurmakla ilgili. Bilinçli bir seçim yapmak için bilmen gerekenler burada.</p>
<p><strong>Amazon Aurora Nedir?</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CloudFormation'un 500 Kaynak Sınırını Aşmak: Büyük Ölçekli Altyapı için Pratik Stratejiler]]></title>
            <description><![CDATA[Nested stack'ler, cross-stack referanslar, SSM Parameter Store ve microstack mimarisi kullanarak CloudFormation'un 500 kaynak sınırını aşmak için kanıtlanmış stratejiler. TypeScript CDK örnekleri ve karar çerçeveleri ile.]]></description>
            <link>https://sph.sh/tr/posts/cloudformation-500-resource-limit-strategies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cloudformation-500-resource-limit-strategies/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[cloudformation]]></category>
            <category><![CDATA[infrastructure-as-code]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nested-stacks]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AWS CloudFormation'un stack başına 500 kaynak sınırı, production-grade altyapı geliştirirken sıkça karşılaşılan sabit bir kısıtlamadır. Bu sınırla çalışmak bana gösterdi ki, nested stack'ler, cross-stack referanslar, SSM Parameter Store ve microstack mimarisi arasındaki seçim operasyonel tercihlere, deployment patternlerine ve takım yapısına bağlıdır. Bu yazıda beş stratejiyi TypeScript CDK örnekleri, karar çerçeveleri ve bu sınırı aşan altyapıları yeniden yapılandırırken öğrendiğim derslerle paylaşıyorum.</p>
<p><strong>500 Kaynak Sınırını Anlamak</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DynamoDB Single-Table Design: Kapsamlı Modelleme Rehberi]]></title>
            <description><![CDATA[DynamoDB single-table design'ı ilişkileri modelleme, GSI ve LSI seçimi, DAX optimizasyonu ve production NoSQL sistemlerinde yaygın hataları önleme konularında pratik örneklerle öğren.]]></description>
            <link>https://sph.sh/tr/posts/dynamodb-single-table-design-comprehensive-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/dynamodb-single-table-design-comprehensive-guide/</guid>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[nosql]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[database-design]]></category>
            <category><![CDATA[single-table-design]]></category>
            <category><![CDATA[performance-optimization]]></category>
            <category><![CDATA[data-modeling]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Single-table design, DynamoDB için veri modelleme yaklaşımında temel bir değişimi temsil ediyor. Bu kapsamlı rehber, single-table pattern'leri ne zaman kullanacağını, one-to-one, one-to-many ve many-to-many ilişkileri nasıl modelleyeceğini, Global ve Local Secondary Index'ler arasındaki trade-off'ları, DAX caching entegrasyonunu ve pratik query optimizasyon tekniklerini ele alıyor. Çalışan TypeScript örnekleri, gerçek maliyet analizleri ve hot partition ile throttling sorunlarından kaçınmak için test edilmiş pattern'ler bulacaksın.</p>
<p><strong>Single-Table Design Neden Önemli</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Kod Organizasyonu: Service-Based ve Domain-Based Mimari Patternleri]]></title>
            <description><![CDATA[AWS CDK projelerinde service-based, domain-based, feature-based veya layer-based organizasyon patternlerini ne zaman kullanacağını öğren. Karar çerçeveleri, çalışan örnekler ve sürdürülebilir infrastructure code için migration stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-code-organization-service-vs-domain-based/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-code-organization-service-vs-domain-based/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[infrastructure-as-code]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[domain-driven-design]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 16 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AWS CDK projeleri genellikle belirsiz organizasyon stratejileriyle başlar ve ölçeklendikçe tight coupling, circular dependency'ler ve deployment darboğazlarıyla karşılaşır. Bu rehber, beş organizasyon patternini - service-based, domain-based, feature-based, layer-based ve hybrid - çalışan TypeScript örnekleri ve karar çerçeveleriyle inceliyor. Ekiplerin business ihtiyaçlarına, team yapısına ve deployment gereksinimlerine uygun CDK projeleri oluşturmasına yardımcı oluyor.</p>
<p><strong>Problem Bağlamı</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Functional Patterns: Tekrar Kullanılabilir, Hatasız Infrastructure Konfigürasyonları]]></title>
            <description><![CDATA[Functional programming pattern'leri - factory function'lar, higher-order function'lar ve composition - ile AWS CDK'yı CloudFormation generator'dan type-safe, tekrar kullanılabilir bir infrastructure toolkit'e dönüştürmeyi öğren.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-functional-patterns-reusable-configurations/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-functional-patterns-reusable-configurations/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[infrastructure-as-code]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[best-practices]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 15 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AWS CDK, infrastructure'ı gerçek kod olarak ele almamızı sağlar, ancak doğru pattern'ler olmadan takımlar genellikle duplicate konfigürasyonlar, tutarsız ayarlar ve compile time'da önlenebilecek runtime hataları ile karşılaşır. Functional programming pattern'leri - higher-order function'lar, factory pattern'ler ve composition - CDK'yı CloudFormation generator'dan type-safe, tekrar kullanılabilir bir infrastructure toolkit'e dönüştürür. Bu yazıda, ortak konfigürasyonları (NodejsFunction ayarları, RemovalPolicy enforcement, logging standartları gibi) nasıl merkezileştirebileceğini ve manuel tekrar veya runtime sürprizleri olmadan tüm kaynaklarda nasıl tutarlı şekilde uygulayabileceğini göstereceğim.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[IoT Lojistik Uygulamaları için Mesajlaşma Protokolü Seçimi: MQTT, AMQP, ZeroMQ, CoAP ve DDS Karşılaştırması]]></title>
            <description><![CDATA[IoT lojistik uygulamaları için mesajlaşma protokollerinin kapsamlı teknik karşılaştırması. Filo takibi, soğuk zincir izleme ve gerçek zamanlı cihaz iletişimi için MQTT, AMQP, ZeroMQ, CoAP ve DDS'yi ne zaman kullanacağını öğren.]]></description>
            <link>https://sph.sh/tr/posts/iot-messaging-protocols-logistics-tracking/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/iot-messaging-protocols-logistics-tracking/</guid>
            <category><![CDATA[mqtt]]></category>
            <category><![CDATA[amqp]]></category>
            <category><![CDATA[zeromq]]></category>
            <category><![CDATA[coap]]></category>
            <category><![CDATA[dds]]></category>
            <category><![CDATA[iot]]></category>
            <category><![CDATA[aws-iot]]></category>
            <category><![CDATA[logistics]]></category>
            <category><![CDATA[fleet-tracking]]></category>
            <category><![CDATA[protocol-comparison]]></category>
            <category><![CDATA[messaging]]></category>
            <category><![CDATA[real-time]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 09 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>IoT sistemleriyle çalışırken öğrendiğim en önemli şeylerden biri, protokol seçiminin sistem performansını, güvenilirliğini ve operasyonel maliyetleri önemli ölçüde etkilediğidir. Bu rehberde beş mesajlaşma protokolünü - MQTT, AMQP, ZeroMQ, CoAP ve DDS - filo takibi, soğuk zincir izleme ve gerçek zamanlı cihaz iletişimi senaryolarından örneklerle karşılaştırıyorum. Çalışan kod örnekleri, gerçekçi performans metrikleri ve senin spesifik gereksinimlerine uygun protokolü seçmene yardımcı olacak karar çerçeveleri bulacaksın.</p>
<p><strong>Protokol Seçimi Sorunu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Reaktif Programlama Çağında Davranışsal Kalıplar]]></title>
            <description><![CDATA[Observer, Strategy, Command, State ve Mediator kalıplarının TypeScript'te RxJS, Redux, XState ve modern reaktif programlama paradigmalarıyla nasıl evrildiğini keşfediyoruz.]]></description>
            <link>https://sph.sh/tr/posts/behavioral-patterns-reactive-programming/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/behavioral-patterns-reactive-programming/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[rxjs]]></category>
            <category><![CDATA[redux]]></category>
            <category><![CDATA[reactive-programming]]></category>
            <category><![CDATA[state-management]]></category>
            <category><![CDATA[xstate]]></category>
            <category><![CDATA[behavioral-patterns]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Davranışsal (behavioral) kalıplar, nesnelerin nasıl iletişim kurduğunu ve sorumlulukların nasıl dağıtıldığını tanımlar. Gang of Four, Observer, Strategy, Command, State ve Mediator kalıplarını C++ ve Smalltalk için belgeledi - bu kalıpları uygulamanın önemli miktarda boilerplate gerektirdiği diller. Modern TypeScript ile RxJS, Redux ve React hooks bu kalıpları uygulama şeklimizi temelden değiştirdi. Bazıları framework convention'larına dönüştü, diğerleri reaktif paradigmalara evrildi, bazıları ise klasik formlarında şaşırtıcı derecede güncel kaldı.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modern TypeScript'te Creational Pattern'lerin Evrimi]]></title>
            <description><![CDATA[Singleton, Factory, Builder ve Prototype pattern'lerinin TypeScript'te nasıl evrildiğini keşfet. ES modüllerinin singleton'ları ne zaman değiştirdiğini, factory function'ların ne zaman class'lardan daha iyi olduğunu ve TypeScript'in type sisteminin oyunu nasıl değiştirdiğini öğren.]]></description>
            <link>https://sph.sh/tr/posts/creational-patterns-modern-typescript/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/creational-patterns-modern-typescript/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[creational-patterns]]></category>
            <category><![CDATA[singleton]]></category>
            <category><![CDATA[factory]]></category>
            <category><![CDATA[builder]]></category>
            <category><![CDATA[best-practices]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Gang of Four'un design patterns kitabı 1994'te çıktı ve C++ ile Smalltalk geliştiricilerinin nesne yaratma sorunlarını hedef alıyordu. 30 yılı aşkın süre sonra TypeScript bize optional parametreler, default değerler, destructuring, ES modülleri ve gelişmiş bir type sistemi sunuyor. Creational pattern'ler kaybolmadı - evrildi.</p>
<p>Bu yazıda Singleton, Factory, Builder ve Prototype pattern'lerinin modern TypeScript kod tabanlarında nasıl ortaya çıktığını, ne zaman hala değer kattıklarını ve ne zaman dil özelliklerinin onları gereksiz kıldığını inceliyoruz.</p>
<p><strong>Singleton Pattern: Anti-Pattern'den Context-Dependent Tool'a</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gang of Four'un Ötesindeki Tasarım Kalıpları]]></title>
            <description><![CDATA[JavaScript ve TypeScript ekosistemlerinden doğan modern kalıpları keşfedelim - hooks, compound components, render props ve GoF'un hiç karşılaşmadığı problemleri çözen repository pattern'leri.]]></description>
            <link>https://sph.sh/tr/posts/design-patterns-beyond-gof/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/design-patterns-beyond-gof/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[hooks]]></category>
            <category><![CDATA[react-patterns]]></category>
            <category><![CDATA[compound-components]]></category>
            <category><![CDATA[repository-pattern]]></category>
            <category><![CDATA[modern-patterns]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Gang of Four, 1994'te C++ ve Smalltalk için pattern'leri dokümante etti. Asenkron programlamayı, component composition'ı, functional programming'i ya da reactive data flow'u öngöremezlerdi. JavaScript ve TypeScript ekosistemleri, 1994'te var olmayan problemleri çözmek için kendi pattern'lerini geliştirdi. Bu yazıda, gerçek web development ihtiyaçlarından doğan modern pattern'leri inceliyoruz: Stateful logic paylaşımı için React Hooks, esnek API'ler için Compound Components, data access abstraction için Repository Pattern ve doğal design pattern olarak ES Modules. Bunlar klasik pattern'lerin uyarlamaları değil - yeni problemler için yeni çözümler.</p>
<p><strong>Pattern Düşüncesinin Evrimi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Yapısal Patternler ve Component Composition]]></title>
            <description><![CDATA[Decorator, Adapter, Facade, Composite ve Proxy patternlerinin React ve TypeScript'te nasıl evrildiğini keşfedin. HOC'ların ne zaman hook'lara yol verdiğini, adapterlerin third-party API'ları nasıl izole ettiğini ve facade'ların karmaşıklığı nasıl basitleştirdiğini öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/structural-patterns-component-composition/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/structural-patterns-component-composition/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[structural-patterns]]></category>
            <category><![CDATA[hoc]]></category>
            <category><![CDATA[hooks]]></category>
            <category><![CDATA[composition]]></category>
            <category><![CDATA[best-practices]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 06 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Yapısal patternler, objeler ve classlar arasındaki ilişkileri organize eder. Gang of Four, 1994'te Decorator, Adapter, Facade, Composite ve Proxy patternlerini C++ ve Smalltalk için belgeledi. Modern TypeScript ve React ekosistemlerinde bu patternler kaybolmadı - framework konvansiyonlarına, hook'lara ve type-safe wrapper'lara dönüştü.</p>
<p>Bu yazıda yapısal patternlerin React component composition'da nasıl ortaya çıktığını, higher-order componentlerin ne zaman hala önemli olduğunu ve TypeScript'in type system'ının klasik implementasyonları nasıl geliştirdiğini inceliyoruz.</p>
<p><strong>Decorator Pattern: TypeScript'te Üç Farklı Anlam</strong></p>
<p>"Decorator" terimi TypeScript ekosisteminde üç farklı şey ifade ediyor:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TypeScript'te Builder Pattern: Modern Uygulamalarda Tip Güvenli Konfigürasyon]]></title>
            <description><![CDATA[Builder pattern'in TypeScript'in tip sistemiyle nasıl güvenli ve keşfedilebilir API'ler oluşturduğunu, serverless, veri katmanı ve test örnekleriyle - AWS CDK, query builder'lar ve daha fazlasıyla keşfet.]]></description>
            <link>https://sph.sh/tr/posts/builder-pattern-typescript/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/builder-pattern-typescript/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[graphql]]></category>
            <category><![CDATA[serverless]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>TypeScript'teki Builder pattern, geleneksel nesne yönelimli dillerdekinden farklı bir amaca hizmet eder. Java ve C# builder'ları çok sayıda opsiyonel parametreyi yönetmek için kullanırken, TypeScript implementasyonu generic'ler ve conditional type'ları kullanarak karmaşık kısıtlamaları compile time'da zorunlu kılar ve potansiyel runtime hatalarını IDE'nin yakalayabileceği tip hatalarına dönüştürür. Bu rehber, serverless altyapı, veritabanı katmanı, API konfigürasyonu ve test alanlarında pratik uygulamaları ele alarak, builder'ların production'a ulaşmadan önce yanlış konfigürasyonları nasıl önlediğini gösteriyor.</p>
<p><strong>TypeScript'te Karmaşık Nesnelerin Sorunu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Type-Safe Lambda Middleware: Middy, Zod ve Builder Pattern ile Enterprise Uygulamalar]]></title>
            <description><![CDATA[Middy builder pattern, Zod validation, feature flags ve secrets management kullanarak enterprise serverless uygulamaları için sürdürülebilir, type-safe Lambda middleware nasıl inşa edilir öğren.]]></description>
            <link>https://sph.sh/tr/posts/middy-builder-pattern-zod-validation/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/middy-builder-pattern-zod-validation/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[middy]]></category>
            <category><![CDATA[middleware]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[zod]]></category>
            <category><![CDATA[feature-flags]]></category>
            <category><![CDATA[aws-secrets-manager]]></category>
            <category><![CDATA[builder-pattern]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Enterprise serverless uygulamaları temel middleware pattern'larından daha fazlasına ihtiyaç duyar. Bu yazıda Middy'yi temel alarak type-safe, sürdürülebilir Lambda middleware sistemleri inşa etmeyi keşfedeceğiz: enforced composition için builder pattern, mükemmel hata mesajları ile runtime validation için Zod, dinamik davranış kontrolü için feature flags ve doğru secrets management. Lambda ile ölçekli çalışmak bana compile-time type safety ve tutarlı middleware sıralamasının production'daki sorunları runtime validation'dan çok daha etkili önlediğini öğretti.</p>
<p><strong>Standard Middleware Pattern'larındaki Problem</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[OpenTelemetry Temelleri: Modern Observability için Başlangıç Rehberi]]></title>
            <description><![CDATA[Pratik implementasyon örnekleri, yaygın hatalar ve detaylı terminoloji sözlüğü ile OpenTelemetry'nin trace, metric ve log sistemlerini kapsayan kapsamlı başlangıç rehberi.]]></description>
            <link>https://sph.sh/tr/posts/opentelemetry-fundamentals-beginner-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/opentelemetry-fundamentals-beginner-guide/</guid>
            <category><![CDATA[opentelemetry]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[distributed-tracing]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[python]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 05 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>OpenTelemetry (OTel), dağıtık sistemlerden telemetri verisi toplamak için birleşik, vendor-agnostic bir yaklaşım sunan açık kaynak bir observability framework'üdür. Bu kapsamlı rehber, observability temellerini, OpenTelemetry mimarisini, çalışan kod örnekleriyle pratik implementasyon pattern'lerini ve semantic convention'lar ile sampling stratejileri gibi temel kavramları ele alıyor. Uygulamaları nasıl instrument edeceğinizi, collector'ları nasıl deploy edeceğinizi, yaygın hatalardan nasıl kaçınacağınızı ve sistemlerinize production-ready observability'yi nasıl ekleyeceğinizi öğreneceksiniz.</p>
<p><strong>Giriş: Dağıtık Sistem Challenge'ı</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TypeScript'in Temel Ama Az Bilinen Özellikleri: Production-Ready Type Safety]]></title>
            <description><![CDATA[Production kod kalitesini önemli ölçüde iyileştiren 7 az bilinen TypeScript özelliğini keşfedin: satisfies operator, noUncheckedIndexedAccess, branded types, discriminated unions, type predicates, template literals ve infer keyword.]]></description>
            <link>https://sph.sh/tr/posts/typescript-essential-underutilized-features/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/typescript-essential-underutilized-features/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[type-safety]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[code-quality]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 04 Nov 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>TypeScript 2025'te GitHub'da en çok kullanılan dil haline geldi, Ağustos ayında Python'u geçerek yıl bazında %66 contributor artışıyla. Ancak birçok geliştirici sadece type system'in yüzeyini kazıyor. Bu yazı, production kod kalitesini önemli ölçüde iyileştiren 7 az bilinen özelliği inceliyor: configuration validation için satisfies operator, array güvenliği için noUncheckedIndexedAccess, nominal typing için branded types, exhaustiveness checking ile discriminated unions, type predicates vs assertion functions, string patterns için template literal types ve type extraction için infer keyword. Her özellik, spesifik production problemlerini sıfır runtime overhead ile çözüyor.</p>
<p><strong>Problem Context</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Her Yazılım Geliştiricinin Bilmesi Gereken Ağ Temelleri]]></title>
            <description><![CDATA[Geliştiriciler için pratik bir ağ kavramları sözlüğü - protokollerden DNS'e, debugging araçlarından güvenlik temellerine.]]></description>
            <link>https://sph.sh/tr/posts/network-fundamentals-developers-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/network-fundamentals-developers-guide/</guid>
            <category><![CDATA[networking]]></category>
            <category><![CDATA[http]]></category>
            <category><![CDATA[tcp-ip]]></category>
            <category><![CDATA[dns]]></category>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[backend-development]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 30 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Abstract</strong></p>
<p>Ağ temellerini anlamak sadece network mühendisleri için değil - her yazılım geliştiricisi için gerekli bir bilgi. Production'da bir sorunu debug ederken, API performansını optimize ederken veya distributed bir sistem tasarlarken, network kavramları sürekli karşına çıkıyor. Bu rehber, backend sistemler geliştirirken ve production sorunlarını çözerken karşılaştığım gerçek dünya senaryoları, yaygın tuzaklar ve debugging durumlarıyla birlikte networking temellerinin pratik bir sözlüğünü sunuyor.</p>
<p><strong>Geliştiriciler Neden Network Bilgisi İhtiyaç Duyar</strong></p>
<p>Öğrendiğim şey şu: Mükemmel uygulama kodu yazabilirsin, ama verinin client ile server arasında nasıl hareket ettiğini anlamazsan, şu konularda zorlanırsın:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TypeScript için CloudEvents SDK: Serverless Mimarilerde Event Standardizasyonu]]></title>
            <description><![CDATA[CloudEvents spesifikasyonu ve TypeScript SDK'sını serverless projelerde kullanmak için pratik bir kılavuz. AWS Lambda, EventBridge ve diğer event-driven sistemlerde standardize edilmiş eventler oluşturmayı, parse etmeyi ve validate etmeyi öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/cloudevents-sdk-typescript-serverless/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cloudevents-sdk-typescript-serverless/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[cloudevents]]></category>
            <category><![CDATA[nodejs]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Event-driven mimarilerde her event kaynağı event'leri farklı şekilde tanımlama eğilimindedir: bir Lambda { userId: string } beklerken, diğeri { user_id: string }, üçüncüsü ise { sub: string } kullanır. Bu heterojenliğin maliyeti, kaynak sayısıyla büyüyen entegrasyon kodu ve sistemler arasında event'leri ilişkilendiremeyen gözlemleme araçlarıdır. Standartlaştırılmış bir event zarfı her iki sorunu da çözer; karşılığında her üreticinin aynı şemayı benimsemesini gerektirir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Domain-Driven Design: Giriş ve Temeller]]></title>
            <description><![CDATA[Domain-Driven Design'a kapsamlı giriş - temel kavramlar, yapı taşları, stratejik desenler ve DDD'yi yazılım geliştirmede ne zaman ve nasıl uygulayacağınıza dair pratik rehber]]></description>
            <link>https://sph.sh/tr/posts/domain-driven-design-introduction/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/domain-driven-design-introduction/</guid>
            <category><![CDATA[domain-driven-design]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[design-patterns]]></category>
            <category><![CDATA[backend-development]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Domain-Driven Design (DDD), kod yapısını business domain mantığıyla hizalayarak karmaşık yazılım sistemleri oluşturmanın stratejik bir yaklaşımıdır. Bu rehber, DDD'nin temel kavramlarını, yapı taşlarını ve stratejik desenlerini, bu prensipleri ne zaman ve nasıl etkili bir şekilde uygulayacağınızı gösteren pratik TypeScript örnekleriyle birlikte inceliyor.</p>
<p><strong>Domain-Driven Design Nedir?</strong></p>
<p>Domain-Driven Design, Eric Evans tarafından 2003'te tanıtılan, teknik uzmanlar ve domain uzmanları arasındaki işbirliğini vurgulayan bir yazılım geliştirme yaklaşımıdır. Ana fikir: kodunuz, hizmet ettiği business domain'i yansıtmalı ve domain uzmanlarının kullandığı dil ve kavramları kullanmalıdır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Event Storming: Karmaşık Domain'leri Anlamak İçin Pratik Rehber]]></title>
            <description><![CDATA[Event Storming'in ne olduğu, nasıl etkili bir şekilde yönetileceği ve domain modelleme ile sistem tasarımı için bu işbirlikçi workshop tekniğinin ne zaman kullanılacağına dair uygulamalı rehber.]]></description>
            <link>https://sph.sh/tr/posts/event-storming-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/event-storming-guide/</guid>
            <category><![CDATA[domain-driven-design]]></category>
            <category><![CDATA[event-storming]]></category>
            <category><![CDATA[software-architecture]]></category>
            <category><![CDATA[agile-practices]]></category>
            <category><![CDATA[team-collaboration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 28 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Event Storming, ekiplerin karmaşık business domain'leri ve workflow'ları hızlıca anlamasına yardımcı olan işbirlikçi bir workshop tekniğidir. Bu rehber, Event Storming oturumlarını yönetmekten edindiğim pratik bilgileri paylaşıyor - ne olduğu, neden işe yaradığı, etkili oturumların nasıl yapılacağı ve ne zaman kullanılacağı konularında. Renk kodlama sistemini, pratikte işe yarayan yönetim tekniklerini ve hem yüz yüze hem de uzaktan oturumların nasıl yapılacağını öğreneceksin.</p>
<p><strong>Event Storming Nedir</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[VPS, Dokploy ve Cloudflared ile Uygun Maliyetli Private Sunucu Kurulumu]]></title>
            <description><![CDATA[VPS, Dokploy deployment platformu ve Cloudflared tunnel kullanarak güvenli, uygun maliyetli private sunucu kurulumu için pratik bir rehber]]></description>
            <link>https://sph.sh/tr/posts/cost-effective-vps-dokploy-cloudflared-setup/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cost-effective-vps-dokploy-cloudflared-setup/</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[vps]]></category>
            <category><![CDATA[cloudflare]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[self-hosting]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[dokploy]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Neden Bu Stack?</strong></p>
<p>Private sunucu çalıştırmak için pahalı cloud faturalarına ya da karmaşık infrastructure'lara ihtiyacınız yok. Çeşitli deployment setupları ile çalışırken öğrendiğim şey, en iyi çözümün genellikle kurumsal platformlar yerine basit, odaklanmış araçları birleştirmekte yattığı oldu.</p>
<p>Bu rehber, production-ready bir private sunucu kurulumunu anlatıyor:
- <strong>VPS</strong> uygun maliyetli compute için (~$5-20/ay)
- <strong>Dokploy</strong> temiz bir UI ile Docker-tabanlı deployment'lar için
- <strong>Cloudflared</strong> port açmadan güvenli erişim için</p>
<p>Toplam maliyet? Birden fazla uygulamayı güvenli şekilde çalıştıran temel bir kurulum için ayda yaklaşık $5-10.</p>
<p><strong>Gereksinimler</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Event-Driven Mimari ile CRM Sistemleri Geliştirmek]]></title>
            <description><![CDATA[Event sourcing, CQRS ve event-driven pattern'leri kullanarak müşteri ilişkileri yönetimi, marketing otomasyonu ve consent yönetimi için pratik bir rehber]]></description>
            <link>https://sph.sh/tr/posts/crm-event-driven-architecture/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/crm-event-driven-architecture/</guid>
            <category><![CDATA[event-driven-architecture]]></category>
            <category><![CDATA[cqrs]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[gdpr]]></category>
            <category><![CDATA[marketing-automation]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[event-sourcing]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Çok Kanallı İçerik Yönetimi: Headless CMS Dünyasında Yol Haritası]]></title>
            <description><![CDATA[Headless CMS çözümlerinin pratik karşılaştırması - Strapi, Contentful, Kontent ve Storyblok - Cloudinary ile görsel yönetimi ve web ile mobil uygulamalar için framework entegrasyon pattern'leri.]]></description>
            <link>https://sph.sh/tr/posts/multi-channel-content-management-headless-cms/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/multi-channel-content-management-headless-cms/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[cms]]></category>
            <category><![CDATA[api-design]]></category>
            <category><![CDATA[graphql]]></category>
            <category><![CDATA[rest-api]]></category>
            <category><![CDATA[content-management]]></category>
            <category><![CDATA[cloudinary]]></category>
            <category><![CDATA[mobile-development]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Headless CMS seçmek eskiden basit görünüyordu - ta ki içeriğinizi aynı anda web, mobil ve potansiyel olarak IoT cihazlara servis etmeniz gerekene kadar. Farklı projelerde birkaç çok kanallı CMS çözümüyle çalıştıktan sonra öğrendim ki "en iyi" seçim ekip workflow'unuza, teknik kısıtlarınıza ve içerik editörleme deneyimi gereksinimlerinize bağlı. Bu rehber dört büyük oyuncuyu - Strapi, Contentful, Kontent ve Storyblok - karşılaştırıyor, görsel yönetimi, framework entegrasyonu ve önemli mimari kararlar hakkında pratik bilgiler sunuyor.</p>
<p><strong>Çok Kanallı CMS Manzarası</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik 101: Otomatik Keşifli Modern Reverse Proxy]]></title>
            <description><![CDATA[nginx kullanmayı bilen geliştiriciler için pratik Traefik rehberi. Temel kavramlar, kurulum örnekleri ve geleneksel reverse proxy'lere göre Traefik'i ne zaman seçeceğinizi öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/traefik-101-introduction/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/traefik-101-introduction/</guid>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[traefik]]></category>
            <category><![CDATA[nginx]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[reverse-proxy]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Traefik, dinamik altyapılar için geliştirilmiş modern bir reverse proxy ve load balancer. Geleneksel reverse proxy'lerin manuel konfigürasyon güncellemeleri gerektirmesinin aksine, Traefik servisleri otomatik keşfeder ve routing kurallarını kendisi günceller. Bu yazıda temel kavramları, pratik Docker kurulumlarını ve nginx ile dürüst karşılaştırmaları bulacaksın - böylece senin use case'in için doğru aracı seçebilirsin.</p>
<p><strong>Traefik Nedir?</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Yardım Spektrumu: Profesyonel Yazılım Geliştirmede Doğru Seviyeyi Seçmek]]></title>
            <description><![CDATA[Yazılım geliştirmede altı seviye AI yardımını anlatan bir framework - kod incelemeden vibe coding'e kadar - context, risk toleransı ve proje gereksinimlerine göre AI yardımını ne zaman artırıp azaltacağınıza dair pratik rehber.]]></description>
            <link>https://sph.sh/tr/posts/ai-assistance-spectrum-professional-software-engineering/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-assistance-spectrum-professional-software-engineering/</guid>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[code-quality]]></category>
            <category><![CDATA[developer-productivity]]></category>
            <category><![CDATA[best-practices]]></category>
            <category><![CDATA[github-copilot]]></category>
            <category><![CDATA[cursor]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[development-workflow]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Profesyonel yazılım mühendisleri kritik bir soruyla karşı karşıya: günlük workflow'umuza ne kadar AI yardımı entegre etmeliyiz? Bu ikili bir "AI kullan ya da kullanma" kararı değil - minimal inceleme odaklı yardımdan tam AI-first "vibe coding"e uzanan bir spektrum. Ekiplerin bu geçişi yönetirken edindiğim deneyimlere göre, başarının anahtarı bir seviyeyi seçip ona bağlı kalmak değil - belirli context'lere göre AI yardımını ne zaman artırıp azaltacağını anlamak.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Geliştirici Araçları Bölüm 1: Yükseliş ve Gerçeklik - Tarih, Evrim ve Güncel Durum]]></title>
            <description><![CDATA[2025'te AI geliştirici araçlarının pragmatik analizi: verimlilik paradoksu, güven krizi ve gerçek kurumsal benimseme verileri.]]></description>
            <link>https://sph.sh/tr/posts/ai-tools-developers-part-1/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-tools-developers-part-1/</guid>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[developer-productivity]]></category>
            <category><![CDATA[github-copilot]]></category>
            <category><![CDATA[cursor]]></category>
            <category><![CDATA[enterprise-adoption]]></category>
            <category><![CDATA[dora-metrics]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AI geliştirici araçları, deneysel asistanlardan kurumsal kritik altyapıya dönüştü, ancak gerçeklik pazarlama vaatlerinden önemli ölçüde farklı. Bu analiz, mevcut AI geliştirme araçlarının durumunu gerçek kurumsal benimseme verileri üzerinden inceliyor ve verimlilik kazançlarının sistemik darboğazlar, güvenlik açıkları ve deneyimli geliştiriciler arasında büyüyen güven krizi ile dengelendiği karmaşık bir tablo ortaya koyuyor.</p>
<p><strong>Kimsenin Sormadığı Soru</strong></p>
<p>Yakın zamandaki bir mimari incelemede, CTO soru sordu: "AI geliştirici araçlarına önemli yatırım yapıyoruz, ama deployment frequency'miz artmadı. Gerçek değer nerede?"</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Geliştirici Araçları Bölüm 2: Uygulamalı İmplementasyon Rehberi - Kurulumdan Üretime]]></title>
            <description><![CDATA[AI geliştirici araçları için pilot programlar, güvenlik çerçeveleri, kalite metrikleri ve gerçek kurumsal deployment deneyimlerini kapsayan pratik uygulama rehberi.]]></description>
            <link>https://sph.sh/tr/posts/ai-tools-developers-part-2/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-tools-developers-part-2/</guid>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[implementation]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[code-review]]></category>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[sonarqube]]></category>
            <category><![CDATA[production-patterns]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>AI araç değerlendirmesinden production implementasyona geçmek, güvenlik açıklarında gezinmeyi, yönetişim çerçeveleri kurmayı ve deneyimli geliştiricilerin AI yardımıyla %19 daha yavaş çalıştığı gerçeğini yönetmeyi gerektirir. Bu uygulama rehberi, gerçek kurumsal deployment'lardan savaş testinden geçmiş kalıpları, güvenlik kontrollerini ve kalite metriklerini paylaşıyor.</p>
<p><strong>İmplementasyon Gerçeklik Kontrolü</strong></p>
<p>Geçen çeyrek, platform takımımız bir direktif aldı: "Q1'e kadar 200+ mühendise AI geliştirici araçlarını yay." Takip eden süreç, AI verimliliği hakkındaki varsayımların production gerçeğiyle nasıl çarpıştığına dair bir ders niteliğindeydi.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Geliştirici Araçları Bölüm 3: Güvenlik, Güven ve Yönetişim - Riskleri Ölçekte Yönetmek]]></title>
            <description><![CDATA[AI geliştirici araçları için güvenlik açıkları, güven inşası ve yönetişim çerçevelerine derin dalış, gerçek olay müdahale stratejileri ve gölge AI yönetimi dahil.]]></description>
            <link>https://sph.sh/tr/posts/ai-tools-developers-part-3/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-tools-developers-part-3/</guid>
            <category><![CDATA[ai-security]]></category>
            <category><![CDATA[governance]]></category>
            <category><![CDATA[trust]]></category>
            <category><![CDATA[shadow-ai]]></category>
            <category><![CDATA[incident-response]]></category>
            <category><![CDATA[cve-2025]]></category>
            <category><![CDATA[compliance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>2025 AI geliştirici araçları güvenlik manzarası, GitHub Copilot'ta uzaktan kod yürütmeyi ortaya çıkaran CVE-2025-53773 ve AI destekli repoların %6.4'ünün gizli bilgi sızdırması ile kritik açıkları ortaya koyuyor. Bu analiz, 200+ geliştirici organizasyonunda AI araçlarını yönetme deneyimine dayalı kanıtlanmış yönetişim çerçevelerini, olay müdahale stratejilerini ve güven inşa yaklaşımlarını inceliyor.</p>
<p><strong>Güvenlik Uyandırma Çağrısı</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Geliştirici Araçları Bölüm 4: ROI Analizi ve Gelecek Yol Haritası - Veriye Dayalı Kararlar Almak]]></title>
            <description><![CDATA[AI geliştirici araçlarının gerçek maliyet analizleri, stratejik planlama çerçeveleri ve gelecek AI yeteneklerine hazırlık stratejileri ile kapsamlı ROI analizi.]]></description>
            <link>https://sph.sh/tr/posts/ai-tools-developers-part-4/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ai-tools-developers-part-4/</guid>
            <category><![CDATA[ai-roi]]></category>
            <category><![CDATA[cost-analysis]]></category>
            <category><![CDATA[future-planning]]></category>
            <category><![CDATA[strategic-decisions]]></category>
            <category><![CDATA[ai-adoption]]></category>
            <category><![CDATA[business-value]]></category>
            <category><![CDATA[roadmap]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>200+ mühendise AI geliştirici araçlarını uyguladıktan sonra, finansal gerçeklik satıcı projeksiyonlarından keskin bir şekilde ayrılıyor: gerçek maliyetler ilk tahminlerin 3-5 katı, verimlilik kazançları sistemik darboğazlar tarafından emiliyor, ancak dokümantasyon ve test gibi spesifik kullanım durumları %60-70 verimlilik iyileştirmeleri gösteriyor. Bu analiz, gerçek ROI hesaplama çerçeveleri, stratejik planlama modelleri ve ortaya çıkan AI yeteneklerine hazırlık stratejileri sunuyor. Ölçülebilir iş değeri ile aktivite metrikleri arasındaki fark kritik: satır sayısı ve commit sayısı yanıltıcı olabilir.</p>
<p><strong>ROI Sorusu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lambda Layer Versiyon Yönetimi: Çok Ortamlı Deployment Stratejileri]]></title>
            <description><![CDATA[Dev, staging ve production ortamlarında Lambda Layer versiyonlarını yönetmek için pratik yaklaşımlar. AWS CDK implementasyonları, otomatik deployment pipeline'ları ve rollback stratejileri ile.]]></description>
            <link>https://sph.sh/tr/posts/lambda-layer-versioning-multi-environment/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/lambda-layer-versioning-multi-environment/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[deployment]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Lambda Layer versiyonlarını birden fazla ortamda yönetmek, AWS'in doğrudan çözmediği bir karmaşıklık getiriyor. Bu yazıda production ortamlarında test edilmiş dört versiyon stratejisini inceliyoruz. Özellikle Git-tracked versiyonlar, explicit promotion path'ler ve sıfır runtime overhead sağlayan version manifest yaklaşımına odaklanıyoruz. Çalışan CDK implementasyonları, otomatik deployment pipeline'ları ve rollback prosedürleri dahil.</p>
<p><strong>Durum: Layer Versiyonları Farklılaştığında</strong></p>
<p>Lambda Layer'ları bir versiyon stratejisi olmadan kullanmaya başlayan takımlarda genellikle şu durum ortaya çıkıyor:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rol Belirsizliğinin Gizli Maliyeti: Net Beklentiler Takım Performansını Nasıl Dönüştürür]]></title>
            <description><![CDATA[Belirsiz rol beklentileri Fortune 500 şirketlerine yıllık 250 milyon dolara mal oluyor. RACI ve DACI gibi framework'lerin yazılım takımı verimliliğini %25-53 artırırken çatışmaları %80 azalttığını öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/role-expectations-team-performance/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/role-expectations-team-performance/</guid>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[engineering-management]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[remote-work]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>İki takım, bir API'yi kimin tasarlayacağı konusunda üç gün tartıştı. Frontend backend'in halledeceğini varsaydı. Backend önce product requirement'ları bekledi. DevOps "performans endişeleri" için çekildi.</p>
<p>Gerçek API tasarımı? Kimin ne yaptığını netleştirdikten sonra 4 saat sürdü.</p>
<p>Bu teknik bir problem değildi. Rol netliği problemi. Ve organizasyonunuza düşündüğünüzden daha pahalıya mal oluyor.</p>
<p><strong>Kurumsal Ölçekteki Sorun</strong></p>
<p>McKinsey araştırması Fortune 500 şirketlerinin etkisiz karar verme ve rol belirsizliği nedeniyle yıllık yaklaşık <strong>250 milyon dolar</strong> boşa harcanan işgücü maliyetine maruz kaldığını gösteriyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vercel Alternatifleri: Next.js Deployment Kapsamlı Rehberi]]></title>
            <description><![CDATA[Vercel dışında Next.js uygulamalarını deploy etmenin kapsamlı rehberi - production ortamları için maliyet analizi, implementasyon detayları ve migration stratejileri]]></description>
            <link>https://sph.sh/tr/posts/vercel-alternatives-nextjs-deployment/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/vercel-alternatives-nextjs-deployment/</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[deployment]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cloudflare]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[infrastructure]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hiç bir side project'in faturasına bakıp Netflix aboneliğinden daha pahalıya geldiğini görüp şaşırdınız mı? Ya da Next.js uygulamanız için deployment seçeneklerini değerlendirirken Vercel'in platformunun ötesinde bir hayat olup olmadığını merak ettiniz mi? Production migration'ları ve deployment optimizasyonlarıyla çalışmak bana alternatiflerin uygulanabilir olduğunu ve belirli use case'ler için sıklıkla daha üstün olduğunu öğretti.</p>
<p>Next.js uygulamalarını Vercel olmadan deploy etme konusunda keşfettiklerimi, dokümantasyonda kimsenin bahsetmediği gotcha'ları ve production'da karşılaşacağınız maliyetleri paylaşayım.</p>
<p><strong>Bağlam - Ekipler Neden Vercel'in Ötesini Araştırıyor</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GitHub SpecKit: AI Kod Üretimini Kaostan Üretime Hazır Sistemlere Dönüştürme]]></title>
            <description><![CDATA[GitHub'ın SpecKit framework'ünün AI destekli geliştirmedeki en büyük sorunu nasıl çözdüğünü keşfedin: kanıtlanmış 4 aşamalı yaklaşımla kaotik implementasyonlar yerine yapılandırılmış, sürdürülebilir kod elde etme.]]></description>
            <link>https://sph.sh/tr/posts/github-speckit-ai-specification-framework/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/github-speckit-ai-specification-framework/</guid>
            <category><![CDATA[github]]></category>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[code-quality]]></category>
            <category><![CDATA[development-tools]]></category>
            <category><![CDATA[specification-driven]]></category>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[copilot]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 24 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>AI araçlarının ürettiği kod genellikle yerel bir smoke test'i geçer ama üretim çıtasını geçemez: belirsiz arayüzler, yukarı akış verisi hakkında doğrulanmamış varsayımlar, eksik hata yönetimi ve kod tabanının konvansiyonlarını değil prompt'u yansıtan bir yapı. "İzole çalışır" ile "production'a çıkar" arasındaki boşluk bir model yeteneği problemi değil, bir spesifikasyon problemidir. Arayüzün, girdilerin, değişmezlerin ve hata modlarının açık, makine okunabilir bir spesifikasyonu, modelin tek satır üretmesinden önce bu boşluğun çoğunu kapatır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK ve Serverless ile Geçici Preview Ortamları Oluşturma]]></title>
            <description><![CDATA[AWS CDK, Lambda ve GitHub Actions kullanarak otomatik preview ortamları oluşturmayı öğrenin - sorunsuz PR test ve inceleme süreçleri için]]></description>
            <link>https://sph.sh/tr/posts/ephemeral-preview-environments-aws-serverless-cdk/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/ephemeral-preview-environments-aws-serverless-cdk/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[github-actions]]></category>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[devops-monitoring]]></category>
            <category><![CDATA[aws]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sun, 21 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Paylaşılan Staging Ortamlarının Problemi</strong></p>
<p>Paylaşılan tek bir staging ortamı, bir ekip günde birden fazla pull request açmaya başladığı an darboğaza dönüşür. Eşzamanlı PR'lar birbirlerinin veritabanı durumunu üzerine yazar, aynı feature flag'lerde çakışır ve aynı DNS kaydı için yarışır; test sinyali düşer çünkü bir hata, gerçek bir regresyon kadar "başka birinin PR'ı" anlamına da gelebilir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Key-Value Storage Temelleri - Doğru Çözümü Anlama ve Seçme Rehberi]]></title>
            <description><![CDATA[Key-value storage hakkında dört temel soruyu yanıtlayan kapsamlı bir temel rehber: KV storage nedir? Nerede kullanılır? Neden KV storage seçilir? Hangi tech stack'lerde hangi çözümler var?]]></description>
            <link>https://sph.sh/tr/posts/redis-key-value-storage-fundamentals/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/redis-key-value-storage-fundamentals/</guid>
            <category><![CDATA[redis]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[key-value-storage]]></category>
            <category><![CDATA[caching]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[database]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 15 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hiç bir takımın session storage için database index'lerini "optimize etmeye" üç hafta harcadığını, sonra tamamen farklı bir yaklaşıma ihtiyaç duyduklarını fark ettiğini gördünüz mü? Bu pattern sık sık görülür: developerlar relational, document ve key-value database'ler arasında seçim yapıyorlar ama temel farklılıkları ve uygun kullanım alanlarını anlamıyorlar.</p>
<p>Çeşitli teknoloji ekosistemlerinde bu kararlarla çalışmak şunu gösterir: başarının anahtarı sadece hangi teknolojiyi seçeceğini bilmek değil - kararı yönlendiren dört temel soruyu anlamak.</p>
<p><strong>KV Storage Kararlarını Yönlendiren Dört Soru</strong></p>
<p>Data storage sorunlarını değerlendirirken, bu dört soru sağlam bir temel oluşturur:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Claude Code ve MCP Ekosisteminde Uzmanlaşma: Kurulumdan Production'a]]></title>
            <description><![CDATA[Claude Code, AI agent'ları ve Model Context Protocol sunucuları hakkında geliştiricileri temel kullanıcıdan güç kullanıcısına dönüştüren kapsamlı bir rehber]]></description>
            <link>https://sph.sh/tr/posts/claude-code-mcp-ecosystem-mastery/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/claude-code-mcp-ecosystem-mastery/</guid>
            <category><![CDATA[claude-code]]></category>
            <category><![CDATA[mcp-servers]]></category>
            <category><![CDATA[ai-development]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hiç merak ettiniz mi, bazı geliştirici arkadaşlar Claude Code ile kayda değer ölçüde daha verimli çalışırken siz hala yanıtları kopyala-yapıştır yapmakla uğraşıyorsunuz? Claude Code'u çeşitli MCP (Model Context Protocol) sunucuları ile kullanmak gösteriyor ki, fark daha zeki olmakla ilgili değil - çoğu geliştiricinin varlığından bile haberdar olmadığı araç ekosistemini anlamakla ilgili.</p>
<p>Bu rehber Claude Code ve MCP sunucularını kapsamakta, yaygın kurulum sorunları ve etkili konfigürasyonlar dahil. Uyarıyorum: bu konu teknik detaylara giriyor, ama yolculuğu dürüstçe paylaşacağım - neyin test edilmiş, neyin konsept ve neyin sizin özel ortamınızda doğrulama gerektirdiği dahil.</p>
<p><strong>Gerçeklik Kontrolü: Claude Code Aslında Nedir</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kültürel Körlüğün Gizli Maliyeti: Global Engineering Takımları Nasıl Başarısız Oluyor]]></title>
            <description><![CDATA[Kültürel yanlış anlaşılmaların yazılım projelerine milyarlarca dolar nasıl mal olduğu ve takım verimliliğini nasıl yok ettiği - artı gerçekten etkili global takımlar kurmanın pratik çerçeveleri.]]></description>
            <link>https://sph.sh/tr/posts/cultural-misunderstandings-global-engineering-teams/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cultural-misunderstandings-global-engineering-teams/</guid>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[global-teams]]></category>
            <category><![CDATA[cultural-intelligence]]></category>
            <category><![CDATA[remote-work]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Launch'tan üç hafta önce proje dashboard'umuzda her şey mükemmel görünüyordu. Tüm yeşil tick'ler, tüm takımlar "hazır" rapor ediyor. Sonra deployment günü geldi ve $2 milyonluk development work'ün neredeyse collapse olduğunu izledim - teknik failure'lar yüzünden değil, ABD takımımızın Hindistanlı developerların feature'ın hazır olduğunu onayladığını sanması, Alman takımın hala proper dokümantasyon beklemesi ve Japon takım üyelerinin kritik endişelerini hiçbir zaman toplantılarda dile getirmemesi yüzünden.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rol Belirsizliğinin Gizli Maliyeti: Net Beklentiler Yazılım Ekibi Performansını Nasıl Dönüştürür]]></title>
            <description><![CDATA[Net olmayan rol beklentilerinin yazılım ekibi verimliliğini %40+ nasıl sessizce boşa harcadığını ve organizasyonlara milyonlara mal olduğunu keşfedin - ayrıca bu israfı ortadan kaldırmak ve performansı %25-53 artırmak için kanıtlanmış framework'ler.]]></description>
            <link>https://sph.sh/tr/posts/hidden-cost-role-ambiguity-software-team-performance/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/hidden-cost-role-ambiguity-software-team-performance/</guid>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[role-clarity]]></category>
            <category><![CDATA[team-performance]]></category>
            <category><![CDATA[raci-matrix]]></category>
            <category><![CDATA[remote-teams]]></category>
            <category><![CDATA[engineering-management]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Yaygın bir senaryoyu düşünelim: iki engineer API design ownership konusunda üç gün boyunca Slack'te hararetli tartışmalar yapıyor. Frontend ekibi backend'in tasarlayacağını varsayıyor, backend product gereksinimlerini bekliyor, DevOps da "performans endişeleri" için sürükleniyor. Üç gün döngüsel tartışma, kaçırılan deadline'lar ve artan hayal kırıklığı - hepsi kimin neyin sorumlusu olduğunu kimsenin net bir şekilde tanımlamadığı için.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Yazılım Ekiplerinde Zor Meslektaşlarla Çalışmak: Teorinin Ötesinde Pratik Çözümler]]></title>
            <description><![CDATA[Yazılım ekiplerindeki zor kişiliklerle başa çıkmak için kapsamlı rehber - kod review çatışmalarından toplantı monopolcülerine, modern mühendislik ortamları için pratik stratejiler.]]></description>
            <link>https://sph.sh/tr/posts/managing-difficult-coworkers-software-engineering-teams/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/managing-difficult-coworkers-software-engineering-teams/</guid>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[workplace-psychology]]></category>
            <category><![CDATA[team-dynamics]]></category>
            <category><![CDATA[remote-work]]></category>
            <category><![CDATA[code-review]]></category>
            <category><![CDATA[agile]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Işbirlikçi bir feature üzerinde çalışırken, 10 satırlık kod review thread'inin 47 mesajlık naming convention tartışmasına dönüştüğünü izledim. Tartışma üç gün sürdü ve altı ekip üyesini içerdi. Orijinal bug fix? Hâlâ merge edilmemişti. Ekip morali? Yok edilmişti. İşte o zaman anladım ki Harvard Business Review'ın zor meslektaşlar hakkındaki tavsiyesi temel bir başlangıç sağlasa da, engineering ekiplerinin gerçekte karşılaştığı durumların yüzeyini zar zor kazıyordu. Engineering'e özel arketipler—mükemmeliyetçi engelleyici, teknik pürist, hayalet meslektaş—farklı strateji gerektirir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Güvenlik Sözlüğü: Her Geliştirici Ekibinin Bilmesi Gereken 50+ Terim]]></title>
            <description><![CDATA[Prodüksiyon sistemleri deneyiminden implementasyon bağlamı, öğrenilen dersler ve pratik rehberlik içeren kapsamlı güvenlik referansı.]]></description>
            <link>https://sph.sh/tr/posts/security-glossary-appendix/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/security-glossary-appendix/</guid>
            <category><![CDATA[security]]></category>
            <category><![CDATA[authentication]]></category>
            <category><![CDATA[oauth2]]></category>
            <category><![CDATA[mfa]]></category>
            <category><![CDATA[biometric]]></category>
            <category><![CDATA[zero-trust]]></category>
            <category><![CDATA[jwt]]></category>
            <category><![CDATA[saml]]></category>
            <category><![CDATA[oidc]]></category>
            <category><![CDATA[rbac]]></category>
            <category><![CDATA[abac]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Güvenlik terminoloji karışıklığının ekibine haftalarca iş kaybettirdiği anlar yaşadın mı? Ben yaşadım. Authentication sistemleri ile çalışmak gösterdi ki en büyük güvenlik hataları genellikle basit yanlış iletişimle başlıyor. OAuth2 uzmanın "authentication yapıyoruz" diye ısrar edip güvenlik audit'in OAuth2'nin authentication'ı handle etmediği için fail olduğu zaman... bu pahalı bir öğrenme deneyimi oldu.</p>
<p>Bu sözlük sadece tanımlar değil. Implementation bağlamı, yaygın yanlış anlamalar ve prodüksiyon sistemlerinden öğrenilen dersler içeren bir saha rehberi. Stakeholder'ların buzzword'leri yanlış kullandığı ya da SMS OTP'nin neden güvenli olmadığını açıklaman gereken anlar için referansın olarak düşün.</p>
<p><strong>Authentication Temelleri</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Takım Çatışması Çözümü: Yüksek Performansa Giden Yol Haritası]]></title>
            <description><![CDATA[Yazılım geliştirme takımlarında çatışmaları tespit etme, yönetme ve çözme konusunda topluluk testinden geçmiş stratejiler. Kolektif mühendislik deneyiminden pratik framework'ler, erken uyarı sistemleri ve gerçek uygulama rehberi.]]></description>
            <link>https://sph.sh/tr/posts/team-conflict-resolution-field-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/team-conflict-resolution-field-guide/</guid>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[software-engineering]]></category>
            <category><![CDATA[remote-work]]></category>
            <category><![CDATA[conflict-resolution]]></category>
            <category><![CDATA[engineering-culture]]></category>
            <category><![CDATA[psychological-safety]]></category>
            <category><![CDATA[team-dynamics]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Sat, 13 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>En verimli takımın temel mimari kararlarda anlaşamadığında ya da code review'lar tüm öğleden sonrayı tüketen felsefi savaşlara dönüştüğünde, daha derin bir disfonksiyonun belirtilerini görüyorsun. Fark anlaşmazlığın kendisinde değil - takımların nasıl yanıt verdiğinde.</p>
<p>Engineering takımlarını gözlemlemek, bu kalıbın farklı bağlamlar ve durumlar genelinde tutarlı şekilde ortaya çıktığını gösteriyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[pnpm Catalog ile Dependency Drift Sorununu Çözmek: Production'da Kanıtlanmış Monorepo Stratejisi]]></title>
            <description><![CDATA[pnpm'in catalog özelliği JavaScript monorepo'larındaki dependency drift sorununu temelden nasıl çözüyor - pratik uygulama pattern'leri ve kanıtlanmış stratejilerle]]></description>
            <link>https://sph.sh/tr/posts/pnpm-catalog-dependency-drift-solution/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/pnpm-catalog-dependency-drift-solution/</guid>
            <category><![CDATA[pnpm]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[dependency-management]]></category>
            <category><![CDATA[monorepo]]></category>
            <category><![CDATA[performance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>JavaScript monorepo'larındaki dependency drift versiyon çakışmaları, phantom bug'lar ve ciddi developer overhead yaratıyor. Bu analiz pnpm'in catalog özelliğinin nasıl enforcement yetenekleriyle merkezi dependency governance sağladığını, önemli disk alanı tasarrufu, daha hızlı kurulum ve production ortamlarında merge conflict'lerin azalmasını nasıl sağladığını inceliyor.</p>
<p><strong>Durum: Dependency Drift Sorunu</strong></p>
<p>API gateway'ler kritik demo'lar sırasında kriptik TypeScript hataları vermeye başladığında, ve authentication microservice'ler payment processor'lardan farklı @types/node versiyonları çalıştırdığında, dependency drift ciddi bir architectural problem haline gelmiş demektir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[İyi Bir Teknik RFC'nin Anatomisi: Bölüm Bölüm İnceleme]]></title>
            <description><![CDATA[Yüzlerce doküman inceleyerek oluşturulan, onaylanan ve başarılı implementasyonlara yol açan teknik RFC'ler hazırlama rehberi]]></description>
            <link>https://sph.sh/tr/posts/anatomy-of-technical-rfc/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/anatomy-of-technical-rfc/</guid>
            <category><![CDATA[rfc]]></category>
            <category><![CDATA[technical-writing]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[engineering-process]]></category>
            <category><![CDATA[stakeholder-management]]></category>
            <category><![CDATA[communication]]></category>
            <category><![CDATA[decision-making]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Kritik bir sistem için RFC yazarken boş bir dokümana bakıp, acaba ilk paragraftan sonrasını okuyacak biri olacak mı diye düşündüğünüz o anı bilir misiniz? Bu his tanıdık geliyorsa, yalnız değilsiniz. Çoğu mühendis RFC yazarken aynı belirsizlikle mücadele ediyor. Farklı şirketlerde yüzlerce RFC inceleyerek, bu dokümanları gerçekten faydalı yapan ve sadece bürokratik egzersiz olmaktan çıkaran kalıpları fark ettim.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[İş Alanlarına Göre Kimlik Doğrulama ve Yetkilendirme Stratejileri: Bankacılık Güvenliği Sosyal Medya Kaosuyla Buluştuğunda]]></title>
            <description><![CDATA[Farklı sektörlerde auth sistemleri geliştirdikten sonra öğrendim ki tek boyutlu kimlik doğrulama bir efsane. Her iş alanının kendine özgü gereksinimleri var ve bu da auth mimarinizi dramatik şekilde etkiliyor.]]></description>
            <link>https://sph.sh/tr/posts/authentication-authorization-strategies-by-business-domain/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/authentication-authorization-strategies-by-business-domain/</guid>
            <category><![CDATA[authentication]]></category>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[oauth2]]></category>
            <category><![CDATA[jwt]]></category>
            <category><![CDATA[compliance]]></category>
            <category><![CDATA[fintech]]></category>
            <category><![CDATA[healthcare]]></category>
            <category><![CDATA[enterprise]]></category>
            <category><![CDATA[saml]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Kimlik doğrulama ve yetkilendirme tek bir teknik karar değildir; iş alanına göre keskin biçimde farklılaşan düzenleyici kısıtlamaların, kullanıcı beklentilerinin, hata biçimlerinin ve denetim gereksinimlerinin bir bileşimidir. Bir bankacılık kimlik doğrulama akışı ile sosyal medya akışı aynı mekanik soruya ("bu istek iddia edilen kullanıcıdan mı geliyor?") cevap verir, ancak kabul edilebilir cevaplar oturum uzunluğu, çok faktörlü güç, kurtarma yolları ve bir kilitlemenin nasıl göründüğü noktalarında birbirinden ayrılır. Bir kimlik doğrulama yığınının alanlar arasında yeniden kullanılması genellikle kripto primitifleri üzerinde değil, o alanların farklı ele aldığı uç durumlarda başarısız olur: bankacılıkta step-up kimlik doğrulama, IoT'de delege kimlik, sosyalde nazik bozulma.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Code Review Kültürü: Hatabulma'dan Bilgi Paylaşımına]]></title>
            <description><![CDATA[Code review'ları hata arama egzersizlerinden güçlü mentorluk ve öğrenme fırsatlarına nasıl dönüştürürüz. Psikolojik güvenlik yaratarak kod kalitesini artırma rehberi.]]></description>
            <link>https://sph.sh/tr/posts/code-review-culture-nitpicking-to-knowledge-sharing/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/code-review-culture-nitpicking-to-knowledge-sharing/</guid>
            <category><![CDATA[code-review]]></category>
            <category><![CDATA[team-culture]]></category>
            <category><![CDATA[mentorship]]></category>
            <category><![CDATA[psychological-safety]]></category>
            <category><![CDATA[knowledge-sharing]]></category>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[remote-work]]></category>
            <category><![CDATA[onboarding]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Code review kültürünün aslında en yetenekli junior developer'larını uzaklaştırdığını fark ettiğin o an var ya? Bu anı çeyreklik ekip retrospektifinde yaşadım. En umut verici developer'larımızdan Sarah, iki hafta boyunca bir feature üzerinde tek başına çalışmayı, kodu review için göndermekten daha çok tercih ettiğini söylediğinde.</p>
<p>Bu gerçekten ağır geldi. Sıkı review'lar sayesinde kaliteyi koruduğumuzu sanıyorduk. Gerçekte, kodunun review edilmesinin, seni başarılı olmanda desteklemekten çok hata bulmakla ilgilenen eleştirmenler kuruluna tez savunuyormuş gibi hissettiren bir ortam yaratmıştık.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Copilot'tan Üretim Ortamına: 2 Yıl Sonrası Gerçek Maliyet Analizi]]></title>
            <description><![CDATA[2+ yıllık kurumsal GitHub Copilot kullanımının ardından, kimsenin konuşmadığı dürüst ROI analizi - verimlilik artışları, gizli maliyetler ve kod kalitesi değiş tokuşları.]]></description>
            <link>https://sph.sh/tr/posts/copilot-to-production-cost-analysis/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/copilot-to-production-cost-analysis/</guid>
            <category><![CDATA[github-copilot]]></category>
            <category><![CDATA[ai-tools]]></category>
            <category><![CDATA[productivity]]></category>
            <category><![CDATA[roi-analysis]]></category>
            <category><![CDATA[code-quality]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[enterprise]]></category>
            <category><![CDATA[cost-analysis]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[migration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bir AI kodlama asistanının geri dönüşünü ölçmek, verimlilik-vekil metriklerini (tuş vuruşu hızı, tamamlama kabul oranı) aracın hareket ettirmesi gereken sonuçlardan (teslim döngü süresi, hata oranı, bakım maliyeti) ayırmayı gerektirir. Satıcı tarafından raporlanan verimlilik sayıları genellikle birinci kümedir; yatırımın kendini amorti edip etmediğini belirleyen ikinci kümedir. Özellikle GitHub Copilot için, ekip büyüklükleri arasında gözlemlenen örüntü şudur: verimlilik-vekil kazanımları gerçektir ama Copilot yazımı kod üzerindeki bakım maliyeti bunlarla birlikte yükselir ve net ROI, ekibin inceleme ve refactor süreçlerinin bu ikinci boşluğu kapatıp kapatmadığına bağlıdır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veritabanı Query Profiling: Sistematik Optimizasyon Yolculuğu]]></title>
            <description><![CDATA[Sistematik veritabanı profiling ve optimizasyonu ile yıllık altyapı maliyetlerini 100K dolar azalttığımız hikaye. PostgreSQL ve MongoDB performance deneyimleri.]]></description>
            <link>https://sph.sh/tr/posts/database-query-profiling-100k-optimization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/database-query-profiling-100k-optimization/</guid>
            <category><![CDATA[database-optimization]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[mongodb]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[profiling]]></category>
            <category><![CDATA[indexing]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[infrastructure]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Hiç üç aylık maliyet değerlendirmelerinden birinde AWS faturası odadaki herkesi sessizliğe gömecek cinsten mi? Ben yaşadım. Üç yıl önce, veritabanı altyapımız Series A fonlaması alan bir startup'tan bile daha hızlı para yakıyordu. Aylık maliyetler 5.400 dolara kadar çıkmıştı, query'ler yoğun trafik sırasında timeout alıyor, en hızlı "çözümümüz" her zaman "daha fazla sunucu ekle" oluyordu.</p>
<p>Bu durum, veritabanı problemlerine donanım fırlatmanın kahve fincanını yangın hortumu ile doldurmaya benzer bir şey olduğunu - pahalı, dağınık ve şaşırtıcı derecede etkisiz - anlamadan önceydi.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mühendislik Takımlarında Lewis Deep Democracy: Sahte Konsensüsün Ötesinde]]></title>
            <description><![CDATA[Arnold Mindell'in Deep Democracy ilkelerinin teknik karar alma süreçlerini nasıl dönüştürebileceği, psikolojik güvenlik yaratabileceği ve her sesin mimarinizi güçlendirmesini nasıl sağlayabileceği - sadece en sesli olanlar değil]]></description>
            <link>https://sph.sh/tr/posts/deep-democracy-engineering-teams/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/deep-democracy-engineering-teams/</guid>
            <category><![CDATA[deep-democracy]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[team-dynamics]]></category>
            <category><![CDATA[decision-making]]></category>
            <category><![CDATA[psychological-safety]]></category>
            <category><![CDATA[inclusive-culture]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[leadership]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Takımlar oybirliği gibi görünen ama gerçek konsensüse sahip olmayan teknik kararlarla mücadele ettiğinde, temel neden genellikle güç dinamikleri ve yetersiz psikolojik güvenliktedir. Bu inceleme, Arnold Mindell'in Deep Democracy ilkelerinin mühendislik karar verme süreçlerini nasıl dönüştürebileceğini ve özellikle kritik içgörüler taşıyan muhalif seslerin dahil olmak üzere her sesin mimari seçimleri nasıl güçlendirebileceğini araştırıyor.</p>
<p><strong>Durum: Sahte Konsensüsün Gizli Maliyetleri</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[LLM Kod İncelemesi: AI'ın İnsanların Kaçırdığını Yakaladığı Anlar]]></title>
            <description><![CDATA[Gerçek kurumsal deneyimlere dayalı AI destekli kod incelemesi uygulama rehberi. AI'ın insanların kaçırdığını ne yakaladığını, insanların hala üstün olduğu alanları ve kod inceleme süreçlerinde etkili insan-AI işbirliği kurmayı öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/llm-code-review-ai-finds-what-humans-miss/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/llm-code-review-ai-finds-what-humans-miss/</guid>
            <category><![CDATA[ai-code-review]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[code-quality]]></category>
            <category><![CDATA[mentorship]]></category>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[prompts]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>En deneyimli güvenlik mühendisinin bir PR'ı onayladığı, üç gün sonra da bunun SQL injection açığı yaratacağını keşfettiğin anı biliyor musun? Bizim başımıza geldi. Açık çok ince bir şekilde gizlenmişti, karmaşık bir query builder pattern'ının içinde, tek başına bakıldığında gayet mantıklı görünüyordu. Pilot test olarak çalıştırdığımız AI inceleyici bunu fark etti.</p>
<p>Bu olay kod incelemesi hakkındaki düşüncelerimi değiştirdi. AI'ın yanılmaz olduğu için değil (inan bana, değil), ama rahatsız edici bir gerçeği ortaya koyduğu için: insanlar da yanılmaz değil ve her birinin masaya ne getirdiği konusundaki varsayımlarımız ciddi bir kalibrasyona ihtiyaç duyuyordu.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Monolit'in İntikamı: Microservisler Teknik Borç Haline Geldiğinde]]></title>
            <description><![CDATA[Dağıtık monolitleri tanıma, stratejik servis konsolidasyonu ve microservis karmaşıklığı sürdürülemez hale geldiğinde modüler monolitlere geri dönüşün gerçekleri üzerine bir perspektif.]]></description>
            <link>https://sph.sh/tr/posts/monolith-revenge-microservices-technical-debt/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/monolith-revenge-microservices-technical-debt/</guid>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[monolith]]></category>
            <category><![CDATA[modular-monolith]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[service-consolidation]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <category><![CDATA[technical-debt]]></category>
            <category><![CDATA[team-productivity]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Microservis mimarinizin, kaçınmaya çalıştığınız dağıtık monolit haline geldiğini fark ettiğiniz o batma hissini biliyor musun? Bu pattern'i birçok şirkette tekrar tekrar gördüm. Microservislerin ne zaman teknik borca dönüştüğünü tanıma ve stratejik olarak nasıl normale dönüleceği konusunda öğrendiklerimi paylaşayım. Dağıtık monolit sendromu genellikle deployment coupling, veri tutarlılığı zorlukları ve koordinasyon yüküyle kendini gösterir. İyi haber: konsolidasyon geçerli bir mimari pattern, başarısızlık itirafı değil.</p>
<p><strong>47 Servisle Alışveriş Sepeti Kâbusu</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Node.js Geliştiricileri için Go: Serverless Migration Deneyimleri]]></title>
            <description><![CDATA[Serverless ortamlarda Node.js'den Go'ya geçiş sürecinden gerçek deneyimler: performans kazanımları, takım zorlukları ve pratik karar çerçeveleri.]]></description>
            <link>https://sph.sh/tr/posts/nodejs-to-go-serverless-migration-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/nodejs-to-go-serverless-migration-guide/</guid>
            <category><![CDATA[golang]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[migration]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>CFO sana gelip geçen ay serverless faturasının 50K dolar olduğunu söyleyip "bunu optimize etmenin bir yolu var mı?" diye sorduğunda, gelecek konuşmayı biliyorsun. Sonrasında yaşananlar Node.js konfor alanımdan Go dünyasına doğru bir yolculuk oldu ve bana performans, takım dinamikleri ve pragmatik mimari kararları hakkında çok şey öğretti.</p>
<p>Farklı şirketlerde Node.js'den Go'ya geçiş süreçlerini yönettim, 8 ile 60 geliştirici arasında değişen takımlarla. Bazı migrationlar müthiş başarılıydı - maliyetleri %70 azaltırken performansı artırdık. Diğerleri "erken optimizasyon"un ne demek olduğunu mükemmel çalışan bir ödeme işleme servisini sadece "Go daha hızlı" diye yeniden yazmaya çalışırken öğretti.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Node.js ile Zaman Yönetimi: Moment.js Olmadan Zamana Hükmetmek]]></title>
            <description><![CDATA[Production'da yaşanan zaman yönetimi problemleri, Moment.js'den modern alternatiflere geçiş stratejileri ve UTC handling best practice'leri. Timezone savaşlarından çıkışın yolu.]]></description>
            <link>https://sph.sh/tr/posts/nodejs-zaman-yonetimi-zamana-hukmetmek/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/nodejs-zaman-yonetimi-zamana-hukmetmek/</guid>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[time-management]]></category>
            <category><![CDATA[moment-js]]></category>
            <category><![CDATA[dayjs]]></category>
            <category><![CDATA[date-fns]]></category>
            <category><![CDATA[timezone]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[migration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Production sistemlerde zaman yönetimi, varsayılanların (yerel sistem saati, örtük timezone, new Date() ayrıştırması) düğümler, diller ve katmanlar arasında farklılaşması nedeniyle sessiz bir hata kaynağıdır. İstek güncel yerel bir tarih taşımasına rağmen "geçmiş tarihli işlem" hatası veren bir ödeme, genellikle istemcinin duvar saati, uygulama sunucusunun yorumu ve veritabanının saklama formatı arasında bir timezone-offset hatasıdır. Her yerde UTC kullanmak ve ofset dönüşümünü yalnızca görüntüleme sınırında yapmak bu hata sınıfını tamamen ortadan kaldırır; ancak her API, log, şema ve test fikstürü sınırında disiplin gerektirir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Metriklerin Ötesinde Observability: Sistem Hikaye Anlatıcılığı Sanatı]]></title>
            <description><![CDATA[Yeşil ışıklarla dolu dashboard'lardan, dağıtık izleme ve AI destekli analiz ile sistem davranışı, kullanıcı yolculukları ve iş etkisi hakkında etkileyici hikayeler anlatan observability sistemlerine geçiş]]></description>
            <link>https://sph.sh/tr/posts/observability-beyond-metrics-system-storytelling/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/observability-beyond-metrics-system-storytelling/</guid>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[distributed-tracing]]></category>
            <category><![CDATA[opentelemetry]]></category>
            <category><![CDATA[grafana]]></category>
            <category><![CDATA[incident-response]]></category>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[storytelling]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Geleneksel monitoring dashboard'ları sağlıklı metrikler gösterirken kritik kullanıcı yolculukları sessizce başarısız olabilir. Bu yazı, distributed tracing ve AI destekli pattern tanımanın ham telemetriyi sistem davranışı hakkında tutarlı hikayelere nasıl dönüştürdüğünü, ekiplerin karmaşık hata modlarını anlamasını ve kullanıcıları etkilemeden önce sorunları tahmin etmesini nasıl sağladığını araştırıyor.</p>
<p><strong>Durum: Yeşil Dashboard'lar Yalan Söylediğinde</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ürün ve Teknoloji Ekipleri Arasında Derinlemesine Demokrasi: Deadline Diktatörlüğünden İşbirlikçi Teslimat'a]]></title>
            <description><![CDATA[Çekişmeli ürün-mühendislik ilişkilerini Deep Democracy prensiplerilyle işbirlikçi ortaklıklara dönüştürün. Burnout'u %35 azaltan ve deployment sıklığını 973x artıran pratik framework'leri öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/product-tech-deep-democracy/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/product-tech-deep-democracy/</guid>
            <category><![CDATA[product-management]]></category>
            <category><![CDATA[engineering-management]]></category>
            <category><![CDATA[collaboration]]></category>
            <category><![CDATA[team-dynamics]]></category>
            <category><![CDATA[agile]]></category>
            <category><![CDATA[communication]]></category>
            <category><![CDATA[burnout]]></category>
            <category><![CDATA[remote-work]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[organizational-culture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Sprint planning toplantısında oturup Ürün ve Mühendislik ekiplerinin karşı karşıya duran ordular gibi çatıştığını izlediğinde, gelecek pattern'ı biliyorsun. Ürün ekibi board demo'su için altı haftaya üç aylık feature'ları sıkıştırmakta ısrar ediyor. Mühendisliğin kapasite hesaplamaları minimum on iki hafta gösteriyor. "Uzlaşma"? Herkes dört haftanın gerçekçi olduğunu numara yapıyor, mühendislik 70 saatlik haftalarda çalışıp buggy kod gönderiyor, bir sonraki çeyrek production yangınlarını söndürmekle geçiyor.</p>
<p>Bu filmi çok fazla gördüm. Senaryo hiç değişmiyor, ama kayıplar artmaya devam ediyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[RFC'den Production'a: Implementation Hakkında Anlatmadıkları]]></title>
            <description><![CDATA[Güzel RFC tasarımları ile karmaşık production gerçekliği arasındaki boşluk üzerine samimi bir değerlendirme ve bildirim sistemleri örneğinden gerçek dersler]]></description>
            <link>https://sph.sh/tr/posts/rfc-to-production-implementation-reality/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/rfc-to-production-implementation-reality/</guid>
            <category><![CDATA[rfc]]></category>
            <category><![CDATA[implementation]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[project-management]]></category>
            <category><![CDATA[technical-debt]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[architecture]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>RFC'ler production'la karşılaştığında nadiren değişmeden kalır ve bu mutlaka bir problem değil. Bildirim sistemi implementasyonlarını inceleyerek, zarif tasarımların organizasyonel kısıtlar, timeline baskıları ve beklenmeyen gereksinimlerle karşılaştığında nasıl evrimleştiğini öğrenebiliriz. Bu inceleme, teorik tasarım ile pratik implementasyon arasındaki boşluğu kapatmaya yardımcı olan kalıpları ortaya çıkarır.</p>
<p><strong>Durum: Güzel RFC vs Production Gerçekliği</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ölçeklenebilir Kullanıcı Bildirim Sistemi: Mimari ve Veritabanı Tasarımı]]></title>
            <description><![CDATA[Milyonlarca kullanıcıya hizmet veren kurumsal bildirim sistemleri için tasarım desenleri, veritabanı şemaları ve mimari kararlar]]></description>
            <link>https://sph.sh/tr/posts/user-notification-system-part-1-architecture/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/user-notification-system-part-1-architecture/</guid>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[notifications]]></category>
            <category><![CDATA[database-design]]></category>
            <category><![CDATA[scalability]]></category>
            <category><![CDATA[enterprise]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bir bildirim özelliği "X olduğunda email gönder" olarak başlar ve bir çeyrek içinde çok kanallı bir teslim problemine dönüşür: email, SMS, push ve uygulama içi; her birinin kendi teslim garantileri, retry semantiği ve kullanıcı tercihi yüzeyi vardır. Mimari hata, bunu bir şablon-ve-gönder problemi olarak ele almaktır; asıl problem, kullanıcı-kanal-olay başına fan-out, birleştirme, bastırma ya da erteleme kararını veren ve bu kararı uyumluluk ve destek için denetlenebilir tutmak zorunda olan bir yönlendiricidir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gerçek Zamanlı Bildirimler ve Çok Kanallı Teslimat: WebSocket, Push, Email ve Ötesi]]></title>
            <description><![CDATA[WebSocket, push bildirim, email, SMS ve webhook kanalları için üretimde test edilmiş gerçek zamanlı bildirim teslimat stratejileri]]></description>
            <link>https://sph.sh/tr/posts/user-notification-system-part-2-realtime-delivery/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/user-notification-system-part-2-realtime-delivery/</guid>
            <category><![CDATA[websockets]]></category>
            <category><![CDATA[push-notifications]]></category>
            <category><![CDATA[email]]></category>
            <category><![CDATA[sms]]></category>
            <category><![CDATA[real-time]]></category>
            <category><![CDATA[channels]]></category>
            <category><![CDATA[delivery]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Gerçek zamanlı bildirimler, platforma özgü push bildirim farklılıkları, ölçekte WebSocket bağlantı yönetimi ve trafikle birlikte çoğalan vendor maliyetleriyle uğraşana kadar basit görünür.</p>
<p>Çok kanallı bildirim sistemleri, asıl zorluğun bildirim göndermek olmadığını ortaya çıkarır—güvenilir şekilde, ölçekte, her birinin kendi tuhaflıkları, sınırları ve hata modları olan farklı teslimat mekanizmaları üzerinden yapmak zorluğu. WebSocket'te connection drain, push'ta device token invalidation, email'de bounce handling—her kanal farklı operasyonel zorluklar getirir. iOS ve Android push gereksinimleri farklıdır; WebSocket bağlantı yönetimi Redis veya benzeri bir store gerektirir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Üretim İçgörüleri: Ölçekte Bildirim Teslimatını Debug Etmek]]></title>
            <description><![CDATA[Yüksek riskli üretim ortamlarında bildirim sistemi hatalarından edinilen gerçek dünya debugging teknikleri, izleme stratejileri ve dersler]]></description>
            <link>https://sph.sh/tr/posts/user-notification-system-part-3-production-debugging/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/user-notification-system-part-3-production-debugging/</guid>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[notifications]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[incident-response]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Şu sahneyi hayal et: Yılın en büyük ürün lansmanının tam ortasında. Pazarlama bu özelliği aylardır iter, CEO metrik dashboard'unu izliyor ve aniden bildirim sistemin sessizliğe gömülüyor. Hoşgeldin emailleri yok, push bildirimler yok, uygulama içi alertler yok. Sadece... hiçlik.</p>
<p>Bu hipotetik bir senaryo değil. Bu kâbusun versiyonlarını üç farklı şirkette yaşadım, her seferinde bildirim altyapın ateş altındayken gerçekten neyin önemli olduğu hakkında yeni dersler öğrenerek. Blog yazılarında zarif görünen debugging teknikleri, telefonun giderek daha çılgın Slack mesajlarıyla vızıldadığı sırada 500'ler denizine bakarken çoğu zaman çöküyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bildirim Analitikleri ve Performans Optimizasyonu: A/B Testleri, Metrikler ve Ölçekte Ayarlama]]></title>
            <description><![CDATA[Milyonlarca kullanıcıya hizmet veren bildirim sistemleri için gelişmiş analitik stratejiler, A/B test framework'leri ve performans optimizasyon teknikleri]]></description>
            <link>https://sph.sh/tr/posts/user-notification-system-part-4-analytics-optimization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/user-notification-system-part-4-analytics-optimization/</guid>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[ab-testing]]></category>
            <category><![CDATA[metrics]]></category>
            <category><![CDATA[notifications]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[scalability]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Bu rehber, bildirim sistemlerini temel teslimat mekanizmalarından sofistike büyüme motorlarına nasıl dönüştürüleceğini kapsamlı analitikler, sistematik A/B testleri ve performans optimizasyonu ile açıklıyor. Sunulan teknikler çok katmanlı analitik pipeline'lar, kullanıcı yolculuğu takibi, güvenlik öncelikli deney framework'leri ve maliyet-bilinçli optimizasyon stratejilerine odaklanıyor.</p>
<p><strong>Durum</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Etkili RFC Yazma: Teknik Karar Verme Rehberi]]></title>
            <description><![CDATA[RFC süreçleri, stakeholder yönetimi ve teknik tartışmaları işbirlikçi kararlara dönüştürme deneyiminden zorlu dersler.]]></description>
            <link>https://sph.sh/tr/posts/writing-effective-rfcs-principal-engineer-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/writing-effective-rfcs-principal-engineer-guide/</guid>
            <category><![CDATA[rfc]]></category>
            <category><![CDATA[technical-writing]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[decision-making]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[engineering-management]]></category>
            <category><![CDATA[stakeholder-management]]></category>
            <category><![CDATA[process]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Mon, 08 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Basit gibi görünen bir özelliği geliştirmeye başladıktan üç ay sonra, herkesin database schema seçimleri hakkında güçlü fikirleri olduğu o anı biliyor musun? İşte genellikle o zaman bir RFC yazmış olmayı diliyorum.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Link Shortener 3. Bölüm: Gelişmiş Özellikler ve Güvenlik]]></title>
            <description><![CDATA[Custom domain'ler, toplu işlemler, URL expiration ve kapsamlı güvenlik önlemlerinin implementasyonu. Production link shortener servisleri için defense-in-depth güvenlik stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-link-shortener-part-3/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-link-shortener-part-3/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[waf]]></category>
            <category><![CDATA[authentication]]></category>
            <category><![CDATA[rate-limiting]]></category>
            <category><![CDATA[custom-domains]]></category>
            <category><![CDATA[bulk-operations]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>AWS CDK Link Shortener 3. Bölüm: Gelişmiş Özellikler ve Güvenlik</strong></p>
<p>Production bir link shortener oluşturmak sadece kısa URL'ler yaratmaktan daha fazlasını gerektirir - meşru ölçeği kaldırabilirken kötüye kullanımı engelleyen kapsamlı güvenlik önlemleri gerektirir. Link shortener'lar, onları zarlı içerik dağıtmak, güvenlik filtrelerini atlatmak ve phishing kampanyaları yürütmek için kullanan kötü niyetli aktörler için çekici hedeflerdir.</p>
<p>Modern link shortener servisleri, input validasyonu, rate limiting, authentication ve gerçek zamanlı monitoring'i birleştiren defense-in-depth koruma gerektirir. Bu yaklaşım hem servisinizi hem de kısaltılmış linklere tıklayan kullanıcıları korur.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Link Shortener Bölüm 4: Production Deployment ve Optimizasyon]]></title>
            <description><![CDATA[Multi-environment deployment stratejileri, ölçekte performans optimizasyonu, ve maliyet yönetimi. Production deneyimleri ve öğrenilen dersler ile doğru monitoring ve incident response pattern'ları.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-link-shortener-part-4/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-link-shortener-part-4/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[cloudfront]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[blue-green-deployment]]></category>
            <category><![CDATA[load-testing]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Production Deployment ve Optimizasyon</strong></p>
<p>Production optimizasyonu işleri hızlandırmanın ötesinde - herhangi bir yük koşulu altında tahmin edilebilir performans gerektirir. Trafik beklenmedik şekilde arttığında, staging'de mükemmel çalışan infrastructure production'da ölçeklendirme darboğazlarını ortaya çıkarabilir.</p>
<p>En yaygın gözden kaçırılan şey? Database'in peak yükler yerine steady-state trafik için provisionlanması. Normal operasyonlar için optimize edilmiş bir DynamoDB table, kampanyalar veya ürün lansmanları sırasında trafik 10x arttığında darboğaz haline gelebilir.</p>
<p>Bölüm 1-3'te temel, core fonksiyon ve güvenlik inşa ettik. Şimdi onu production deployment ve optimizasyon için kurşun geçirmez yapalım.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Link Shortener Part 5: Ölçeklendirme ve Uzun Vadeli Bakım]]></title>
            <description><![CDATA[Multi-region deployment, veritabanı ölçeklendirme stratejileri, felaket kurtarma kalıpları ve uzun vadeli bakım yaklaşımları. Production sistemleri ölçekte çalıştırmanın pratik kalıpları ve uzun vadeli başarı için mimari kararlar.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-link-shortener-part-5/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-link-shortener-part-5/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[multi-region]]></category>
            <category><![CDATA[disaster-recovery]]></category>
            <category><![CDATA[database-scaling]]></category>
            <category><![CDATA[maintenance]]></category>
            <category><![CDATA[operational-excellence]]></category>
            <category><![CDATA[capacity-planning]]></category>
            <category><![CDATA[global-deployment]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Fri, 05 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>AWS CDK Link Shortener Part 5: Ölçeklendirme ve Uzun Vadeli Bakım</strong></p>
<p>Link shortener'ımızı başlattıktan iki yıl sonra, üçlük business review sırasında telefon geldi. "APAC pazarlarına genişlenmemiz gerekiyor ve Avrupa kullanıcılarımız yavaş redirectler hakkında şikayet ediyor." Basit bir istek olarak başlayan şey, altı aylık global ölçeklendirme projesine dönüştü ve bana herhangi bir mimari kursundan daha fazla distributed sistem öğretti.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK ile API Versiyonlama: Bir Üretim Vaka Çalışması]]></title>
            <description><![CDATA[Üretimde çoklu versiyon API'ler implementasyonu üzerine teknik vaka çalışması. Başarısız yaklaşımlar, çalışan çözümler ve API evolüsyonunu yönetmek için CDK pattern'leri.]]></description>
            <link>https://sph.sh/tr/posts/api-versioning-aws-cdk-complete-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/api-versioning-aws-cdk-complete-guide/</guid>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[versioning]]></category>
            <category><![CDATA[case-study]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Öz</strong></p>
<p>Bu vaka çalışması, AWS CDK kullanarak üretim API versiyonlama sisteminin implementasyonunu inceler. Üç başarısız yaklaşım ve bir çalışan çözümün analizi ile, müşteri uyumluluğunu korurken API evolüsyonunu yönetmek için pratik pattern'leri keşfediyoruz. Nihayetinde geliştirdiğimiz yaklaşım minimal operasyonel overhead ile birden fazla API versiyonunu yönetmek için sağlam pattern'ler sunar.</p>
<p><strong>Problem Tanımı</strong></p>
<p>API evolüsyonu kaçınılmaz bir çelişki yaratır: mevcut müşteriler için geriye dönük uyumluluğu korurken API'yi geliştirme ve değiştirme ihtiyacı. Bu zorluk, müşterilerin değişen güncelleme yetenekleri ve deployment pencerelerine sahip olduğu kurumsal ortamlarda yoğunlaşır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mobil, Web ve API için Kimlik Doğrulama Sağlayıcıları: Doğru Çözümü Seçmek için Eksiksiz Kılavuz]]></title>
            <description><![CDATA[Auth0, Firebase Auth, Supabase Auth, AWS Cognito ve özel çözümlerin gerçek dünya karşılaştırması. Her birini ne zaman kullanmalı, maliyet analizi ve bana her şeyi öğreten hata ayıklama kabusları.]]></description>
            <link>https://sph.sh/tr/posts/auth-providers-mobile-web-api-comparison/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/auth-providers-mobile-web-api-comparison/</guid>
            <category><![CDATA[auth0]]></category>
            <category><![CDATA[cognito]]></category>
            <category><![CDATA[firebase]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[authentication]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Kimlik doğrulama sağlayıcısı seçimi, geliştirme hızını, güvenlik duruşunu ve operasyonel maliyetleri önemli ölçüde etkiler. Bu analiz, beş kimlik doğrulama yaklaşımını sistematik bir çerçeve aracılığıyla inceleyerek, çeşitli organizasyonel bağlamlarda üretim dağıtımlarına dayalı nicel maliyet karşılaştırmaları, teknik tavizler ve uygulama rehberliği sağlar.</p>
<p><strong>Bağlam ve Problem Alanı</strong></p>
<p>Bir projede parçalanmış bir kimlik doğrulama manzarası devraldım: web uygulamaları için Auth0, mobil istemciler için Firebase Auth, API'ler için özel JWT ve üç ayrı kullanıcı veritabanı. Kullanıcılar web üzerinden kayıt olduğunda ancak mobil üzerinden hesaplarına erişemediğinde ("kullanıcı bulunamadı" hataları), konsolidasyon zorunluluğu netleşti.</p>...</p><p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Micro Frontend'lerde Multi-Audience Auth0: Token Yönetimi Kalıpları ve Implementasyon]]></title>
            <description><![CDATA[Micro frontend'lerde Auth0 multi-audience authentication gerçek dünya implementasyonu, token yönetim stratejileri ve React Native'de WebView tabanlı micro frontend'lerle silent authentication]]></description>
            <link>https://sph.sh/tr/posts/auth0-multi-audience-micro-frontends-token-management/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/auth0-multi-audience-micro-frontends-token-management/</guid>
            <category><![CDATA[auth0]]></category>
            <category><![CDATA[jwt]]></category>
            <category><![CDATA[oauth]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Auth0 multi-audience authentication'ı dağıtık micro frontend'ler arasında uygulamak, özellikle hem web hem de React Native WebView ortamlarını desteklerken benzersiz zorluklar sunar. Bu vaka çalışması, tek login akışında birden fazla API audience'ını destekleyen birleşik token yönetim sistemi için etkili kalıpları belgeler.</p>
<p><strong>Ele Alınan Temel Zorluklar:</strong>
- Micro frontend'ler arasında cross-domain token paylaşımı
- Auth0 ile multi-audience JWT token yönetimi
- React Native WebView'larda silent authentication
- Dağıtık uygulamalar arasında token refresh koordinasyonu</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[React Native'de Auth0 ve Biyometrik Kimlik Doğrulama ile Gerçek Dünya Session Yönetimi]]></title>
            <description><![CDATA[Production React Native uygulamalarında Auth0, biyometrik kimlik doğrulama ve düzgün token yaşam döngüsü yönetimi ile güvenli oturum yönetimi uygulamak için adım adım kılavuz]]></description>
            <link>https://sph.sh/tr/posts/auth0-react-native-session-management-biometrics/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/auth0-react-native-session-management-biometrics/</guid>
            <category><![CDATA[auth0]]></category>
            <category><![CDATA[biometrics]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Özet</strong></p>
<p>Mobil uygulamalarda oturum yönetimi, web geliştiricilerinin nadiren karşılaştığı benzersiz zorluklar sunar. Mobil uygulamalar, kusursuz bir kullanıcı deneyimi sağlarken arka plan durumlarını, ağ kesintilerini, biyometrik kimlik doğrulamayı ve platforma özgü güvenlik kısıtlamalarını yönetmelidir. Bu kılavuz, Auth0 ve biyometrik kimlik doğrulama kullanarak React Native uygulamalarında güçlü oturum yönetimi uygulamak için etkili bir yaklaşım sunar.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Link Kısaltıcı Bölüm 1: Proje Kurulumu & Temel Altyapı]]></title>
            <description><![CDATA[AWS CDK, DynamoDB ve Lambda ile production-grade link kısaltıcı kurulumu. Gerçek mimari kararlar, ilk kurulum ve büyük ölçekte URL kısaltıcıları inşa etmenin dersleri.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-link-shortener-part-1/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-link-shortener-part-1/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[url-shortener]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Seri Navigasyonu</strong></p>
<p>Bu, production-grade link kısaltıcı oluşturma üzerine 5 bölümlük bir serinin <strong>1. Bölümü</strong>:</p>
<p>1. <strong>Bölüm 1: Proje Kurulumu & Temel Altyapı</strong> (Buradasınız)
2. Bölüm 2: Temel İşlevsellik & API Geliştirme
3. Bölüm 3: Gelişmiş Özellikler & Güvenlik
4. Bölüm 4: Production Deployment & Optimizasyon
5. Bölüm 5: Ölçeklendirme & Bakım</p>
<p>---</p>
<p><strong>Giriş: Gerçek Dünya Ölçeği için İnşa Etmek</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS CDK Link Kısaltıcı Bölüm 2: Temel Fonksiyonlar & API Geliştirme]]></title>
            <description><![CDATA[Yönlendirme motoru, analytics toplama ve API Gateway konfigürasyonu. Günlük milyonlarca yönlendirmeyi işlemenin gerçek performans optimizasyonları ve debugging stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/aws-cdk-link-shortener-part-2/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-cdk-link-shortener-part-2/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[redirect]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[debugging]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>AWS CDK Link Kısaltıcı Bölüm 2: Temel Fonksiyonlar & API Geliştirme</strong></p>
<p>Bir link kısaltıcı aslında bir redirect motorudur: kısa kod araması ve HTTP 301 yanıtı, kritik gecikme bütçesindeki tek yoldur ve her ikisinin de yüksek eşzamanlılıkta bile kullanıcının anlık algıladığı eşiğin (yaklaşık 200ms) altında kalması gerekir. Bu sıcak yolun etrafındaki iş mantığı (analitik, hız sınırlama, link süresinin dolması, özel slug'lar) redirect'i engellememelidir; redirect handler'a eklenen her özellik, edge'de doğrudan gecikme olarak ücretlendirilir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Fargate 101: Container'larınızın Bakıcıya İhtiyacı Olmadığında]]></title>
            <description><![CDATA[Çok fazla EC2 instance yöneten birinden AWS Fargate'e pratik bir rehber. Serverless container'ların ne zaman mantıklı olduğunu öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/aws-fargate-101-serverless-containers/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-fargate-101-serverless-containers/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[fargate]]></category>
            <category><![CDATA[ecs]]></category>
            <category><![CDATA[containers]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[docker]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>İlk kez EC2 instance'larını yönetmekle feature geliştirmekten daha fazla zaman harcadığınızı fark ettiğiniz anı hatırlıyor musunuz? Evet, ben de. Sabah 3'tü, production sunucusuna SSH ile bağlanmış disk alanının neden %98 olduğunu anlamaya çalışıyordum ve aniden çok pahalı bir Linux kutusu bakıcısı olduğumu fark ettim. Bu yazıda Fargate'in ne zaman mantıklı olduğunu, ilk deployment'ı nasıl yapacağınızı ve EC2 Launch Type ile farkları ele alıyorum.</p>
<p>İşte AWS Fargate'in gerçekten çekici görünmeye başladığı an buydu. Aşağıda ilk task definition'ınızı nasıl oluşturacağınızı, network modunu ve EC2 vs Fargate karar kriterlerini adım adım gösteriyorum.</p>
<p><strong>Fargate Aslında Nedir (Pazarlama Lafları Olmadan)</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Fargate 102: Kimsenin Bahsetmediği Pattern'ler]]></title>
            <description><![CDATA[Production workload'ları çalıştırırken öğrenilen gelişmiş Fargate pattern'leri. Maliyet optimizasyonundan stateful container'lara, dokümantasyonun size söylemeyecekleri.]]></description>
            <link>https://sph.sh/tr/posts/aws-fargate-102-advanced-patterns/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-fargate-102-advanced-patterns/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[fargate]]></category>
            <category><![CDATA[ecs]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[efs]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[patterns]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Fargate 101'de temelleri ele aldık. Bu yazıda, production workload'ları çalıştırırken ortaya çıkan gelişmiş pattern'lerden bahsedelim. Bilirsiniz, troubleshooting sırasında sistemin gerçek mekaniklerini anladığınız o anlar var. Maliyet optimizasyonu, stateful container'lar, monitoring ve güvenli deployment'larla devam ediyoruz.</p>
<p><strong>Maliyet Optimizasyonu: İflas Etmeme Sanatı</strong></p>
<p>Fargate'in EC2'den daha pahalı olduğunu söylemiştik. İşte maliyetleri azaltmanın etkili yolları var: Spot, right-sizing, ARM ve Savings Plans. AWS faturaları beklenmedik şekilde artmaya başladığında, sistematik optimizasyon kritik hale gelir.</p>
<p><strong>Fargate Spot: Kimsenin Kullanmadığı %70 İndirim</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Fargate 103: Size Saatler Kazandıracak Production Dersleri]]></title>
            <description><![CDATA[Fargate'i ölçekte çalıştırırken karşılaşılan production olayları. Memory leak'ler, ENI limitleri, subnet arızaları ve işe yarayan debug teknikleri.]]></description>
            <link>https://sph.sh/tr/posts/aws-fargate-103-production-lessons/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-fargate-103-production-lessons/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[fargate]]></category>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[incident-response]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[monitoring]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Fargate kurulumunuz konusunda kendinize güvendiğiniz, monitoring dashboard'larında her şeyin yeşil göründüğü, sonra da hiç düşünmediğiniz kör noktalar keşfettiğiniz anları bilir misiniz? Production gerçeğine hoş geldiniz.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Fargate 104: CDK, Terraform ve SAM ile Deploy]]></title>
            <description><![CDATA[Fargate'i farklı IaC araçlarıyla nasıl etkin şekilde deploy edersiniz. Pratik pattern'ler, yaygın tuzaklar ve her yaklaşım için en iyi çalışan yöntemler.]]></description>
            <link>https://sph.sh/tr/posts/aws-fargate-104-iac-deep-dive/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-fargate-104-iac-deep-dive/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[fargate]]></category>
            <category><![CDATA[cdk]]></category>
            <category><![CDATA[terraform]]></category>
            <category><![CDATA[sam]]></category>
            <category><![CDATA[iac]]></category>
            <category><![CDATA[infrastructure-as-code]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Fargate hakkında üç yazıdan sonra (101, 102, 103), "güzel de, bunları AWS Console'da tıklayarak değil de nasıl deploy edeceğim, 2015'te değiliz" diye düşünüyor olabilirsiniz.</p>
<p>Fargate servislerini deploy etmek, ekibiniz ve gereksinimleriniz için doğru Infrastructure as Code (IaC) aracını seçmeyi gerektirir. Her yaklaşım karmaşıklık, bakım yapılabilirlik ve geliştirici deneyiminde farklı trade-off'lar sunar.</p>
<p><strong>Fargate için IaC Araç Karşılaştırması</strong></p>
<p><strong>CloudFormation - Temel</strong>
[code block]</p>
<p><strong>Terraform - Endüstri Standardı</strong>
[code block]</p>
<p><strong>CDK - Programlama Yaklaşımı</strong>
[code block]</p>
<p>Her yaklaşımda neyin iyi çalıştığını keşfedelim.</p>
<p><strong>CDK ile Fargate Deploy Etmek</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda Cold Start Optimizasyonu: Production Dersleri]]></title>
            <description><![CDATA[Production ortamlarından öğrenilen AWS Lambda cold start optimizasyon stratejileri. Runtime seçimi, provisioned concurrency ve pratik optimizasyon teknikleri.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-guide-101-cold-start-optimization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-guide-101-cold-start-optimization/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[cold-start]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[provisioned-concurrency]]></category>
            <category><![CDATA[war-stories]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Cold start'lar sadece teorik bir problem değil - kullanıcı deneyimi ile hayal kırıklığı arasındaki fark. Özellikle yoğun trafik anlarında bu gecikmeler kabul edilemez hale gelebilir. Production ortamlarında Lambda function'ları optimize etmekten öğrenilen dersleri paylaşalım.</p>
<p><strong>Cold Start Etkisinin Gerçekliği</strong></p>
<p>Üç aylık business review toplantımız sırasında, ödeme işleme Lambda'mız timeout vermeye başladı. Sorun? 100'den 10.000 eş zamanlı kullanıcıya çıkmıştık ve cold start'lar ödeme işlemlerine 2-3 saniye ekliyordu. Kritik bir business anında veremeyeceğiniz türden bir izlenim.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda Memory Allocation ve Performance Tuning: Kapsamlı Rehber]]></title>
            <description><![CDATA[Gerçek production örnekleriyle AWS Lambda performance tuning'de ustalaş. Pratik deneyimlerle memory optimizasyon stratejileri, CPU allocation prensipleri, benchmarking teknikleri ve maliyet analizi framework'leri öğren.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-guide-102-memory-performance-tuning/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-guide-102-memory-performance-tuning/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[memory-optimization]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[benchmarking]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Serinin ilk bölümünde cold start'ları optimize ettikten sonra, sıradaki zorluk Lambda function'larınızın warm olduklarında verimli çalışmasını sağlamak. Memory allocation, hem performansı hem de maliyeti hemen fark edilmeyen şekillerde etkileyen en önemli konfigürasyon kararıdır.</p>
<p>Potansiyel yatırımcılara kritik bir ürün demosu sırasında ana API'mız timeout hataları vermeye başladı. Suçlu? Kullanıcı analitiği işleyen masum görünen bir function, ayrılan memory'nin %90'ını tüketiyor ve tüm sistem boyunca timeout'lara yol açan garbage collection duraksamalarına neden oluyordu.</p>
<p>Bu olay bana Lambda performansının sadece doğru memory boyutunu seçmekle ilgili olmadığını - memory, CPU ve maliyet optimizasyonu arasındaki karmaşık ilişkiyi anlamayla ilgili olduğunu öğretti.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda Production Monitoring ve Debugging: Savaşta Test Edilmiş Stratejiler]]></title>
            <description><![CDATA[Gerçek dünya incident response deneyimine dayalı AWS Lambda için kapsamlı production monitoring ve debugging stratejileri. CloudWatch metrikleri, X-Ray tracing, structured logging ve etkili alerting pattern'leri.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-guide-103-production-monitoring-debugging/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-guide-103-production-monitoring-debugging/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[cloudwatch]]></category>
            <category><![CDATA[x-ray]]></category>
            <category><![CDATA[observability]]></category>
            <category><![CDATA[war-stories]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Lambda function'larını ölçekte çalıştırmak bana en önemli dersi öğretti: gerçek test, function'larınızın development'da çalışıp çalışmaması değil - production'da fail olduklarında debug edebilmek. En büyük ürün lansmanımız sırasında, tüm engineering ekibinin izlediği bir anda, bir Lambda sessizce fail olmaya başladı. CloudWatch alert'i yok, açık hata yok, sadece kafası karışmış müşteriler ve hızla düşen conversion rate.</p>
<p>Bu olay bana Lambda monitoring'in sadece temel CloudWatch metrikleri kurmakla olmadığını öğretti - iş problemleri haline gelmeden önce sorunları debug etmenizi sağlayan kapsamlı bir observability stratejisi inşa etmekle ilgili.</p>
<p><strong>Lambda Observability'nin Üç Direği</strong></p>
<p><strong>1. Metrikler: Erken Uyarı Sistemi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda Advanced Patterns ve Maliyet Optimizasyonu: Kapsamlı Production Rehberi]]></title>
            <description><![CDATA[Lambda Layers, VPC konfigürasyonu, cross-account execution ve kapsamlı maliyet optimizasyon stratejileri dahil advanced AWS Lambda pattern'lerinde ustalaşın. Production Lambda kullanımından gerçek dünya migration deneyimleri ve mimari kararlar.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-guide-104-advanced-patterns-cost-optimization/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-guide-104-advanced-patterns-cost-optimization/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[lambda-layers]]></category>
            <category><![CDATA[vpc]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[migration]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[war-stories]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Startup MVP'lerinden milyonlarca request işleyen enterprise ölçekli sistemlere kadar Lambda function'ları production'da çalıştırmak şunu öğretti: Lambda'nın gerçek değeri herkesin konuştuğu basit kullanım durumlarında değil. Karmaşık mimari zorlukları çözüyorken, büyük ölçekte maliyetleri optimize ederken ve mevcut sistemleri migrate ederken ortaya çıkan advanced pattern'lerde.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Middy Yeterli Olmadığında - Özel Lambda Middleware Framework'leri Geliştirme]]></title>
            <description><![CDATA[Bizi Middy'nin sınırlarının ötesine iten production zorluklarını ve performance ile scale için optimize edilmiş özel middleware framework'ümüzü nasıl geliştirdiğimizi keşfedin]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-middleware-middy-custom-framework/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-middleware-middy-custom-framework/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[middleware]]></category>
            <category><![CDATA[custom-framework]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[architecture-patterns]]></category>
            <category><![CDATA[migration]]></category>
            <category><![CDATA[production-lessons]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Middy Yeterli Olmadığında - Özel Lambda Middleware Framework'leri Geliştirme</strong></p>
<p>Middy, küçük bir Lambda filosunun tipik middleware ihtiyaçlarını karşılar ama jenerik middleware-zinciri modelinin dengeleri, bir servis ortak bir middleware yığınını paylaşan yaklaşık 50 fonksiyona ulaştığında ölçülebilir hale gelir: çağrı başına ek yük, middleware zincirinin cold-start maliyeti ve ortak bir wrapper'ın başka türlü bağlantısız fonksiyonlar arasında yarattığı kenetlenme. Bu ölçekte soru şuna döner: Middy'nin soyutlamaları üzerine katmanlamaya devam mı edilir, AWS Lambda PowerTools ile değiştirilir mi, yoksa yalnızca filonun gerçekten kullandığı hook'lar için ödeme yapan projeye özel bir middleware framework'ü mü yazılır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda Middleware ile Middy - Temiz Kod ve En İyi Uygulamalar]]></title>
            <description><![CDATA[Middy'nin middleware kalıplarıyla Lambda geliştirmesini nasıl dönüştürdüğünü, tekrarlayan şablonlardan temiz, sürdürülebilir serverless fonksiyonlara geçişi keşfedin]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-middleware-middy-introduction/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-middleware-middy-introduction/</guid>
            <category><![CDATA[aws-lambda]]></category>
            <category><![CDATA[middy]]></category>
            <category><![CDATA[middleware]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[architecture-patterns]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>AWS Lambda Middleware ile Middy - Temiz Kod ve En İyi Uygulamalar</strong></p>
<p>Bir team'deki Lambda fonksiyonlarını incelediğinizde ortak bir pattern ortaya çıkar: her fonksiyon aynı 40 satır validation, error handling ve CORS setup'ı ile başlar. Bu tekrarlayalı boilerplate bir maintenance challenge haline gelir.</p>
<p>Çoklu Lambda fonksiyonlarını yönetmek genellikle bu challenge'i içerir. Her endpoint authentication, input validation, proper error responses ve security headers gerektirir. Bu boilerplate'i tekrar tekrar yazmak sadece sıkıcı değil - aynı zamanda bir maintenance challenge'i ve potansiyel bug'ların kaynağı haline gelir.</p>
<p>İşte o zaman Middy'yi keşfettik ve açıkçası, Lambda fonksiyonlarını yazma şeklimizi tamamen değiştirdi.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda Sub-10ms Optimizasyonu: Kapsamlı Rehber]]></title>
            <description><![CDATA[Runtime seçimi, veritabanı optimizasyonu, bundle boyutu azaltma ve caching stratejileri ile AWS Lambda'da sub-10ms response süreleri elde edin. Gerçek benchmark'lar ve production deneyimleri dahil.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-millisecond-optimization-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-millisecond-optimization-guide/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[go]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[redis]]></category>
            <category><![CDATA[war-stories]]></category>
            <category><![CDATA[benchmarks]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Geçen çeyrek, trading platformumuzun Lambda fonksiyonları ortalama 45ms response süresi veriyordu - yüksek frekanslı trading için her milisaniyen para demek olan bir ortamda tamamen kabul edilemez bir durum. İş gereksinimi açıktı: <strong>sub-10ms response, istisna yok</strong>.</p>
<p>Runtime migration'ları, veritabanı yeniden yazımları ve gece debugging session'ları içeren üç aylık sistematik optimizasyon sürecinden sonra, tutarlı 3-5ms response sürelerine ulaşıldı. Bu deneyim AWS Lambda'yı performans sınırlarına iterken neler ortaya çıkardığını gösterdi. Her katmanda - runtime, veritabanı, bundle, caching - küçük iyileştirmeler toplamda büyük kazanımlar sağladı.</p>
<p><strong>Problem: Milisaniyeler Para Demek Olduğunda</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Lambda + S3 Signed URLs: Büyük Dosya Yükleme için Pratik Çözüm]]></title>
            <description><![CDATA[Lambda proxy yerine S3 signed URL'leri kullanarak büyük dosya yüklemelerini işlemeye yönelik pratik bir yaklaşım. CDK implementasyonu, güvenlik hususları ve production deneyimlerinden çıkarılan dersler dahil.]]></description>
            <link>https://sph.sh/tr/posts/aws-lambda-s3-signed-urls-large-file-uploads/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-lambda-s3-signed-urls-large-file-uploads/</guid>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Video hosting platformumuz Lambda'nın 15 dakikalık limit'i yüzünden 2GB+ upload'larda timeout yaşıyordu. S3 signed URL'lere geçince 10GB+ dosyaları saniyeler içinde işliyoruz; maliyette %70 tasarruf, %99.9 başarı oranı. Presigned URL Lambda'yı URL üretimiyle sınırlar; upload client'tan doğrudan S3'e gider.</p>
<p><strong>Lambda Maliyet Kabusu</strong></p>
<p>Eski flow'umuz: Her upload için Lambda 15 dakikaya kadar çalışıyor, 2-3GB memory kullanıyordu:</p>
<p>[code block]</p>
<p>Rakamlar: Upload başına 8-12 dk, 2-3GB memory, 10K upload için 30K$+ aylık maliyet, %15 başarısızlık.</p>
<p><strong>Oyun Değiştiren Mimari</strong></p>
<p>Çözüm: Lambda'yı upload pipeline'ından çıkarmak.</p>
<p>[code block]</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[AWS Serverless TypeScript Projelerini Yapılandırma: Eksiksiz Rehber]]></title>
            <description><![CDATA[AWS Lambda, API Gateway ve TypeScript ile production-ready serverless projeleri oluşturmak için en iyi uygulamalar. Gerçek dünya örnekleri, maliyet optimizasyonu ve performans ipuçları.]]></description>
            <link>https://sph.sh/tr/posts/aws-serverless-typescript-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/aws-serverless-typescript-guide/</guid>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[cost-optimization]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>EC2 instance'ları üzerinde geleneksel bir Express.js API çalıştırıyordum. Sabit maliyetler, öngörülebilir ölçeklendirme, 99.9% uptime. Hayat güzeldi. Sonra en büyük müşterimiz ayda bir kez, 10 dakika içinde 50.000 webhook işlemesi gerektiren bir özellik istedi.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Yıldız Geliştiriciniz İstifa Ettiğinde: Mühendislik Ekiplerinde Bus Factor Yönetimi]]></title>
            <description><![CDATA[Gerçek dünya mühendislik deneyimlerinden yola çıkarak bilgi dağıtımı, dokümantasyon stratejileri ve sistematik risk yönetimi ile ekibinizi tek hata noktalarından nasıl koruyacağınızı öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/bus-factor-knowledge-management-engineering-teams/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/bus-factor-knowledge-management-engineering-teams/</guid>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[knowledge-sharing]]></category>
            <category><![CDATA[risk-management]]></category>
            <category><![CDATA[engineering-culture]]></category>
            <category><![CDATA[war-stories]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[mentorship]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Şöyle bir senaryo düşünün: Büyük bir ürün lansmanının tam ortasındasınız, her şey yolunda gidiyor ve sonra tüm ödeme sistemini tasarlayan baş mühendisisiniz iki haftalık istifasını veriyor. Rekabet yasağı nedeniyle hemen işten ayrılıyor ve bir rakibe geçiyor.</p>
<p>Aniden fark ediyorsunuz ki paranın uygulamanızda nasıl aktığı, dolandırıcılık tespitinin nasıl çalıştığı ve o bir veritabanı sorgusunun neden tam olarak 47 saniyede tamamlanması gerektiği bilgisi tamamen bir kişinin kafasında yaşıyor. Bus factor problemiyle tanışın.</p>
<p><strong>Bus Factor Gerçeği</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Circuit Breaker Pattern: Zincirleme Hataları Önleyen Dayanıklı Mikroservisler]]></title>
            <description><![CDATA[Dağıtık sistemlerde zincirleme hataları önlemek için gerçek dünyadan Circuit Breaker pattern implementasyonu ve kanıtlanmış stratejiler]]></description>
            <link>https://sph.sh/tr/posts/circuit-breaker-pattern-resilient-microservices/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/circuit-breaker-pattern-resilient-microservices/</guid>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[patterns]]></category>
            <category><![CDATA[resilience]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bir payment servisi yavaş fail ettiğinde tüm platformu etkileyebilir. Her request timeout olmak için 30 saniye beklediğinde, 12 farklı serviste trafik sıkışması yaratır. Bu klasik zincirleme hata pattern'idir. Circuit Breaker pattern ile bu problemi nasıl çözdüğümüzü ve bu tür incident'ları çözerken resilience hakkında öğrendiklerimizi paylaşacağım.</p>
<p><strong>Problem: Yavaş Olmak Ölü Olmaktan Kötü</strong></p>
<p>Şunu hayal edin: Payment provider'ınızın API'si yavaş cevap vermeye başlıyor. Down değil, sadece normal 200ms yerine request başına 20-30 saniye alıyor. Servisiniz sadakatle bekliyor. Bu arada gelen request'ler birikiyor. Thread pool'lar tükeniyor. Memory consumption patlıyor. Sonunda sağlıklı servisiniz sağlıksız hale geliyor ve enfeksiyon upstream'e yayılıyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CQRS ve Serverless: DynamoDB Maliyetlerini 70% Azaltıp Performansı Nasıl Artırdım]]></title>
            <description><![CDATA[AWS Lambda, EventBridge ve DynamoDB ile gerçek dünyada CQRS uygulaması. Event sourcing, eventual consistency ve production'daki dağıtık sistemleri debug etme deneyimlerimden öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/cqrs-pattern-serverless-nodejs/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/cqrs-pattern-serverless-nodejs/</guid>
            <category><![CDATA[cqrs]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[event-sourcing]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[nodejs]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>CQRS Nedir ve Neden Önemsemelisin?</strong></p>
<p>CQRS (Command Query Responsibility Segregation), yazma işlemlerini (commands) okuma işlemlerinden (queries) ayıran mimari bir pattern'dir. Hem okuma hem yazma için aynı modeli kullanmak yerine, her bir tarafı kendi amacı için optimize edersin. Bu yazıda AWS Lambda, EventBridge ve DynamoDB ile gerçek production uygulamasından öğrendiklerimizi paylaşıyorum.</p>
<p><strong>Temel Prensip</strong></p>
<p>Geleneksel mimarilerde, genellikle hem okuma hem yazma için aynı data modelini kullanırsın:</p>
<p>[code block]</p>
<p>CQRS ile bunu iki optimize edilmiş modele bölersin:</p>
<p>[code block]</p>
<p><strong>CQRS Neden Gerçek Problemleri Çözüyor</strong></p>
<p>CQRS sadece teorik değil – spesifik, ölçülebilir problemleri ele alıyor:</p...</p><p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Veritabanı Seçim Rehberi: Klasikten Edge'e - Kapsamlı Mühendislik Perspektifi]]></title>
            <description><![CDATA[Projeniz için doğru veritabanını seçmek için kapsamlı rehber - SQL, NoSQL, NewSQL ve edge çözümlerini gerçek dünya implementasyon hikayeleri ve performans ölçümleri ile kapsıyor.]]></description>
            <link>https://sph.sh/tr/posts/database-selection-comprehensive-guide/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/database-selection-comprehensive-guide/</guid>
            <category><![CDATA[database]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[mysql]]></category>
            <category><![CDATA[mongodb]]></category>
            <category><![CDATA[redis]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[scalability]]></category>
            <category><![CDATA[production]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Veritabanı seçim hataları maliyetli olabilir. 1.000 ürünle mükemmel çalışan basit bir ürün kataloğu, 100.000 üründe aniden durma noktasına gelebilir. MongoDB koleksiyonları düzgün indekslenmediğinde ve sorgular tüm koleksiyonları taradığında, "web-scale" çözümü veritabanı temellerinde pahalı bir derse dönüşür.</p>
<p>Bu durum nadir değil. Kötü veritabanı seçimleri, çoğu mühendislerin fark ettiğinden daha fazla projeyi raydan çıkarıyor. Veritabanı uygulamanızın temeli - yanlış seçerseniz, üzerine inşa edilen her şey çatlamaya başlar.</p>
<p><strong>Veritabanı Seçimi Neden Düşündüğünüzden Daha Önemli</strong></p>
<p><strong>Yanlış Seçimlerin Gerçek Maliyeti</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dead Letter Queue Stratejileri: Dayanıklı Olay-Güdümlü Sistemler için Production-Ready Kalıplar]]></title>
            <description><![CDATA[DLQ stratejileri, monitoring ve recovery kalıpları için kapsamlı rehber. Circuit breaker, exponential backoff, ML-tabanlı recovery ve kaçınılması gereken anti-pattern'lar hakkında gerçek production deneyimleri.]]></description>
            <link>https://sph.sh/tr/posts/dead-letter-queue-production-strategies/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/dead-letter-queue-production-strategies/</guid>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[circuit-breaker]]></category>
            <category><![CDATA[dead-letter-queue]]></category>
            <category><![CDATA[dlq]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[gcp]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[recovery]]></category>
            <category><![CDATA[reliability]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Dead Letter Queue, bir tüketicinin retry bütçesini tükettikten sonra işleyemediği mesajları tutan kuyruktur. DLQ olmadan bir poison pill ya birincil kuyruğu baştan (head-of-line) tıkar ya da başarısız handler ile birlikte sessizce kaybolur; her iki sonuçta da hem event hem de bir şeylerin yanlış gittiğine dair operasyonel sinyal kaybedilir. DLQ, "işlenecek mesajlar" ile "insan ya da tool müdahalesi gerektiren mesajlar" arasındaki görev ayrımıdır ve yalnızca etrafındaki retry politikası, uyarı ve replay araçları birlikte tasarlandığında işe yarar.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Altyapı Olarak Dokümantasyon: Mühendislik Takımlarında Bilgiyi Ölçeklendirme]]></title>
            <description><![CDATA[Dokümantasyon borcu, teknik borçtan daha hızlı öldürür organizasyonları. Dokümantasyonu kritik altyapı olarak ele alma ve mühendislik takımlarında bilgiyi ölçeklendirme rehberi.]]></description>
            <link>https://sph.sh/tr/posts/documentation-as-infrastructure-scaling-knowledge/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/documentation-as-infrastructure-scaling-knowledge/</guid>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[rfc]]></category>
            <category><![CDATA[adr]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[knowledge-management]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[organizational-design]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Eksik Dokümantasyon Beklenenden Pahalıya Malolduğunda</strong></p>
<p>Kritik bir sistemi anlayan kişinin az önce istifa ettiğini fark ettiğindeki o batma hissini biliyor musun? Orada bulundum ve açıkçası bu, başkasının tecrübesinden öğrenmeyi umduğun derslerden biri.</p>
<p>Birkaç yıl önce, takımımız pahalıya mal olan bir öğrenme anıyla karşılaştı. Üç senior mühendis altı ay içinde ayrıldı - normal kariyer gelişimi, dramatik bir şey değil. Tüm "doğru" şeyleri yaptık: devir-teslim, bilgi transfer oturumları, dokümantasyon sprintleri. Ama ödeme sistemimiz en büyük satış hafta sonumuzda sorun yaşadığında, dokümante edilmiş prosedürlerle derin sistem anlayışı arasındaki boşluğu keşfettik.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Olay Güdümlü Mimari Araçları: Kafka, SQS, EventBridge ve Cloud Alternatifleri Üzerine Kapsamlı Rehber]]></title>
            <description><![CDATA[Olay güdümlü sistem araçları, mesaj teslimat kalıpları, DLQ stratejileri ve cloud provider eşlenikleri üzerine derinlemesine inceleme. AWS, Azure, GCP ve edge deployment'lar hakkında production deneyimleri.]]></description>
            <link>https://sph.sh/tr/posts/event-driven-systems-tools-comparison/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/event-driven-systems-tools-comparison/</guid>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[dlq]]></category>
            <category><![CDATA[edge-computing]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[gcp]]></category>
            <category><![CDATA[kafka]]></category>
            <category><![CDATA[rabbitmq]]></category>
            <category><![CDATA[sns]]></category>
            <category><![CDATA[sqs]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Olay güdümlü sistemlerde doğru aracı seçmek hype'tan çok trade-off'ları anlamakla ilgili. Bu yazıda mesaj kalıplarından başlayıp AWS, Azure ve GCP eşleniklerine, DLQ stratejilerine ve edge deployment'a geçiyoruz.</p>
<p><strong>Mesaj Kalıpları: Temel</strong></p>
<p>Her pattern farklı araçlar ve trade-off'lar getirir:</p>
<p><strong>1'e 1 (Kuyruk Kalıbı)</strong>
- Mesaj tek consumer tarafından tüketilir (FIFO ile tam olarak bir kez)
- <strong>Kullanım:</strong> Task işleme, iş dağıtımı, async job'lar
- <strong>Araçlar:</strong> SQS, Azure Service Bus Queues, Cloud Tasks</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Erken Web Dönemi: Script'lerin Basit Olduğu Zamanlar]]></title>
            <description><![CDATA[Webpack var olmadan önce, dosyaları Grunt ile birleştiriyorduk. React'tan önce, jQuery spagettisiyle boğuşuyorduk. Frontend tooling'in manuel dosya yönetiminden sofistike build sistemlerine nasıl evrildiği burada.]]></description>
            <link>https://sph.sh/tr/posts/frontend-tooling-evolution-101-the-early-web-era/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/frontend-tooling-evolution-101-the-early-web-era/</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[jquery]]></category>
            <category><![CDATA[grunt]]></category>
            <category><![CDATA[bower]]></category>
            <category><![CDATA[frontend-history]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[web-development]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Frontend tooling, birleştir-ve-minify problemi olarak başladı: elle yönetilen script sırası, deploy için shell script'leri ve manuel sürecin aşılmasıyla gelen ilk task runner dalgası (Make, sonra Grunt, sonra Gulp). Bu erken tooling üzerindeki baskı build hızından değil, bağımlılık sıralaması ve tarayıcılar arası uyumluluktan geliyordu: yüklenen bir site ile sessiz JavaScript hataları üreten bir site arasındaki fark.</p>
<p>Bu yazı, frontend tooling'in evrimini inceleyen dört parçalık serinin ilkidir. Elle yazılmış script'lerin ve tarayıcıya özel hack'lerin build öncesi dönemini (1995-2006), bir uyumluluk katmanı olarak jQuery'nin ortaya çıkışını ve deterministik bir build boru hattı fikrini getiren task-runner kuşağını (Grunt, Gulp) ele alır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Task Runner'lar ve Modern Bundling'in Doğuşu]]></title>
            <description><![CDATA[Grunt'ın build automation'ı nasıl dönüştürdüğü ve Webpack'in dependency'ler hakkında düşünme şeklimizi nasıl devrim yaptığı. Frontend development'ı sonsuza dek değiştiren manuel processlerden sofistike bundling'e acı verici geçiş.]]></description>
            <link>https://sph.sh/tr/posts/frontend-tooling-evolution-102-task-runners-and-bundlers/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/frontend-tooling-evolution-102-task-runners-and-bundlers/</guid>
            <category><![CDATA[grunt]]></category>
            <category><![CDATA[gulp]]></category>
            <category><![CDATA[webpack]]></category>
            <category><![CDATA[browserify]]></category>
            <category><![CDATA[commonjs]]></category>
            <category><![CDATA[amd]]></category>
            <category><![CDATA[build-tools]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>2012'ye kadar, manuel build processlerinin problemleri dayanılmaz hale gelmişti. Takımlar, bireysel developer'ların yazdığı ve başka kimsenin anlamadığı 200 satırlık Bash dosyalarından oluşan "deployment script'leri" ile uğraşıyorlardı. Kilit developer'lar şirketlerden ayrıldığında, takımlar herhangi bir şeyi değiştirmekten korkuyorlardı. Build'ler belirli günlerde gizemli bir şekilde fail oluyordu, bu da "salı günleri deploy etmeyin" gibi resmi olmayan kurallara yol açıyordu.</p>
<p>Grunt'ın ortaya çıktığı ortam buydu ve devrimci hissettirdi. İlk kez, karmaşık projeleri handle edecek kadar configure edilebilirken sıkıcı, hata eğilimli işleri otomatize edebilen bir tool'umuz vardı. Ama bu serideki her tool gibi, Grunt bir dizi problemi çözerken tamamen yeni olanları ortaya çıkardı.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Performans Devrimi: Rust, Go ve Hız]]></title>
            <description><![CDATA[esbuild, SWC ve Vite gibi native tool'ların webpack'in performans problemlerini nasıl çözdüğü. 10 saniyelik build'lerden 100ms'ye: developer'ların build zamanları hakkında düşünmeyi bıraktıran geçiş.]]></description>
            <link>https://sph.sh/tr/posts/frontend-tooling-evolution-103-performance-revolution/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/frontend-tooling-evolution-103-performance-revolution/</guid>
            <category><![CDATA[esbuild]]></category>
            <category><![CDATA[swc]]></category>
            <category><![CDATA[vite]]></category>
            <category><![CDATA[rust]]></category>
            <category><![CDATA[go]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[webpack]]></category>
            <category><![CDATA[parcel]]></category>
            <category><![CDATA[build-tools]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>2017'ye kadar, webpack'in hakimiyeti tamamdı, ama developer'ların build zamanlarından duydukları hayal kırıklığı da öyleydi. İlk build'in 45 saniye sürdüğü ve hot reload'ların 3-5 saniye aldığı bir React uygulamasında yaygın olarak yaşanıyordu. webpack'in yavaşlığı yüzünden "flow state"lerini kaybettiklerinden şikayet eden ekip toplantılarında sıkça dile getiriliyordu.</p>
<p>Zorluklar takımlar büyüdükçe arttı. Build zamanları her şey için darboğaz haline geldi: local development, CI/CD pipeline'ları ve deployment processleri. Geliştirme takımları kod yazmaktan çok build beklemekle vakit geçiriyordu.</p>
<p>Bu, frontend tooling'de performans devrimini ateşleyen ortamdı - JavaScript-based tool'lardan her şeyi değiştirecek native compiled çözümlere doğru temel bir geçiş.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gelecek Manzarası: Edge Computing ve Ötesi]]></title>
            <description><![CDATA[Edge computing, AI-destekli development ve universal deployment'ın frontend tooling'i nasıl yeniden şekillendirdiği. Build tool'lardan deployment platform'larına: developer experience'ın son sınırı.]]></description>
            <link>https://sph.sh/tr/posts/frontend-tooling-evolution-104-the-future-landscape/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/frontend-tooling-evolution-104-the-future-landscape/</guid>
            <category><![CDATA[edge-computing]]></category>
            <category><![CDATA[ai-development]]></category>
            <category><![CDATA[vercel]]></category>
            <category><![CDATA[cloudflare]]></category>
            <category><![CDATA[deno]]></category>
            <category><![CDATA[bun]]></category>
            <category><![CDATA[future]]></category>
            <category><![CDATA[deployment]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Frontend build tooling, bundler hızının artık geliştirici deneyimini sınırlayan asıl etken olmadığı bir eşiği geçti; sıradaki sınır, build tooling'in kodun nerede ve nasıl çalışacağıyla nasıl etkileşeceği. Edge runtime'lar, deployment platformları ve framework seviyesindeki temel yapılar (React Server Components, streaming SSR, partial hydration), build boru hattını artık bundler'ın kendisi kadar etkiliyor. "Build" ile "deploy" arasındaki sınır, tek bir sunucuyu değil bir runtime kümesini hedefleyen tek bir boru hattına dönüşüyor.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Git Branching Stratejileri: Farklı Takımlar ve Ürünler için Gerçek Dünya Dersleri]]></title>
            <description><![CDATA[Takım büyüklüğü, ürün tipi ve gerçek başarısızlıklara dayanan Git branching stratejileri hakkında acımasızca dürüst bir rehber.]]></description>
            <link>https://sph.sh/tr/posts/git-branching-strategies-real-world/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/git-branching-strategies-real-world/</guid>
            <category><![CDATA[git]]></category>
            <category><![CDATA[branching]]></category>
            <category><![CDATA[war-stories]]></category>
            <category><![CDATA[team-management]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[ci-cd]]></category>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[deployment]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Git dallanma stratejisi, devam eden işin bir sürüme nasıl dönüşeceğini tanımlar: kimin nereye commit edebileceği, dalların ne zaman birleşeceği ve main dalının her an deploy edilebilir olup olmadığını neyin belirlediği. Stratejiler arasındaki dengeler (trunk-based development, GitHub Flow, Git Flow, release branch'leri) gerçek ve alana özeldir; üç kişilik bir mobil ekip için mükemmel çalışan bir strateji 25 geliştiricide kırılır, 25'e ölçeklenen strateji ise üç kişilik ekibe gereksiz koordinasyon yükü getirir. Çoğu dallanma stratejisi başarısızlığı aslında stratejinin kendisiyle ilgili değildir; ekip büyüklüğünü ya da ürün temposunu aşan bir stratejinin hâlâ uygulanıyor olmasıyla ilgilidir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Google Closure Compiler: Modern JavaScript Tooling'in Unutulan Öncüsü]]></title>
            <description><![CDATA[Google'ın 2009'da yayınladığı Closure Compiler ve Library'nin modern web geliştirme araçlarını nasıl şekillendirdiğini, dead code elimination'dan type checking'e kadar olan etkilerini ve bugünkü build araçlarına olan kalıcı etkisini keşfediyoruz.]]></description>
            <link>https://sph.sh/tr/posts/google-closure-compiler-legacy-modern-web-development/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/google-closure-compiler-legacy-modern-web-development/</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[closure-compiler]]></category>
            <category><![CDATA[build-tools]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[google]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[webpack]]></category>
            <category><![CDATA[esbuild]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[optimization]]></category>
            <category><![CDATA[legacy-tech]]></category>
            <category><![CDATA[toolchain-evolution]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>2009 yılında JavaScript'in hala birçok enterprise developer tarafından "oyuncak dili" olarak görüldüğü dönemde, Google sessizce iki teknolojiyi açık kaynak olarak yayınladı: Closure Compiler ve Closure Library. Bu araçlar, JavaScript optimizasyonu ve büyük ölçekli web uygulamaları hakkındaki düşüncelerimizi temelden şekillendirecekti.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mermaid Diyagram Vitrin: Tüm Grafik Tipleri]]></title>
            <description><![CDATA[Akış şemaları, sıralı diyagramlar, Gantt grafikleri ve daha fazlası için interaktif örneklerle tüm Mermaid diyagram tiplerinin kapsamlı vitrini]]></description>
            <link>https://sph.sh/tr/posts/mermaid-diagram-showcase/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mermaid-diagram-showcase/</guid>
            <category><![CDATA[mermaid]]></category>
            <category><![CDATA[diagrams]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[visualization]]></category>
            <category><![CDATA[charts]]></category>
            <category><![CDATA[graphs]]></category>
            <category><![CDATA[uml]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Tüm Mermaid diyagram tiplerini interaktif örneklerle keşfedin. Her diyagram, optimal deneyim için yakınlaştırma, kaydırma ve tam ekran görüntülemeyi destekler - ancak interaktif özellikler tarayıcınıza ve platformunuza bağlı olarak değişebilir.</p>
<p><strong>1. Akış Şeması - Süreç Akışı Görselleştirme</strong></p>
<p>Akış şemaları süreçleri, karar ağaçlarını ve sistem akışlarını görselleştirmek için mükemmeldir.</p>
<p><strong>Border-first (site standardı):</strong> Stilli düğümlerde tek nötr dolgu (#1e293b) ve anlam <strong>stroke</strong> renkleri kullanılır; parlak düğüm dolguları yok. Palet ve şablonlar için docs/BLOG_WRITING.md dosyasına bak.</p>
<p>[code block]</p>
<p><strong>2. Sıralı Diyagram - Etkileşim Zaman Çizelgesi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Micro Frontend'ler: İleri Düzey Pattern'ler, Performance ve Production Dersleri]]></title>
            <description><![CDATA[Micro frontend'lerde ileri düzey pattern'ler, hata ayıklama teknikleri ve production deneyimleri. Module federation, event bus tasarımı ve gerçek dünya çözümleri.]]></description>
            <link>https://sph.sh/tr/posts/micro-frontends-advanced-patterns-debugging/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/micro-frontends-advanced-patterns-debugging/</guid>
            <category><![CDATA[debugging]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[state-management]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Micro Frontend Serisi Navigasyon</strong></p>
<p>- <strong>Kısım 1</strong>: Mimari temelleri ve uygulama türleri
- <strong>Kısım 2</strong>: Module Federation, iletişim kalıpları ve entegrasyon stratejileri
- <strong>Kısım 3 (Burada bulunuyorsunuz)</strong>: İleri düzey kalıplar, performans optimizasyonu ve production hata ayıklama</p>
<p><strong>Ön Koşullar</strong>: Bu yazı Kısım 1 temellerine ve Kısım 2 uygulama kalıplarına aşinalık varsayar.</p>
<p>---</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Micro Frontend Mimarisi Temelleri: Modern Web Uygulamaları İçin Eksiksiz Rehber]]></title>
            <description><![CDATA[Micro frontend mimarisinin temelleri, uygulama stratejileri ve gerçek dünya örnekleri. Module Federation, single-spa ve diğer yaklaşımların detaylı karşılaştırması.]]></description>
            <link>https://sph.sh/tr/posts/micro-frontends-architecture-fundamentals/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/micro-frontends-architecture-fundamentals/</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Micro frontend mimarileri, tek sayfalı bir frontend'i bağımsız olarak deploy edilebilen, bağımsız olarak sahiplenilen ve runtime'da birleşen dilimlere böler. Belirli bir dizi sorunu çözerler (ekip büyüklüğü ölçeklendirme, bağımsız sürüm temposu, teknoloji esnekliği) ve buna karşılık yeni bir dizi problem getirirler (runtime kompozisyon karmaşıklığı, paylaşılan bağımlılık yönetimi, dilimler arası state, dilimler arası performans). Benimseme kararı nadiren net bir kazançtır; koordinasyon yükünü sürüm bağımsızlığıyla değiş tokuş eder ve bu takas yalnızca belirli ekip büyüklüklerinde ve ürün yapısı sınırlarında geri kazanır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Micro Frontend Uygulama Pattern'leri: Pratik Rehber]]></title>
            <description><![CDATA[Micro frontend'leri production'da uygulamak için pratik pattern'ler. Routing, state yönetimi, communication ve deployment stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/micro-frontends-implementation-patterns/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/micro-frontends-implementation-patterns/</guid>
            <category><![CDATA[module-federation]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[webpack]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Micro Frontend Serisi Navigasyonu</strong></p>
<p>- <strong>Bölüm 1</strong>: Mimari temelleri ve uygulama türleri
- <strong>Bölüm 2 (Şu anda buradasınız)</strong>: Module Federation, iletişim pattern'leri ve entegrasyon stratejileri
- <strong>Bölüm 3</strong>: İleri düzey pattern'ler, performans optimizasyonu ve production hata ayıklama</p>
<p><strong>Ön Koşullar</strong>: Bu yazı Bölüm 1'deki kavramlar üzerine kuruludur. Micro frontend'lere yeniyseniz, önce oradan başlayın.</p>
<p>---</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Factory Pattern'inin Ölümü: Saf Fonksiyonlarla Node.js Kodumuzun 40%'ını Nasıl Sildik]]></title>
            <description><![CDATA[Node.js microservice'lerimizden tüm factory'leri, service'leri ve dependency injection'ları çıkardıktan sonra, 65% daha az bug ile 3x daha hızlı ship etmeye başladık. Event-driven mimariler için fonksiyonların sınıfları neden geçtiğini anlatıyorum.]]></description>
            <link>https://sph.sh/tr/posts/microservices-to-serverless-functions-nodejs/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/microservices-to-serverless-functions-nodejs/</guid>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[functional-programming]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[refactoring]]></category>
            <category><![CDATA[war-stories]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Hiçbir İşe Yaramayan 847 Satırlık Service</strong></p>
<p>20 dakika sürmesi gereken bir ödeme işleme bug'ını debug ediyordum. Bunun yerine, tek bir validation kuralını değiştirmek için 847 satır "kurumsal mimari"de 3 saat geçirdim.</p>
<p>Suçlu? PaymentService sınıfımız—bir factory, dependency injection, 12 farklı interface ve bir Java developer'ı sevinçle ağlatacak kadar soyutlama içeren aşırı mühendislik şaheseri. Event-driven Lambda mimarisinde pure function'lar bu tür class yapılarını geçer: daha az boilerplate, daha kolay test, daha hızlı iterasyon.</p>
<p>[code block]</p>
<p>Düzeltmeye çalıştığım bug? Basit bir validation: <em>"Kredi kartı numaraları boşluk içermemeli."</em></p>
<p>Saf fonksiyonlar ve event-driven mimariye geçişimizden sonra, aynı fonksiyonalite şöyle oldu...</p><p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mobil Micro Frontend'ler: Production'da Çok Kanallı Deneyimler]]></title>
            <description><![CDATA[React Native ve WebView'lar ile mobil micro frontend'ler oluşturma. Çok kanallı uygulamalar için production stratejileri ve performans optimizasyonu.]]></description>
            <link>https://sph.sh/tr/posts/mobile-micro-frontends-multi-channel-production/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mobile-micro-frontends-multi-channel-production/</guid>
            <category><![CDATA[expo]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[re-pack]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[rspack]]></category>
            <category><![CDATA[vite]]></category>
            <category><![CDATA[webview]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Mobil öncelikli micro frontend mimarileri, ikinci bir kanalla (web, desktop) karşılaştıklarında değişmeden nadiren ayakta kalır. Mimariyi mobilde çalıştıran varsayımlar (WebView yaşam döngüsü, native köprü, native gesture'lar, kanal başına asset bundle'ları) ya web ve desktop'a hiç eşlenmez ya da kodu paylaşmanın amacını ortadan kaldıran bir performans maliyetine eşlenir. Gerçek çok kanallı micro frontend'ler (mobil, web, desktop Electron) sadece "bir kez yaz, her yere deploy et" değil, bir runtime soyutlama katmanı ve kanala özel kod yollarında bir disiplin gerektirir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mobil Micro Frontend'ler: React Native, Expo ve WebView'lar]]></title>
            <description><![CDATA[React Native ve Expo WebView'lar ile mobil micro frontend mimarisi oluşturma. Gerçek dünya örnekleri ve en iyi uygulamalar.]]></description>
            <link>https://sph.sh/tr/posts/mobile-micro-frontends-react-native-expo-webviews/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mobile-micro-frontends-react-native-expo-webviews/</guid>
            <category><![CDATA[expo]]></category>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[re-pack]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[rspack]]></category>
            <category><![CDATA[webview]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bir projede takımımız giderek yaygınlaşan bir meydan okumayla karşılaştı: farklı takımlardan gelen, her birinin kendi deployment döngüleri ve teknoloji stack'leri olan birden fazla web tabanlı servisi entegre edebilecek bir mobil uygulama oluşturmamız gerekiyordu. Yakalayıcı nokta? Teslim etmek için 8 haftamız vardı ve web takımları bize yardım etmek için özellik geliştirmelerini durduramazdı.</p>
<p>İşte o zaman WebView'ları kullanarak React Native uygulamamıza micro frontend mimarisi getirmeye karar verdik. Ardından gelen 6 ay hata ayıklama, performans optimizasyonu ve hiç uygulayacağımı düşünmediğim yaratıcı çözümlerle doluydu. İşte öğrendiklerimiz.</p>
<p><strong>Mobil Micro Frontend Serisi</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mobil Micro Frontend'lerde WebView İletişim Pattern'leri]]></title>
            <description><![CDATA[React Native ve WebView'lar arasında güvenli ve verimli iletişim kurma. Postmessage, bridge pattern'leri ve production deneyimleri.]]></description>
            <link>https://sph.sh/tr/posts/mobile-micro-frontends-webview-communication-patterns/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/mobile-micro-frontends-webview-communication-patterns/</guid>
            <category><![CDATA[expo]]></category>
            <category><![CDATA[mobile]]></category>
            <category><![CDATA[module-federation]]></category>
            <category><![CDATA[re-pack]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[rspack]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[webview]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Mobil micro frontend mimarimizi devreye aldıktan üç ay sonra bir duvara çarptık. WebView-native iletişimimiz debugging kâbusu haline geliyordu. Mesajlar kayboluyordu, platformlar arası tipler eşleşmiyordu, ve production'da WebView'ların içinde neler olduğunu takip edemiyorduk. Bu yazıda PostMessage tabanlı bridge pattern'imizi, type-safe iletişim katmanını ve production'dan öğrendiklerimizi paylaşıyorum.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Monolitten Event-Driven Fonksiyonlara: Node.js Mimari Evrim Rehberi]]></title>
            <description><![CDATA[Node.js monolitlerini event-driven serverless fonksiyonlara dönüştürme rehberi, gerçek migrasyon stratejileri, mimari kalıplar ve tam bir dönüşümden öğrenilen dersler.]]></description>
            <link>https://sph.sh/tr/posts/monolith-to-microservices-nodejs-evolution/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/monolith-to-microservices-nodejs-evolution/</guid>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[monolith]]></category>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[war-stories]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Monolitler Sürdürülemez Hale Geldiğinde</strong></p>
<p>Yoğun trafik sırasında production incident'ları bir kalıp haline gelmişti. Node.js monolitimiz - yüz binlerce satır "kurumsal kalitede" MVC kodu - sürekli olarak yük altında zorlanıyordu. 45+ dakikalık deploy süreleri, kritik düzeltmelerin bile production'a ulaşmasının çok uzun sürdüğü anlamına geliyordu.</p>
<p>Bu deneyim bize asıl problemin sadece teknik borç değil, mimari olduğunu öğretti. Monolit, tek bir takımın etkili bir şekilde sürdürebileceği, debug edebileceği ve geliştirebileceği noktanın ötesine geçmişti.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Multi-Account AWS Mimarisi: Ölçeklenebilir Event-Driven Sistemler]]></title>
            <description><![CDATA[Dayanıklı event-driven sistemler için multi-account AWS mimari pattern'lerini öğrenin. Hesap yapısı, EventBridge routing, servisler arası iletişim ve dağıtık sistemlerde operasyonel zorlukları keşfedin.]]></description>
            <link>https://sph.sh/tr/posts/multi-account-aws-event-driven-architecture/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/multi-account-aws-event-driven-architecture/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[eventbridge]]></category>
            <category><![CDATA[multi-account]]></category>
            <category><![CDATA[event-driven]]></category>
            <category><![CDATA[architecture]]></category>
            <category><![CDATA[iam]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>Single-Account Mimarisinin Sınırları</strong></p>
<p>Multi-account AWS mimarisi, organizasyonlar belirli ölçek ve karmaşıklık eşiklerine ulaştığında gerekli hale gelir. Bu pattern'i ne zaman ve nasıl implement edeceğinizi anlamak, sürdürülebilir büyüme ile operasyonel kaos arasındaki farkı belirleyebilir.</p>
<p>Dokuz geliştirme takımının aynı AWS hesabına deploy ettiği çok servisli bir platform düşünün. Bu yaklaşım küçük organizasyonlar için işe yarayabilen, ölçek arttıkça çeşitli kritik zorluklar yaratır.</p>
<p><strong>Yaygın Single-Account Anti-Pattern'leri</strong></p>
<p>Birden fazla takımın aynı AWS hesabını paylaşması kaynak çakışmalarına, güvenlik sorunlarına ve operasyonel karmaşıklığa yol açar. Örnek bir anti-pattern konfigürasyonu:</p>
<p>[code block]</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[React Native Uygulamalarda OpenTelemetry ve Firebase ile Gözlemlenebilirlik]]></title>
            <description><![CDATA[React Native uygulamalarında OpenTelemetry ve Firebase kullanarak kapsamlı gözlemlenebilirlik kurma. Tracing, metrics ve logging en iyi uygulamaları.]]></description>
            <link>https://sph.sh/tr/posts/opentelemetry-react-native-firebase-observability/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/opentelemetry-react-native-firebase-observability/</guid>
            <category><![CDATA[firebase]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[opentelemetry]]></category>
            <category><![CDATA[react-native]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Birçok React Native ekibi production görünürlük sorunları yaşar. Yerel ortamda çoğaltılamayan çökmeler, rastgele performans sorunları ve destekleyici veri olmadan kullanıcı şikayetleri yaygın zorluklardır. Bu rehber, production sorun giderme ve optimizasyon için gereken içgörüleri sağlayan kapsamlı gözlemlenebilirlik implementasyonunu kapsar.</p>
<p><strong>Zorluk: Mobile Gözlemlenebilirlik Gereksinimleri</strong></p>
<p>Production mobile uygulamaları, web uygulamalarından farklı benzersiz monitoring zorluklarına sahiptir. Sessiz hatalar, cihaza özel sorunlar ve network değişkenliği, geleneksel loglama yaklaşımlarının ele alamayacağı kör noktalar yaratır.</p>
<p>Mobile gözlemlenebilirlik için temel gereksinimler:</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Server-Side HTTP Client'lar: Native Fetch'ten Effect'e, Production Deneyimleri]]></title>
            <description><![CDATA[Node.js HTTP client'larının kapsamlı karşılaştırması: performans testleri, circuit breaker pattern'ler ve gerçek production deneyimleri]]></description>
            <link>https://sph.sh/tr/posts/server-side-http-clients-comparison/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/server-side-http-clients-comparison/</guid>
            <category><![CDATA[nodejs]]></category>
            <category><![CDATA[http-clients]]></category>
            <category><![CDATA[axios]]></category>
            <category><![CDATA[undici]]></category>
            <category><![CDATA[effect]]></category>
            <category><![CDATA[performance]]></category>
            <category><![CDATA[circuit-breaker]]></category>
            <category><![CDATA[production]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p><strong>HTTP Client Zorluğu</strong></p>
<p>Microservice mimarileri genellikle basit başlar - servisler edge case'ler üzerinde fazla düşünmeden HTTP üzerinden haberleşir. Sonra yüksek trafik olayları sınırlamaları ortaya çıkarır. Payment servisleri yük altında timeout'a düşmeye başlayabilir, request başına 30 saniye takılabilir.</p>
<p>Yaygın bir sorun: proper timeout handling olmadan native fetch kullanmak. Bu takılan connection'lar Lambda concurrent execution'ları tüketebilir ve infrastructure maliyetlerini etkiler.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 1 - Neden Geçiş Yapalım?]]></title>
            <description><![CDATA[Serverless Framework'ten AWS CDK'ya geçiş rehberinin ilk bölümü. Neden geçiş yapmalı, temel kavramlar ve ilk adımlar.]]></description>
            <link>https://sph.sh/tr/posts/serverless-to-cdk-migration-part-1/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/serverless-to-cdk-migration-part-1/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[migration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Serverless Framework ve AWS CDK, örtüşen sorunları farklı felsefelerle çözer: Serverless Framework, Lambda merkezli bir deploy birimi üzerinde YAML güdümlü, sağlayıcıdan bağımsız bir soyutlamadır; CDK, CloudFormation üzerinde typed, AWS-native, programatik bir sentez katmanıdır. Serverless Framework ücretli lisans modeline geçtiğinde, migrasyon kararı varsayılan olmaktan çıkıp aktif bir dengeye dönüştü ve iki araç arasındaki seçim aslında lisans maliyetinden çok, ekibin buyurucu ve bildirimsel altyapıyla ne kadar rahat ettiğine, type safety gereksinimine ve daha derin native kapsama karşılığında AWS'e kilitlenmeyi kabul edip etmediğine bağlıdır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 2 - CDK Environment'ınızı Kurma]]></title>
            <description><![CDATA[Serverless uygulamalar için CDK projesini nasıl yapılandıracağınızı, Lambda development için TypeScript'i nasıl configure edeceğinizi ve Serverless Framework'ten migration'u kolaylaştıran pattern'leri nasıl kuracağınızı öğrenin.]]></description>
            <link>https://sph.sh/tr/posts/serverless-to-cdk-migration-part-2/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/serverless-to-cdk-migration-part-2/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[tutorial]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>CDK migration'ımızın 1. haftası. Karar verilmişti, bütçe onaylanmıştı ve 12 kişilik ekibim beklenti içinde bana bakıyordu. "Peki, nereden başlıyoruz?"</p>
<p>CDK'yı kişisel projelerde kullanmıştım, ama onu 4 environment'ta 12 developer ile 47 Lambda fonksiyonunu handle edecek şekilde scale etmek? Bu farklıydı. Sadece benim için değil, tüm ekip için çalışacak yapı, kurallar ve pattern'lere ihtiyacımız vardı.</p>
<p>Bu, 12 mühendisinin birbirlerinin ayağına basmadan paralel çalışmasını sağlayan, Serverless Framework'teki tanıdık pattern'leri koruyan ve 2.8M$ ARR platformumuzun temeli haline gelen bir CDK proje yapısını nasıl tasarladığımızın hikayesi.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 3 - DynamoDB ve S3]]></title>
            <description><![CDATA[DynamoDB tabloları ve S3 bucket'larını CDK'ya taşıma. Data migration stratejileri ve en iyi uygulamalar.]]></description>
            <link>https://sph.sh/tr/posts/serverless-to-cdk-migration-part-3/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/serverless-to-cdk-migration-part-3/</guid>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[migration]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Lambda fonksiyonları ve API Gateway konfigürasyonları, gerçek migration karmaşıklığının ortaya çıktığı yerdir. Basit bir YAML-to-TypeScript dönüşümü gibi görünen şey, hızlıca bundling optimizasyonu, memory ayarlama ve hata yönetimi pattern'lerini içeren çok katmanlı bir challenge olarak kendini gösterir.</p>
<p>Bu migration boyunca fonksiyon pattern'lerini standartlaştırma, cold start'ları optimize etme ve sürdürülebilir API konfigürasyonları oluşturma konularında değerli dersler öğrendim. Farklı memory ayarları, timeout konfigürasyonları ve deployment pattern'leri olan Lambda fonksiyonlarını migrate ederken öğrendiklerimi paylaşıyorum.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 4 - EventBridge ve SQS]]></title>
            <description><![CDATA[Event-driven mimarileri CDK'ya taşıma. EventBridge, SQS, SNS entegrasyonları ve pattern'ler.]]></description>
            <link>https://sph.sh/tr/posts/serverless-to-cdk-migration-part-4/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/serverless-to-cdk-migration-part-4/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[migration]]></category>
            <category><![CDATA[parameter-store]]></category>
            <category><![CDATA[rds]]></category>
            <category><![CDATA[secrets-manager]]></category>
            <category><![CDATA[vpc]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>CDK migration'ımızın 5. haftası. 23 Lambda fonksiyonunu başarıyla taşımıştık, ama gerçek zorluk Lead DevOps Mühendisimiz ayrıldığını duyurduğunda başladı. "Database migration ile iyi şanslar," dedi ve 2.8M$ ARR SaaS platformumuzu destekleyen üç DynamoDB tablo adının yazdığı yapışkan notu verdi.</p>
<p>O yapışkan not 4 yıllık customer verisini, 180K kullanıcıyı ve sıfır dokümantasyonlu backup prosedürünü temsil ediyordu. Bu, tek bir kayıt kaybetmeden stateful infrastructure migrate etme hikayesi - ve production sistemlerdeki data dependency'leri hakkında öğrenilen acı dersler.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 5 - Authentication, Authorization ve IAM]]></title>
            <description><![CDATA[Serverless Framework'ten AWS CDK'ya geçerken Cognito ile güçlü kimlik doğrulama, API Gateway authorizer'lar ve ince taneli IAM politikaları uygulama.]]></description>
            <link>https://sph.sh/tr/posts/serverless-to-cdk-migration-part-5/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/serverless-to-cdk-migration-part-5/</guid>
            <category><![CDATA[authorization]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[cognito]]></category>
            <category><![CDATA[iam]]></category>
            <category><![CDATA[jwt]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Serverless Framework'ten AWS CDK'ya authentication ve authorization migrasyonu, hem güvenlik duruşunu hem de uygulama performansını etkileyebilecek benzersiz zorluklar sunar. Organizasyonlar genellikle Serverless Framework implementasyonlarının organik büyüme ve hızlı iterasyon döngüleri yoluyla güvenlik borcu biriktirdiğini keşfederler.</p>
<p>Yaygın pattern'lar arasında aşırı geniş IAM izinleri olan fonksiyonlar, multiple custom authorizer'lara dağılmış authorization logic'i ve erişim kontrol kararları için yetersiz audit trail'ler bulunur. Bu sorunlar migration değerlendirmeleri sırasında belirgin hale gelir ve compliance gereksinimlerini önemli ölçüde etkileyebilir.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Serverless Framework'ten AWS CDK'ya Geçiş: Bölüm 6 - Production İpuçları]]></title>
            <description><![CDATA[CDK migration'dan öğrenilen production dersleri. Monitoring, cost optimization ve troubleshooting.]]></description>
            <link>https://sph.sh/tr/posts/serverless-to-cdk-migration-part-6/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/serverless-to-cdk-migration-part-6/</guid>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[monitoring]]></category>
            <category><![CDATA[performance]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bir CDK migrasyonunun son aşaması üretilen altyapının doğruluğu değil, kesme anındaki operasyonel hazırlıktır: trafiği almak için bir plan, migrasyon üretimi bozarsa geri dönmek için bir plan ve canlı yük altında çıkan herhangi bir drift'i uzlaştırmak için bir plan. Onlarca Lambda fonksiyonu ve birden fazla DynamoDB tablosunu kapsayan bir migrasyon için kesme planı, migrasyon kodunun kendisinden büyüktür; geri dönüş hızlı, granüler ve production'a yük taşınmadan önce test edilmiş olmalıdır.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DynamoDB Toolbox ile Serverless TypeScript Projelerini Kolaylaştırma]]></title>
            <description><![CDATA[Raw AWS SDK karmaşıklığından üretime hazır single-table tasarımına. Pratik DynamoDB Toolbox desenleri, yaygın tuzaklar ve ölçeklenen mimari kararları.]]></description>
            <link>https://sph.sh/tr/posts/streamline-dynamodb-toolbox-serverless-typescript/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/streamline-dynamodb-toolbox-serverless-typescript/</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[dynamodb]]></category>
            <category><![CDATA[dynamodb-toolbox]]></category>
            <category><![CDATA[serverless]]></category>
            <category><![CDATA[typescript]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Raw DynamoDB SDK call'ları ile serverless API'lerin inşası önemli bakım yükü yaratır. Binlerce satır AttributeValue mapping'i, onlarca dağınık UpdateExpression string'i ve sıfır type safety kırılgan sistemlere yol açar. Schema değişiklikleri yanlışlıkla kullanıcı kayıtlarını bozduğunda, daha iyi bir yaklaşımın gerekli olduğu açık hale gelir.</p>
<p>DynamoDB Toolbox bu zorlukları, DynamoDB operasyonlarını bakım yükünden geliştirici-dostu ve ölçeklenen bir deneyime dönüştürerek çözer. İşte gücünü etkili bir şekilde nasıl kullanacağın.</p>
<p><strong>Tool Adaptasyonunu Yönlendiren Zorluklar</strong></p>
<p><strong>AttributeValue Karmaşıklığı</strong></p>
<p>Raw DynamoDB SDK ile çalışmak her gün böyle kod yazmak demekti:</p>
<p>[code block]</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[React Native'de SWR Tarzı Feature Flag'ler]]></title>
            <description><![CDATA[React Native uygulamalarında SWR pattern'i kullanarak feature flag sistemi kurma. Real-time güncellemeler ve caching stratejileri.]]></description>
            <link>https://sph.sh/tr/posts/swr-style-feature-flags-react-native/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/swr-style-feature-flags-react-native/</guid>
            <category><![CDATA[feature-flags]]></category>
            <category><![CDATA[mobile-development]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[swr]]></category>
            <category><![CDATA[war-stories]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Memorial Day hafta sonu 2023. Sabah 2:47. 50.000 dolar değerindeki işlemleri işlerken ödeme sistemimiz çöktü. Suçlu? Yüklenmesi 8 saniye süren bir feature flag'i, checkout akışımızın timeout olmasına neden oldu. Yarı uykulu kullanıcılar alışverişlerini tamamlayamadı, sepetlerini terk ettiler ve bir hafta sonunun gelirini kaybettik.</p>
<p>Bu olay bana feature flag'lerin sadece konfigürasyon olmadığını—kritik altyapı olduklarını öğretti. Stale-while-revalidate pattern'i hem cache hit sağlar hem de arka planda güncel değer çeker; timeout'ları önler. Sistemimizi stale-while-revalidate pattern'i ile yeniden kurduktan sonra, tek bir timeout olmadan günde 2M+ flag isteği işliyoruz. İşte nasıl yaptığımız.</p>
<p><strong>Memorial Day Felaketi: Neyin Yanlış Gittiği</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Holakrasi'den Team Topologies'e: Gerçek Otonomi için Teknik Takımların Tasarımı]]></title>
            <description><![CDATA[Holakrasi, Spotify modeli ve Team Topologies'den esinlenerek kaos yaratmadan takım otonomisini artırmak için pratik yapılar ve korumalar. Ne işe yaradı, ne yaramadı.]]></description>
            <link>https://sph.sh/tr/posts/team-autonomy-structures/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/team-autonomy-structures/</guid>
            <category><![CDATA[organization-design]]></category>
            <category><![CDATA[leadership]]></category>
            <category><![CDATA[team-topologies]]></category>
            <category><![CDATA[holacracy]]></category>
            <category><![CDATA[spotify-model]]></category>
            <category><![CDATA[dora]]></category>
            <category><![CDATA[conways-law]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Liderlik „takımlara daha çok otonomi veriyoruz" dediğinde ilk aklınıza gelen „bu işler karışabilir" değil mi? Yeterince org yeniden yapılandırması gördükten sonra, sınırları olmayan otonominin genelde çözdüğünden çok problem yarattığını öğrendim. Bu yazıda Holakrasi, Spotify modeli ve Team Topologies'den seçerek aldığımız yapıları paylaşıyorum.</p>
<p>Birkaç yıl önce matriks proje takımlarından ürün moduna, akışa-hizalanmış takımlara geçtik. Hız gerçekten arttı ama istenmeyen sonuçlar da geldi  -  daha fazla defekt, tekrarlanan çaba ve takımların birbirinin ayağına basması. Öğrendiğim şey (bazen zor yoldan) etkili otonominin kısıtlamaları kaldırmak değil, doğru olanları tasarlamak olduğu.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MDX Blog Tipografi ve Stil Rehberi]]></title>
            <description><![CDATA[MDX blog yazılarında kullanılan tipografi ve stil öğelerinin kapsamlı gösterimi. Başlıklar, listeler, kod blokları ve daha fazlası.]]></description>
            <link>https://sph.sh/tr/posts/typography/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/typography/</guid>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[markdown]]></category>
            <category><![CDATA[tutorial]]></category>
            <category><![CDATA[typography]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>Bu rehber, modern markdown işlemcilerinde mevcut olan tüm markdown tipografi özelliklerini ve formatlama seçeneklerini gösterir.</p>
<p><strong>Başlıklar</strong></p>
<p><strong>Başlık 1 (H1)</strong>
<strong>Başlık 2 (H2)</strong>
<strong>Başlık 3 (H3)</strong>
<strong>Başlık 4 (H4)</strong>
<strong>Başlık 5 (H5)</strong>
<strong>Başlık 6 (H6)</strong></p>
<p><strong>Metin Formatlaması</strong></p>
<p><strong>Temel Formatlama</strong></p>
<p><strong>Kalın metin</strong> önemli bilgileri öne çıkarır.
<em>İtalik metin</em> belirli kelimelere vurgu ekler.
<strong><em>Kalın ve italik</strong></em> her iki stili maksimum etki için birleştirir.
~~Üstü çizili metin~~ silinmiş veya kullanımdan kaldırılmış içeriği gösterir.</p>
<p><strong>Satır İçi Kod</strong></p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Zod ve OpenAPI ile Type-Safe AWS Lambda API'leri]]></title>
            <description><![CDATA['Basit' bir API değişikliği bir kurumsal müşteri entegrasyonunu nasıl bozdu, dokümantasyon drift'i neden gerçek sorunlara yol açar ve Zod schema'larından otomatik OpenAPI spec'i üreten pratik bir sistem.]]></description>
            <link>https://sph.sh/tr/posts/zod-openapi-aws-lambda-cdk/</link>
            <guid isPermaLink="true">https://sph.sh/tr/posts/zod-openapi-aws-lambda-cdk/</guid>
            <category><![CDATA[api-gateway]]></category>
            <category><![CDATA[aws-cdk]]></category>
            <category><![CDATA[lambda]]></category>
            <category><![CDATA[openapi]]></category>
            <category><![CDATA[typescript]]></category>
            <category><![CDATA[war-stories]]></category>
            <category><![CDATA[zod]]></category>
            <category><![CDATA[zod-validation]]></category>
            <dc:creator><![CDATA[sph.sh]]></dc:creator>
            <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>API dokümantasyon drift'i hakkında acı bir ders: Kullanıcı API'sine opsiyonel bir alan eklemek ama OpenAPI spec'ini güncellememek, bir kurumsal müşterinin entegrasyonunu bir gecede bozdu. Onların code generation pipeline'ı eski şemayı bekleyen TypeScript arayüzleri üretti. Onların kod generation pipeline'ı eski şemayı bekleyen TypeScript arayüzleri üretti, yüzlerce başarısız kullanıcı kaydı ve önemli gelir kaybına neden oldu.</p>
<p>Bu olay API dokümantasyonunun sadece nice-to-have olmadığını gösterdi – kritik iş altyapısıdır. Bu yaklaşım Zod şemalarından otomatik olarak OpenAPI spec'leri üreten sistemlerin yeniden oluşturulmasını içerir; tek doğruluk kaynağı daha güvenli API evrimi sağlar. CDK ile production stack örneği aşağıda.</p>
<p><em>Continue reading...</em></p>]]></content:encoded>
        </item>
    </channel>
</rss>