<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://karuifeather.com/</loc></url>
  <url><loc>https://karuifeather.com/portfolio</loc></url>
  <url><loc>https://karuifeather.com/blog</loc></url>
  <url><loc>https://karuifeather.com/contact</loc></url>
  <url><loc>https://karuifeather.com/blog/who-owns-the-deadline-in-a-chain-of-microservice-calls</loc><lastmod>2026-10-08T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/how-do-you-change-a-live-database-schema-while-old-and-new-application-versions-are-both-running</loc><lastmod>2026-09-27T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/when-does-network-redundancy-fail-because-the-bottleneck-moved-somewhere-else</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/why-can-a-successful-kubernetes-rolling-deployment-still-drop-requests</loc><lastmod>2026-07-11T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/how-do-you-commit-a-database-change-and-publish-an-event-without-lying-to-either-system</loc><lastmod>2026-05-06T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/why-isnt-authentication-enough-to-prevent-cross-tenant-data-leaks</loc><lastmod>2026-09-12T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/what-happens-when-serverless-compute-scales-faster-than-the-system-behind-it</loc><lastmod>2026-09-22T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/why-can-a-healthy-dashboard-hide-a-failing-distributed-system</loc><lastmod>2026-03-03T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/what-does-correct-reconnection-mean-in-a-local-first-collaborative-application</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/why-doesnt-more-concurrency-mean-more-throughput-in-a-java-service</loc><lastmod>2026-02-17T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/what-does-rising-kafka-consumer-lag-actually-mean-and-why-can-adding-consumers-make-it-worse</loc><lastmod>2025-06-11T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/optimizing-cloudfront-for-automatic-cache-invalidation-on-aws</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/when-does-a-cache-become-a-reliability-dependency-instead-of-a-performance-optimization</loc><lastmod>2026-11-13T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/why-can-a-cassandra-data-model-work-for-months-and-then-collapse-at-the-tail</loc><lastmod>2024-03-02T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/how-accurate-should-a-distributed-rate-limiter-be-when-the-limiter-itself-can-fail</loc><lastmod>2026-08-11T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/when-do-retries-stop-improving-reliability-and-start-amplifying-an-outage</loc><lastmod>2025-03-01T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/where-does-kafkas-exactly-once-guarantee-actually-end</loc><lastmod>2026-05-02T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/blog/how-do-you-build-a-webhook-consumer-that-remains-correct-when-delivery-is-not</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/portfolio/featherly</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/portfolio/featherpad</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/portfolio/featherpunch</loc><lastmod>2026-09-25T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/portfolio/feathereko</loc><lastmod>2026-09-23T00:00:00.000Z</lastmod></url>
  <url><loc>https://karuifeather.com/portfolio/featherspace</loc><lastmod>2026-09-23T00:00:00.000Z</lastmod></url>
</urlset>
