<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:news="http://www.google.com/schemas/sitemap-news/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"><url><loc>https://sade.dev/en/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/about/</loc><lastmod>2026-08-30T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/about/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/about/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/about/"/></url><url><loc>https://sade.dev/en/cookies/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/cookies/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/cookies/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/cookies/"/></url><url><loc>https://sade.dev/en/glossary/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/journal/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/journal/ai-assisted-engineering-workflow/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/ai-assisted-engineering-workflow/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/ai-assisted-engineering-workflow/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/ai-assisted-engineering-workflow/"/><image:image><image:loc>https://sade.dev/_astro/ai-assisted-engineering-workflow.DH576_f3.jpg</image:loc><image:title>My AI-Assisted Engineering Workflow — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/ai-didnt-remove-the-bottleneck/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/ai-darbogazi-kaldirmadi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/ai-didnt-remove-the-bottleneck/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/ai-darbogazi-kaldirmadi/"/><image:image><image:loc>https://sade.dev/_astro/ai-bottleneck-shift.85aM1CAy.jpg</image:loc><image:title>AI Didn&apos;t Remove the Bottleneck — It Moved It — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/architecture-decisions-rot/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/mimari-kararlar-curur/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/architecture-decisions-rot/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/mimari-kararlar-curur/"/><image:image><image:loc>https://sade.dev/_astro/executable-architecture.YwQcM_e2.jpg</image:loc><image:title>Your Architecture Decisions Rot Because Nothing Runs Them — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/can-you-ship-vibe-coded-to-production/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/vibe-coding-ile-production/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/can-you-ship-vibe-coded-to-production/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/vibe-coding-ile-production/"/><image:image><image:loc>https://sade.dev/_astro/vibe-coding-ile-production.DaGSFmxY.jpg</image:loc><image:title>Can You Ship Vibe-Coded Software to Production? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/flaky-tests-and-determinism/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/kararsiz-testler-ve-determinizm/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/flaky-tests-and-determinism/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/kararsiz-testler-ve-determinizm/"/><image:image><image:loc>https://sade.dev/_astro/flaky-tests-determinism.Bam2RNDx.jpg</image:loc><image:title>Flaky Tests: Retrying Isn&apos;t a Fix — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/gitflow-vs-github-flow/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/gitflow-mu-github-flow-mu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/gitflow-vs-github-flow/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/gitflow-mu-github-flow-mu/"/><image:image><image:loc>https://sade.dev/_astro/gitflow-mu-github-flow-mu.XINmOnb0.jpg</image:loc><image:title>Gitflow or GitHub Flow? How I Choose — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/is-postgresql-enough-for-everything/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/postgresql-her-seye-yeter-mi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/is-postgresql-enough-for-everything/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/postgresql-her-seye-yeter-mi/"/><image:image><image:loc>https://sade.dev/_astro/postgresql-her-seye-yeter-mi.BxOS3_0K.jpg</image:loc><image:title>Is PostgreSQL Enough for Everything? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/layered-vs-clean-architecture/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/katmanli-mimari-mi-clean-architecture-mi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/layered-vs-clean-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/katmanli-mimari-mi-clean-architecture-mi/"/><image:image><image:loc>https://sade.dev/_astro/katmanli-mimari-mi-clean-architecture-mi.x60OgWFx.jpg</image:loc><image:title>Layered Architecture or Clean Architecture? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/schema-evolution-without-breaking/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/sema-evrimi-sozlesmeyi-kirmadan/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/schema-evolution-without-breaking/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/sema-evrimi-sozlesmeyi-kirmadan/"/><image:image><image:loc>https://sade.dev/_astro/schema-evolution.DWacV6hD.jpg</image:loc><image:title>Schema Evolution: Changing a Contract Without Breaking It — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/signals-of-an-over-complex-system/</loc><lastmod>2026-07-25T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/gereginden-karmasik-sistem-sinyalleri/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/signals-of-an-over-complex-system/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/gereginden-karmasik-sistem-sinyalleri/"/><image:image><image:loc>https://sade.dev/_astro/gereginden-karmasik-sistem-sinyalleri.BOBt36co.jpg</image:loc><image:title>Signals That a System Has Grown Too Complex — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/the-cost-of-just-in-case-code/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/ileride-lazim-olur-kodunun-faturasi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/the-cost-of-just-in-case-code/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/ileride-lazim-olur-kodunun-faturasi/"/><image:image><image:loc>https://sade.dev/_astro/ileride-lazim-olur-kodunun-faturasi._e1TVcWL.jpg</image:loc><image:title>The Production Cost of &quot;Just-in-Case&quot; Code — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/the-nosql-trap/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/nosql-tuzagi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/the-nosql-trap/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/nosql-tuzagi/"/><image:image><image:loc>https://sade.dev/_astro/nosql-tuzagi.CCNNSW6L.jpg</image:loc><image:title>The NoSQL Trap: Starting Because &quot;It Has No Schema&quot; — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/when-i-move-to-microservices/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/mikroservise-ne-zaman-gecerim/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/when-i-move-to-microservices/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/mikroservise-ne-zaman-gecerim/"/><image:image><image:loc>https://sade.dev/_astro/mikroservise-ne-zaman-gecerim.D6wWXZyd.jpg</image:loc><image:title>When I Move to Microservices — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/when-i-switch-to-trunk-based/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/trunk-based-ne-zaman-geciyorum/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/when-i-switch-to-trunk-based/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/trunk-based-ne-zaman-geciyorum/"/><image:image><image:loc>https://sade.dev/_astro/trunk-based-ne-zaman-geciyorum.84rFjFnq.jpg</image:loc><image:title>When I Switch to Trunk-Based Development — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/why-boring-architecture/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/neden-boring-architecture/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/why-boring-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/neden-boring-architecture/"/><image:image><image:loc>https://sade.dev/_astro/neden-boring-architecture.D5cYmPZA.jpg</image:loc><image:title>Why I Prefer Boring Architecture — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/journal/why-i-start-with-a-modular-monolith/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/projelere-neden-moduler-monolit-ile-basliyorum/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/why-i-start-with-a-modular-monolith/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/projelere-neden-moduler-monolit-ile-basliyorum/"/><image:image><image:loc>https://sade.dev/_astro/projelere-neden-moduler-monolit-ile-basliyorum.GPVqis8x.jpg</image:loc><image:title>Why I Start Projects With a Modular Monolith — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/notes/bff-backend-for-frontend/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/bff-backend-for-frontend/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/bff-backend-for-frontend/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/bff-backend-for-frontend/"/><image:image><image:loc>https://sade.dev/_astro/bff-backend-for-frontend.BkSSou5k.jpg</image:loc><image:title>The BFF Pattern: A Separate API Layer for Mobile and Web — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/circuit-breaker-external-service-integration/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/circuit-breaker-dis-servis-entegrasyonu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/circuit-breaker-external-service-integration/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/circuit-breaker-dis-servis-entegrasyonu/"/><image:image><image:loc>https://sade.dev/_astro/circuit-breaker-dis-servis-entegrasyonu.DIkkqgha.jpg</image:loc><image:title>Circuit Breakers for External Service Integrations — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/idempotency-duplicate-delivery/</loc><lastmod>2026-09-02T19:36:54.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/idempotency-ayni-mesaj-iki-kez/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/idempotency-duplicate-delivery/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/idempotency-ayni-mesaj-iki-kez/"/><image:image><image:loc>https://sade.dev/_astro/idempotency-duplicate-delivery.DTYbxLtJ.jpg</image:loc><image:title>Idempotency: When the Same Message Arrives Twice — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/index-management/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/indeks-yonetimi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/index-management/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/indeks-yonetimi/"/><image:image><image:loc>https://sade.dev/_astro/indeks-yonetimi.D20IsWTo.jpg</image:loc><image:title>Index Management: Too Few Slow Reads, Too Many Kill Writes — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/laravel-queue-production-slowdown/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/laravel-queue-production-yavaslama/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/laravel-queue-production-slowdown/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/laravel-queue-production-yavaslama/"/><image:image><image:loc>https://sade.dev/_astro/laravel-queue-production-yavaslama.CIbvna8o.jpg</image:loc><image:title>Why Do Laravel Queues Slow Down in Production? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/nginx-php-fpm-pool-separation/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/nginx-php-fpm-pool-ayrimi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/nginx-php-fpm-pool-separation/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/nginx-php-fpm-pool-ayrimi/"/><image:image><image:loc>https://sade.dev/_astro/nginx-php-fpm-pool-ayrimi.CvcaFm0K.jpg</image:loc><image:title>Nginx + PHP-FPM Pool Separation — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/pgbackrest-postgresql-backup-strategy/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/pgbackrest-postgresql-backup-stratejisi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/pgbackrest-postgresql-backup-strategy/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/pgbackrest-postgresql-backup-stratejisi/"/><image:image><image:loc>https://sade.dev/_astro/pgbackrest-postgresql-backup-stratejisi.DRsZpLiS.jpg</image:loc><image:title>A PostgreSQL Backup Strategy with pgBackRest — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/pgbouncer-auth-query/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/pgbouncer-auth-query/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/pgbouncer-auth-query/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/pgbouncer-auth-query/"/><image:image><image:loc>https://sade.dev/_astro/pgbouncer-auth-query.BrIjf_Ar.jpg</image:loc><image:title>Multiple DB Users with pgBouncer auth_query — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/read-write-splitting/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/read-write-splitting/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/read-write-splitting/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/read-write-splitting/"/><image:image><image:loc>https://sade.dev/_astro/read-write-splitting.D40FaGF4.jpg</image:loc><image:title>Read/Write Splitting: Separating Read and Write Load — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/replaying-a-dead-letter-queue/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/dead-letter-kuyrugunu-guvenle-replay-etmek/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/replaying-a-dead-letter-queue/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/dead-letter-kuyrugunu-guvenle-replay-etmek/"/><image:image><image:loc>https://sade.dev/_astro/replaying-a-dead-letter-queue.CWCTcULN.jpg</image:loc><image:title>Replaying a Dead-Letter Queue Without Making It Worse — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/serverless-migration-decision/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/serverless-gecis-karari/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/serverless-migration-decision/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/serverless-gecis-karari/"/><image:image><image:loc>https://sade.dev/_astro/serverless-gecis-karari.BHdDXKxn.jpg</image:loc><image:title>The Serverless Migration Decision: Cold-Start and Vendor Lock-in — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/shared-redis-namespace-isolation/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/shared-redis-namespace-izolasyonu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/shared-redis-namespace-isolation/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/shared-redis-namespace-izolasyonu/"/><image:image><image:loc>https://sade.dev/_astro/shared-redis-namespace-izolasyonu.F_LQvxI5.jpg</image:loc><image:title>Namespace Isolation for a Shared Redis — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/sync-vs-async/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/senkron-mu-asenkron-mu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/sync-vs-async/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/senkron-mu-asenkron-mu/"/><image:image><image:loc>https://sade.dev/_astro/senkron-mu-asenkron-mu.2PLCA7O2.jpg</image:loc><image:title>Synchronous or Asynchronous? The Line Between HTTP and the Queue — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/the-right-cache-strategy/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/dogru-cache-stratejisi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/the-right-cache-strategy/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/dogru-cache-stratejisi/"/><image:image><image:loc>https://sade.dev/_astro/dogru-cache-stratejisi.CyjXSQDU.jpg</image:loc><image:title>Before You Reach for Redis: The Right Cache Strategy — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/validate-schema-at-the-edge/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/semayi-kuyrugun-kenarinda-dogrulamak/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/validate-schema-at-the-edge/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/semayi-kuyrugun-kenarinda-dogrulamak/"/><image:image><image:loc>https://sade.dev/_astro/validate-schema-at-the-edge.DGFunoOX.jpg</image:loc><image:title>Validating the Schema at the Edge of the Queue — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/when-event-driven-architecture/</loc><lastmod>2026-06-20T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/event-driven-mimari-ne-zaman/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/when-event-driven-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/event-driven-mimari-ne-zaman/"/><image:image><image:loc>https://sade.dev/_astro/event-driven-mimari-ne-zaman.BXDxkXxl.jpg</image:loc><image:title>Event-Driven Architecture: When It Saves You, When It Adds Complexity — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/notes/zero-downtime-database-migrations/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/zero-downtime-veritabani-gocleri/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/zero-downtime-database-migrations/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/zero-downtime-veritabani-gocleri/"/><image:image><image:loc>https://sade.dev/_astro/zero-downtime-veritabani-gocleri.DrRLXSS-.jpg</image:loc><image:title>Changing Schema in Production With Zero Downtime — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/privacy/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/privacy/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/privacy/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/privacy/"/></url><url><loc>https://sade.dev/en/series/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/series/postgresql-in-production/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/stack/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/stack/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/stack/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/stack/"/></url><url><loc>https://sade.dev/en/systems/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/systems/data-intensive-systems-breaking-points/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/veri-yogunluklu-sistemler-kirilma-noktalari/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/data-intensive-systems-breaking-points/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/veri-yogunluklu-sistemler-kirilma-noktalari/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/data-intensive-systems-breaking-points.svg</image:loc><image:caption>Data load breaks at discrete points, not gradually. Order matters: taking the expensive step early means never having taken the cheap one.</image:caption><image:title>Breaking points of a data-intensive system, ordered from cheapest to most expensive: the starting state is PHP-FPM, pgBouncer and a single PostgreSQL primary alongside Redis. The first break is the working set outgrowing RAM, solved by index discipline, separating hot from cold data, and vertical scale. The second is read load saturating the single primary, solved with a read replica and a staleness classification. The third is one table growing too large, solved by partitioning and archiving. The fourth is write load saturating the primary, which requires sharding. The fifth is the data layer having to separate from the application. The last two steps are by far the most expensive.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/veri-yogunluklu-sistemler-kirilma-noktalari.GmvhhtO7.jpg</image:loc><image:title>Scale Breaking Points in Data-Intensive Systems — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/gpu-finops-with-ebpf/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/ebpf-ile-gpu-finops/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/gpu-finops-with-ebpf/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/ebpf-ile-gpu-finops/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/gpu-finops-with-ebpf.svg</image:loc><image:caption>Two different questions, two different tools. eBPF can issue the bill; DCGM tells you whether the bill was deserved.</image:caption><image:title>Two separate measurement paths for GPU chargeback: the GPU is invisible to existing CPU and RAM metrics. eBPF watches the syscall boundary and sees the control plane — who opened the device and for how long — attributing work to a pod, which answers the “who, how much” question and produces the bill. DCGM measures inside the silicon from userspace — SM utilisation, memory, power — and answers “how well did it run”. Real chargeback joins both on pod identity: a team’s spend and its efficiency together.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/ebpf-ile-gpu-finops.cL72w7Rv.jpg</image:loc><image:title>GPU FinOps with eBPF — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/laravel-production-stack/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/laravel-production-stack/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/laravel-production-stack/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/laravel-production-stack/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/laravel-production-stack.svg</image:loc><image:caption>Every box does one job on its own; what you lose by removing each is in the table at the end of the article.</image:caption><image:title>Request flow through a Laravel production stack: from Cloudflare (DDoS, WAF, CDN, TLS) to Nginx, then to PHP-FPM with opcache and preload enabled. PHP-FPM reaches three backing services: PostgreSQL behind pgBouncer, Redis serving cache, session and lock duties, and RabbitMQ for the durable queue. Horizon workers under Supervisor consume from RabbitMQ.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/laravel-production-stack.1Yoiu4Gk.jpg</image:loc><image:title>Laravel Production Stack — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/polyglot-queue-distributed-tracing/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/polyglot-kuyrukta-dagitik-izleme/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/polyglot-queue-distributed-tracing/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/polyglot-kuyrukta-dagitik-izleme/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/polyglot-queue-distributed-tracing.svg</image:loc><image:caption>The trace was inside trace_id all along: a UUID and an OTel TraceID are the same sixteen bytes.</image:caption><image:title>How distributed tracing works across a polyglot queue: PHP, Go and Python services all produce and consume the same frozen envelope. The trace_id the envelope already carries is a UUID, which is exactly 16 bytes. An OpenTelemetry TraceID is also exactly 16 bytes, so the two map one to one — drop the dashes, read 32 hex characters — and every hop lands in the same trace with no change to the wire format. The limit this first phase accepts: because no span id travels on the wire, cross-hop parenthood rests on a synthetic ghost span and the hierarchy stays flat under one trace.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/polyglot-queue-distributed-tracing.CCy2PF3j.jpg</image:loc><image:title>Distributed Tracing Across a Polyglot Queue — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/race-conditions-and-gaps-in-sequential-numbering/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/ardisik-numara-uretiminde-race-condition-ve-gap/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/race-conditions-and-gaps-in-sequential-numbering/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/ardisik-numara-uretiminde-race-condition-ve-gap/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/race-conditions-and-gaps-in-sequential-numbering.svg</image:loc><image:caption>Generate the number late and you get a race; generate it early and you get a gap. Reservation closes both — as long as the lock stays outside the external call.</image:caption><image:title>Order of a just-in-time reservation for sequential numbering: N parallel workers pick jobs off the queue, the counter row is advanced under a lock held for single-digit milliseconds only, the reserved number is written to the draft invoice and committed early, and the lock is released there. The external integrator call — which may be slow — happens outside the lock. On success the number is used; on failure or cancellation the reserved number is preserved and the retry reuses it, so the series gets neither duplicates nor gaps.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/sequential-numbering-jit-reservation.C6aDkIO6.jpg</image:loc><image:title>Race Conditions and Gaps in Sequential Numbering: JIT Reservation — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/single-vps-multi-project-architecture/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/tek-vps-coklu-proje-mimarisi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/single-vps-multi-project-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/tek-vps-coklu-proje-mimarisi/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/single-vps-multi-project-architecture.svg</image:loc><image:caption>One machine, three independent applications: isolation at the process and user level, sharing at the data layer.</image:caption><image:title>Layers of a single-VPS architecture: traffic on 80/443 enters Nginx, which dispatches over unix sockets to a separate PHP-FPM pool per project (billing, notify, blog — each running as its own unix user), and all three pools reach shared services over localhost: PostgreSQL behind pgBouncer with a separate database and role per project, a Redis instance isolated by key prefix, and Supervisor running one queue worker group per project.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/tek-vps-coklu-proje-mimarisi.yWxb7d5T.jpg</image:loc><image:title>Multiple Projects on a Single VPS — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/transactional-outbox-dual-write-and-idempotent-consumption/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/transactional-outbox-dual-write-ve-idempotent-tuketim/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/transactional-outbox-dual-write-and-idempotent-consumption/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/transactional-outbox-dual-write-ve-idempotent-tuketim/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/transactional-outbox-dual-write-and-idempotent-consumption.svg</image:loc><image:caption>The outbox reduces dual-write to a single write; what it buys you is at-least-once, not exactly-once.</image:caption><image:title>Transactional outbox flow: the application writes the business row and the outbox row inside one transaction, removing the dual-write that the broker was never part of. A separate relay reads pending rows with SKIP LOCKED, publishes to RabbitMQ, and only then stamps them published — an order that prevents lost events but produces at-least-once redelivery. The consumer suppresses repeats by recording every event id in a processed_messages table and applies the business effect exactly once.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/transactional-outbox-dual-write-idempotent-consumption.Cy1faj4g.jpg</image:loc><image:title>Transactional Outbox: Dual-Write, At-Least-Once, and Idempotent Consumption — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/systems/zero-static-authority-multi-cluster-gitops/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/cok-kumeli-gitops-sifir-statik-yetki/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/zero-static-authority-multi-cluster-gitops/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/cok-kumeli-gitops-sifir-statik-yetki/"/><image:image><image:loc>https://sade.dev/diagrams/systems/en/zero-static-authority-multi-cluster-gitops.svg</image:loc><image:caption>A kubeconfig on disk is a long-lived credential aimed at your whole fleet. It is replaced by an SVID that expires in an hour and is never written down.</image:caption><image:title>The chain that removes static authority from multi-cluster GitOps: desired state lives in the Git repository, the GitOps controller on the hub cluster applies it and draws its identity from SPIRE’s Workload API. Through node attestation SPIRE issues the controller a workload SVID that lives about an hour and is never written to disk. Trust domain federation lets the spoke clusters’ apiservers accept that SVID over OIDC. The long-lived kubeconfig Secrets sitting on disk with authority over the whole fleet are then deleted outright.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/cok-kumeli-gitops-sifir-statik-yetki.DcG8HWjp.jpg</image:loc><image:title>Zero Static Authority in Multi-Cluster GitOps — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/en/tags/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/ai-workflow/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/api/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/architecture/</loc><lastmod>2026-09-02T19:36:54.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/database/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/decisions/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/messaging/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/opinion/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/performance/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/postgresql/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/production/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/queue/</loc><lastmod>2026-09-02T19:36:54.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/redis/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/reliability/</loc><lastmod>2026-09-02T19:36:54.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/schema/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/security/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tags/simplicity/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/terms/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/terms/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/terms/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/terms/"/></url><url><loc>https://sade.dev/en/tools/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/en/tools/backoff-calculator/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/backoff-calculator/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/backoff-calculator/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/backoff-calculator/"/></url><url><loc>https://sade.dev/en/tools/base64/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/base64/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/base64/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/base64/"/></url><url><loc>https://sade.dev/en/tools/env-parser/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/env-parser/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/env-parser/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/env-parser/"/></url><url><loc>https://sade.dev/en/tools/http-status/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/http-status/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/http-status/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/http-status/"/></url><url><loc>https://sade.dev/en/tools/json-formatter/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/json-formatter/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/json-formatter/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/json-formatter/"/></url><url><loc>https://sade.dev/en/tools/jwt-decoder/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/jwt-decoder/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/jwt-decoder/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/jwt-decoder/"/></url><url><loc>https://sade.dev/en/tools/password-generator/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/password-generator/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/password-generator/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/password-generator/"/></url><url><loc>https://sade.dev/en/tools/schema-compat/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/schema-compat/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/schema-compat/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/schema-compat/"/></url><url><loc>https://sade.dev/en/tools/timestamp/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/timestamp/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/timestamp/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/timestamp/"/></url><url><loc>https://sade.dev/en/tools/url-parser/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/url-parser/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/url-parser/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/url-parser/"/></url><url><loc>https://sade.dev/en/tools/uuid/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/uuid/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/uuid/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/uuid/"/></url><url><loc>https://sade.dev/tr/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/about/</loc><lastmod>2026-08-30T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/about/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/about/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/about/"/></url><url><loc>https://sade.dev/tr/cookies/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/cookies/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/cookies/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/cookies/"/></url><url><loc>https://sade.dev/tr/glossary/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/journal/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/journal/ai-assisted-engineering-workflow/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/ai-assisted-engineering-workflow/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/ai-assisted-engineering-workflow/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/ai-assisted-engineering-workflow/"/><image:image><image:loc>https://sade.dev/_astro/ai-assisted-engineering-workflow.DH576_f3.jpg</image:loc><image:title>AI-Assisted Engineering Workflow&apos;um — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/ai-darbogazi-kaldirmadi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/ai-darbogazi-kaldirmadi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/ai-didnt-remove-the-bottleneck/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/ai-darbogazi-kaldirmadi/"/><image:image><image:loc>https://sade.dev/_astro/ai-bottleneck-shift.85aM1CAy.jpg</image:loc><image:title>AI Darboğazı Kaldırmadı, Yerini Değiştirdi — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/gereginden-karmasik-sistem-sinyalleri/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/gereginden-karmasik-sistem-sinyalleri/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/signals-of-an-over-complex-system/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/gereginden-karmasik-sistem-sinyalleri/"/><image:image><image:loc>https://sade.dev/_astro/gereginden-karmasik-sistem-sinyalleri.BOBt36co.jpg</image:loc><image:title>Bir Sistemin &quot;Gereğinden Karmaşık&quot; Olduğunu Gösteren Sinyaller — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/gitflow-mu-github-flow-mu/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/gitflow-mu-github-flow-mu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/gitflow-vs-github-flow/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/gitflow-mu-github-flow-mu/"/><image:image><image:loc>https://sade.dev/_astro/gitflow-mu-github-flow-mu.XINmOnb0.jpg</image:loc><image:title>Gitflow mu, GitHub Flow mu? Neye Göre Seçiyorum? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/ileride-lazim-olur-kodunun-faturasi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/ileride-lazim-olur-kodunun-faturasi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/the-cost-of-just-in-case-code/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/ileride-lazim-olur-kodunun-faturasi/"/><image:image><image:loc>https://sade.dev/_astro/ileride-lazim-olur-kodunun-faturasi._e1TVcWL.jpg</image:loc><image:title>&quot;İleride Lazım Olur&quot; Kodunun Production Faturası — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/kararsiz-testler-ve-determinizm/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/kararsiz-testler-ve-determinizm/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/flaky-tests-and-determinism/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/kararsiz-testler-ve-determinizm/"/><image:image><image:loc>https://sade.dev/_astro/flaky-tests-determinism.Bam2RNDx.jpg</image:loc><image:title>Kararsız Testler: Retry Çözüm Değil — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/katmanli-mimari-mi-clean-architecture-mi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/katmanli-mimari-mi-clean-architecture-mi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/layered-vs-clean-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/katmanli-mimari-mi-clean-architecture-mi/"/><image:image><image:loc>https://sade.dev/_astro/katmanli-mimari-mi-clean-architecture-mi.x60OgWFx.jpg</image:loc><image:title>Katmanlı Mimari mi, Clean Architecture mı? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/mikroservise-ne-zaman-gecerim/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/mikroservise-ne-zaman-gecerim/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/when-i-move-to-microservices/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/mikroservise-ne-zaman-gecerim/"/><image:image><image:loc>https://sade.dev/_astro/mikroservise-ne-zaman-gecerim.D6wWXZyd.jpg</image:loc><image:title>Mikroservise Ne Zaman Geçerim? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/mimari-kararlar-curur/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/mimari-kararlar-curur/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/architecture-decisions-rot/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/mimari-kararlar-curur/"/><image:image><image:loc>https://sade.dev/_astro/executable-architecture.YwQcM_e2.jpg</image:loc><image:title>Mimari Kararların Çürüyor Çünkü Onları Hiçbir Şey Çalıştırmıyor — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/neden-boring-architecture/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/neden-boring-architecture/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/why-boring-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/neden-boring-architecture/"/><image:image><image:loc>https://sade.dev/_astro/neden-boring-architecture.D5cYmPZA.jpg</image:loc><image:title>Neden Boring Architecture&apos;ı Tercih Ediyorum — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/nosql-tuzagi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/nosql-tuzagi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/the-nosql-trap/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/nosql-tuzagi/"/><image:image><image:loc>https://sade.dev/_astro/nosql-tuzagi.CCNNSW6L.jpg</image:loc><image:title>NoSQL Tuzağı: &quot;Şeması Yok&quot; Diye Başlamak — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/postgresql-her-seye-yeter-mi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/postgresql-her-seye-yeter-mi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/is-postgresql-enough-for-everything/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/postgresql-her-seye-yeter-mi/"/><image:image><image:loc>https://sade.dev/_astro/postgresql-her-seye-yeter-mi.BxOS3_0K.jpg</image:loc><image:title>PostgreSQL Her Şeye Yeter mi? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/projelere-neden-moduler-monolit-ile-basliyorum/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/projelere-neden-moduler-monolit-ile-basliyorum/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/why-i-start-with-a-modular-monolith/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/projelere-neden-moduler-monolit-ile-basliyorum/"/><image:image><image:loc>https://sade.dev/_astro/projelere-neden-moduler-monolit-ile-basliyorum.GPVqis8x.jpg</image:loc><image:title>Projelere Neden Modüler Monolit ile Başlıyorum? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/sema-evrimi-sozlesmeyi-kirmadan/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/sema-evrimi-sozlesmeyi-kirmadan/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/schema-evolution-without-breaking/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/sema-evrimi-sozlesmeyi-kirmadan/"/><image:image><image:loc>https://sade.dev/_astro/schema-evolution.DWacV6hD.jpg</image:loc><image:title>Şema Evrimi: Sözleşmeyi Kırmadan Değiştirmek — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/trunk-based-ne-zaman-geciyorum/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/trunk-based-ne-zaman-geciyorum/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/when-i-switch-to-trunk-based/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/trunk-based-ne-zaman-geciyorum/"/><image:image><image:loc>https://sade.dev/_astro/trunk-based-ne-zaman-geciyorum.84rFjFnq.jpg</image:loc><image:title>Trunk-Based Development&apos;a Ne Zaman Geçiyorum? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/journal/vibe-coding-ile-production/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/journal/vibe-coding-ile-production/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/journal/can-you-ship-vibe-coded-to-production/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/journal/vibe-coding-ile-production/"/><image:image><image:loc>https://sade.dev/_astro/vibe-coding-ile-production.DaGSFmxY.jpg</image:loc><image:title>Vibe Coding ile Production&apos;a Çıkılır mı? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/notes/bff-backend-for-frontend/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/bff-backend-for-frontend/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/bff-backend-for-frontend/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/bff-backend-for-frontend/"/><image:image><image:loc>https://sade.dev/_astro/bff-backend-for-frontend.BkSSou5k.jpg</image:loc><image:title>BFF Pattern: Mobil ve Web İçin Ayrı API Katmanı — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/circuit-breaker-dis-servis-entegrasyonu/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/circuit-breaker-dis-servis-entegrasyonu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/circuit-breaker-external-service-integration/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/circuit-breaker-dis-servis-entegrasyonu/"/><image:image><image:loc>https://sade.dev/_astro/circuit-breaker-dis-servis-entegrasyonu.DIkkqgha.jpg</image:loc><image:title>Dış Servis Entegrasyonlarında Circuit Breaker — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/dead-letter-kuyrugunu-guvenle-replay-etmek/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/dead-letter-kuyrugunu-guvenle-replay-etmek/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/replaying-a-dead-letter-queue/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/dead-letter-kuyrugunu-guvenle-replay-etmek/"/><image:image><image:loc>https://sade.dev/_astro/replaying-a-dead-letter-queue.CWCTcULN.jpg</image:loc><image:title>Dead-Letter Kuyruğunu Daha Kötü Yapmadan Replay Etmek — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/dogru-cache-stratejisi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/dogru-cache-stratejisi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/the-right-cache-strategy/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/dogru-cache-stratejisi/"/><image:image><image:loc>https://sade.dev/_astro/dogru-cache-stratejisi.CyjXSQDU.jpg</image:loc><image:title>Redis Koymadan Önce: Doğru Cache Stratejisi — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/event-driven-mimari-ne-zaman/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/event-driven-mimari-ne-zaman/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/when-event-driven-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/event-driven-mimari-ne-zaman/"/><image:image><image:loc>https://sade.dev/_astro/event-driven-mimari-ne-zaman.BXDxkXxl.jpg</image:loc><image:title>Event-Driven Mimari: Ne Zaman Kurtarır, Ne Zaman Karmaşıklaştırır? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/idempotency-ayni-mesaj-iki-kez/</loc><lastmod>2026-09-02T19:15:21.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/idempotency-ayni-mesaj-iki-kez/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/idempotency-duplicate-delivery/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/idempotency-ayni-mesaj-iki-kez/"/><image:image><image:loc>https://sade.dev/_astro/idempotency-duplicate-delivery.DTYbxLtJ.jpg</image:loc><image:title>Idempotency: Aynı Mesaj İki Kez Geldiğinde — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/indeks-yonetimi/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/indeks-yonetimi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/index-management/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/indeks-yonetimi/"/><image:image><image:loc>https://sade.dev/_astro/indeks-yonetimi.D20IsWTo.jpg</image:loc><image:title>İndeks Yönetimi: Eksik Yavaşlatır, Fazlası Yazmayı Öldürür — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/laravel-queue-production-yavaslama/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/laravel-queue-production-yavaslama/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/laravel-queue-production-slowdown/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/laravel-queue-production-yavaslama/"/><image:image><image:loc>https://sade.dev/_astro/laravel-queue-production-yavaslama.CIbvna8o.jpg</image:loc><image:title>Laravel Queue Production&apos;da Neden Yavaşlar? — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/nginx-php-fpm-pool-ayrimi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/nginx-php-fpm-pool-ayrimi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/nginx-php-fpm-pool-separation/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/nginx-php-fpm-pool-ayrimi/"/><image:image><image:loc>https://sade.dev/_astro/nginx-php-fpm-pool-ayrimi.CvcaFm0K.jpg</image:loc><image:title>Nginx + PHP-FPM Pool Ayrımı — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/pgbackrest-postgresql-backup-stratejisi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/pgbackrest-postgresql-backup-stratejisi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/pgbackrest-postgresql-backup-strategy/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/pgbackrest-postgresql-backup-stratejisi/"/><image:image><image:loc>https://sade.dev/_astro/pgbackrest-postgresql-backup-stratejisi.DRsZpLiS.jpg</image:loc><image:title>pgBackRest ile PostgreSQL Backup Stratejisi — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/pgbouncer-auth-query/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/pgbouncer-auth-query/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/pgbouncer-auth-query/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/pgbouncer-auth-query/"/><image:image><image:loc>https://sade.dev/_astro/pgbouncer-auth-query.BrIjf_Ar.jpg</image:loc><image:title>pgBouncer auth_query ile Çoklu DB Kullanıcısı — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/read-write-splitting/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/read-write-splitting/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/read-write-splitting/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/read-write-splitting/"/><image:image><image:loc>https://sade.dev/_astro/read-write-splitting.D40FaGF4.jpg</image:loc><image:title>Read/Write Splitting: Okuma ve Yazma Yükünü Ayırmak — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/semayi-kuyrugun-kenarinda-dogrulamak/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/semayi-kuyrugun-kenarinda-dogrulamak/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/validate-schema-at-the-edge/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/semayi-kuyrugun-kenarinda-dogrulamak/"/><image:image><image:loc>https://sade.dev/_astro/validate-schema-at-the-edge.DGFunoOX.jpg</image:loc><image:title>Şemayı Kuyruğun Kenarında Doğrulamak — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/senkron-mu-asenkron-mu/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/senkron-mu-asenkron-mu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/sync-vs-async/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/senkron-mu-asenkron-mu/"/><image:image><image:loc>https://sade.dev/_astro/senkron-mu-asenkron-mu.2PLCA7O2.jpg</image:loc><image:title>Senkron mu, Asenkron mu? HTTP ile Kuyruk Arasındaki Sınır — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/serverless-gecis-karari/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/serverless-gecis-karari/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/serverless-migration-decision/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/serverless-gecis-karari/"/><image:image><image:loc>https://sade.dev/_astro/serverless-gecis-karari.BHdDXKxn.jpg</image:loc><image:title>Serverless&apos;a Geçiş Kararı: Cold-Start ve Vendor Lock-in — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/shared-redis-namespace-izolasyonu/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/shared-redis-namespace-izolasyonu/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/shared-redis-namespace-isolation/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/shared-redis-namespace-izolasyonu/"/><image:image><image:loc>https://sade.dev/_astro/shared-redis-namespace-izolasyonu.F_LQvxI5.jpg</image:loc><image:title>Shared Redis Kullanırken Namespace İzolasyonu — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/notes/zero-downtime-veritabani-gocleri/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/notes/zero-downtime-veritabani-gocleri/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/notes/zero-downtime-database-migrations/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/notes/zero-downtime-veritabani-gocleri/"/><image:image><image:loc>https://sade.dev/_astro/zero-downtime-veritabani-gocleri.DrRLXSS-.jpg</image:loc><image:title>Canlıda Sıfır Kesintiyle Şema Değiştirmek — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/privacy/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/privacy/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/privacy/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/privacy/"/></url><url><loc>https://sade.dev/tr/series/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/series/postgresql-in-production/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/stack/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/stack/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/stack/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/stack/"/></url><url><loc>https://sade.dev/tr/systems/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/systems/ardisik-numara-uretiminde-race-condition-ve-gap/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/ardisik-numara-uretiminde-race-condition-ve-gap/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/race-conditions-and-gaps-in-sequential-numbering/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/ardisik-numara-uretiminde-race-condition-ve-gap/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/ardisik-numara-uretiminde-race-condition-ve-gap.svg</image:loc><image:caption>Numarayı geç üretmek race, erken üretmek gap doğurur. Rezervasyon ikisini de kapatır — kilit dış çağrının dışında kaldığı sürece.</image:caption><image:title>Ardışık numara üretiminde JIT rezervasyon sırası: kuyruktan gelen işi N paralel worker alır, sayaç satırı yalnızca tek haneli milisaniyeler süren bir kilitle ilerletilir, rezerve edilen numara taslak faturaya yazılıp erken commit edilir ve kilit orada açılır. Yavaş olabilen entegratör API çağrısı kilidin dışında yapılır. Çağrı başarılıysa numara kullanılmış olur; hata veya iptal durumunda rezerve edilen numara korunur ve retry aynı numarayla döner, böylece ne mükerrer numara ne de seride boşluk oluşur.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/sequential-numbering-jit-reservation.C6aDkIO6.jpg</image:loc><image:title>Ardışık Numara Üretiminde Race Condition ve Gap: JIT Rezervasyon — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/cok-kumeli-gitops-sifir-statik-yetki/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/cok-kumeli-gitops-sifir-statik-yetki/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/zero-static-authority-multi-cluster-gitops/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/cok-kumeli-gitops-sifir-statik-yetki/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/cok-kumeli-gitops-sifir-statik-yetki.svg</image:loc><image:caption>Diskte duran bir kubeconfig, filonuza nişan almış uzun ömürlü bir kimliktir. Yerine bir saatte sona eren, hiç yazılmayan bir SVID koyulur.</image:caption><image:title>Çok kümeli GitOps’ta statik yetkiyi kaldıran zincir: desired state Git deposunda durur, hub kümedeki GitOps controller onu uygular ve kimliğini SPIRE’ın Workload API’sinden alır. SPIRE node attestation ile controller’a yaklaşık bir saat ömürlü, diske hiç yazılmayan bir workload SVID basar. Trust domain federasyonu sayesinde spoke kümelerin apiserver’ları bu SVID’yi OIDC üzerinden kabul eder. Böylece diskte duran, uzun ömürlü ve tüm filoya yetkili kubeconfig Secret’ları tamamen silinir.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/cok-kumeli-gitops-sifir-statik-yetki.DcG8HWjp.jpg</image:loc><image:title>Çok Kümeli GitOps’ta Sıfır Statik Yetki — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/ebpf-ile-gpu-finops/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/ebpf-ile-gpu-finops/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/gpu-finops-with-ebpf/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/ebpf-ile-gpu-finops/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/ebpf-ile-gpu-finops.svg</image:loc><image:caption>İki farklı soru, iki farklı araç. eBPF faturayı kesebilir, DCGM faturanın haklı olup olmadığını söyler.</image:caption><image:title>GPU chargeback’in iki ayrı ölçüm yolu: GPU, mevcut CPU ve RAM metriklerine görünmez. eBPF syscall sınırını izleyerek kontrol düzlemini — cihazı kimin açtığını, ne kadar tuttuğunu — görür ve işi bir pod’a atfeder; bu “kim, ne kadar” sorusunu, yani faturayı cevaplar. DCGM ise userspace’ten silikonun içini — SM kullanımı, bellek, güç — ölçer ve “ne kadar iyi koştu” sorusunu cevaplar. Gerçek bir chargeback ikisini pod kimliğinde birleştirir: ekibin hem harcaması hem verimliliği.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/ebpf-ile-gpu-finops.cL72w7Rv.jpg</image:loc><image:title>eBPF ile GPU FinOps — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/laravel-production-stack/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/laravel-production-stack/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/laravel-production-stack/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/laravel-production-stack/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/laravel-production-stack.svg</image:loc><image:caption>Her kutu bir işi tek başına yapar; birini çıkardığınızda ne kaybettiğiniz yazının sonundaki tabloda.</image:caption><image:title>Laravel production stack’inin akışı: istek Cloudflare’den (DDoS, WAF, CDN, TLS) Nginx’e, oradan opcache ve preload açık PHP-FPM’e gider. PHP-FPM üç arka servise bağlanır: pgBouncer arkasında PostgreSQL, cache/session/lock rollerini üstlenen Redis ve kalıcı kuyruk için RabbitMQ. RabbitMQ’dan mesajları Supervisor altında çalışan Horizon worker’ları çeker.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/laravel-production-stack.1Yoiu4Gk.jpg</image:loc><image:title>Laravel Production Stack — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/polyglot-kuyrukta-dagitik-izleme/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/polyglot-kuyrukta-dagitik-izleme/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/polyglot-queue-distributed-tracing/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/polyglot-kuyrukta-dagitik-izleme/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/polyglot-kuyrukta-dagitik-izleme.svg</image:loc><image:caption>Trace baştan beri trace_id’nin içindeydi: bir UUID ile bir OTel TraceID aynı on altı byte.</image:caption><image:title>Polyglot bir kuyrukta dağıtık izlemenin mekanizması: PHP, Go ve Python servisleri aynı donmuş envelope’u üretir ve tüketir. Envelope’un zaten taşıdığı trace_id alanı bir UUID’dir, yani tam olarak 16 byte. OpenTelemetry’de bir TraceID de tam olarak 16 byte olduğu için tireler atılıp 32 hex karakter okunarak birebir eşlenir; her hop aynı trace’e iner ve tel formatı hiç değişmez. Bu birinci fazın kabul ettiği sınır: span id telde taşınmadığı için hop’lar arası ebeveynlik sentetik bir hayalet span’e dayanır, hiyerarşi tek trace altında düz kalır.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/polyglot-queue-distributed-tracing.CCy2PF3j.jpg</image:loc><image:title>Polyglot Bir Kuyrukta Dağıtık İzleme — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/tek-vps-coklu-proje-mimarisi/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/tek-vps-coklu-proje-mimarisi/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/single-vps-multi-project-architecture/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/tek-vps-coklu-proje-mimarisi/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/tek-vps-coklu-proje-mimarisi.svg</image:loc><image:caption>Bir makine, üç bağımsız uygulama: izolasyon süreç ve kullanıcı seviyesinde, paylaşım veri katmanında.</image:caption><image:title>Tek VPS mimarisinin katmanları: 80/443 trafiği Nginx’e girer, Nginx unix soket üzerinden proje başına ayrı PHP-FPM pool’larına dağıtır (billing, notify, blog — her biri kendi unix kullanıcısıyla), üç pool da localhost üzerinden paylaşılan servislere bağlanır: pgBouncer arkasında PostgreSQL (proje başına ayrı database ve role), prefix ile izole edilmiş Redis ve proje başına queue worker çalıştıran Supervisor.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/tek-vps-coklu-proje-mimarisi.yWxb7d5T.jpg</image:loc><image:title>Tek VPS Üzerinde Çoklu Proje Mimarisi — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/transactional-outbox-dual-write-ve-idempotent-tuketim/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/transactional-outbox-dual-write-ve-idempotent-tuketim/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/transactional-outbox-dual-write-and-idempotent-consumption/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/transactional-outbox-dual-write-ve-idempotent-tuketim/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/transactional-outbox-dual-write-ve-idempotent-tuketim.svg</image:loc><image:caption>Outbox dual-write’ı tek write’a indirir; karşılığında aldığınız garanti exactly-once değil, at-least-once’tur.</image:caption><image:title>Transactional outbox akışı: uygulama iş satırını ve outbox satırını tek bir transaction içinde yazar, böylece broker’ı kapsamayan dual-write ortadan kalkar. Ayrı bir relay, SKIP LOCKED ile pending satırları okuyup RabbitMQ’ya publish eder ve ancak başarıdan sonra published damgası vurur; bu sıra kayıp event’i önler ama at-least-once tekrar üretir. Tüketici her event id’sini processed_messages tablosuna yazarak tekrarı bastırır ve iş etkisini tam bir kez uygular.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/transactional-outbox-dual-write-idempotent-consumption.Cy1faj4g.jpg</image:loc><image:title>Transactional Outbox: Dual-Write, At-Least-Once ve İdempotent Tüketim — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/systems/veri-yogunluklu-sistemler-kirilma-noktalari/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/systems/veri-yogunluklu-sistemler-kirilma-noktalari/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/systems/data-intensive-systems-breaking-points/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/systems/veri-yogunluklu-sistemler-kirilma-noktalari/"/><image:image><image:loc>https://sade.dev/diagrams/systems/tr/veri-yogunluklu-sistemler-kirilma-noktalari.svg</image:loc><image:caption>Veri yükü kademeli değil, ayrık noktalarda kırılır. Sıra önemli: pahalı adımı erken almak, ucuz adımı hiç almamış olmaktır.</image:caption><image:title>Veri yoğunluklu bir sistemin kırılma noktaları, ucuzdan pahalıya sıralı: başlangıç durumu PHP-FPM, pgBouncer ve tek bir PostgreSQL primary ile Redis’tir. Birinci kırılma working set’in RAM’e sığmamasıdır ve index disiplini, sıcak-soğuk veri ayrımı ve vertical scale ile çözülür. İkincisi okuma yükünün tek primary’yi doyurmasıdır, çözümü read replica ve bayatlık sınıflandırmasıdır. Üçüncüsü tek bir tablonun fazla büyümesidir, çözümü partition ve arşivlemedir. Dördüncüsü yazma yükünün primary’yi doyurmasıdır ve sharding gerektirir. Beşincisi veri katmanının uygulamadan ayrılmasıdır. Son iki adım açık ara en pahalı olanlardır.</image:title></image:image><image:image><image:loc>https://sade.dev/_astro/veri-yogunluklu-sistemler-kirilma-noktalari.GmvhhtO7.jpg</image:loc><image:title>Veri Yoğunluklu Sistemlerde Ölçek Kırılma Noktaları — sade.dev</image:title></image:image></url><url><loc>https://sade.dev/tr/tags/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/ai-workflow/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/api/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/architecture/</loc><lastmod>2026-09-02T19:15:21.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/database/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/decisions/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/messaging/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/opinion/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/performance/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/postgresql/</loc><lastmod>2026-09-05T00:00:00.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/production/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/queue/</loc><lastmod>2026-09-02T19:15:21.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/redis/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/reliability/</loc><lastmod>2026-09-02T19:15:21.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/schema/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/security/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tags/simplicity/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/terms/</loc><lastmod>2026-08-08T00:00:00.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/terms/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/terms/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/terms/"/></url><url><loc>https://sade.dev/tr/tools/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod></url><url><loc>https://sade.dev/tr/tools/backoff-calculator/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/backoff-calculator/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/backoff-calculator/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/backoff-calculator/"/></url><url><loc>https://sade.dev/tr/tools/base64/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/base64/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/base64/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/base64/"/></url><url><loc>https://sade.dev/tr/tools/env-parser/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/env-parser/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/env-parser/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/env-parser/"/></url><url><loc>https://sade.dev/tr/tools/http-status/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/http-status/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/http-status/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/http-status/"/></url><url><loc>https://sade.dev/tr/tools/json-formatter/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/json-formatter/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/json-formatter/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/json-formatter/"/></url><url><loc>https://sade.dev/tr/tools/jwt-decoder/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/jwt-decoder/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/jwt-decoder/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/jwt-decoder/"/></url><url><loc>https://sade.dev/tr/tools/password-generator/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/password-generator/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/password-generator/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/password-generator/"/></url><url><loc>https://sade.dev/tr/tools/schema-compat/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/schema-compat/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/schema-compat/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/schema-compat/"/></url><url><loc>https://sade.dev/tr/tools/timestamp/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/timestamp/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/timestamp/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/timestamp/"/></url><url><loc>https://sade.dev/tr/tools/url-parser/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/url-parser/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/url-parser/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/url-parser/"/></url><url><loc>https://sade.dev/tr/tools/uuid/</loc><lastmod>2026-08-30T04:20:41.000Z</lastmod><xhtml:link rel="alternate" hreflang="tr" href="https://sade.dev/tr/tools/uuid/"/><xhtml:link rel="alternate" hreflang="en" href="https://sade.dev/en/tools/uuid/"/><xhtml:link rel="alternate" hreflang="x-default" href="https://sade.dev/tr/tools/uuid/"/></url></urlset>