<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog — Ventsislav Arnaudov</title>
    <link>https://varnaudov.com/en/blog/</link>
    <description>Articles on backend architecture, e-commerce SaaS and production systems.</description>
    <language>en</language>
    <lastBuildDate>Mon, 21 Sep 2026 17:22:32 GMT</lastBuildDate>
    <atom:link href="https://varnaudov.com/en/blog/rss.xml" rel="self" type="application/rss+xml"/>
    <item>
      <title>How I Built a Multi-Tenant E-commerce SaaS with Go</title>
      <link>https://varnaudov.com/en/blog/multi-tenant-ecommerce-saas-go/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/multi-tenant-ecommerce-saas-go/</guid>
      <pubDate>Mon, 21 Sep 2026 00:00:00 GMT</pubDate>
      <description>Architecture notes on building a multi-tenant e-commerce SaaS with Go, PostgreSQL, Redis and NATS — tenant isolation, request flow and lessons learned.</description>
    </item>
    <item>
      <title>Designing Background Workers in Go with NATS</title>
      <link>https://varnaudov.com/en/blog/background-workers-go-nats/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/background-workers-go-nats/</guid>
      <pubDate>Mon, 14 Sep 2026 00:00:00 GMT</pubDate>
      <description>How to move email, imports, exports and integrations off the HTTP request path using Go workers and NATS — retries, idempotency and graceful shutdown.</description>
    </item>
    <item>
      <title>Building Reliable Payment Integrations: Lessons from Production</title>
      <link>https://varnaudov.com/en/blog/reliable-payment-integrations/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/reliable-payment-integrations/</guid>
      <pubDate>Mon, 07 Sep 2026 00:00:00 GMT</pubDate>
      <description>Production lessons for payment integrations — checkout flow, webhooks, signature verification, duplicates, idempotency and payment state machines.</description>
    </item>
    <item>
      <title>Redis in Production: Caching, Queues and the Mistakes to Avoid</title>
      <link>https://varnaudov.com/en/blog/redis-in-production/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/redis-in-production/</guid>
      <pubDate>Mon, 31 Aug 2026 00:00:00 GMT</pubDate>
      <description>Real Redis usage in production — cache invalidation, TTL, locks, rate limiting, memory and what happens when Redis goes down.</description>
    </item>
    <item>
      <title>Designing a Scalable Product Import System for E-commerce</title>
      <link>https://varnaudov.com/en/blog/scalable-product-import-ecommerce/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/scalable-product-import-ecommerce/</guid>
      <pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate>
      <description>How to design product imports for large catalogs — CSV/XML/JSON/XLSX, mapping, validation, workers, batching, progress and memory-safe processing.</description>
    </item>
    <item>
      <title>How to Design Idempotent APIs and Why They Matter</title>
      <link>https://varnaudov.com/en/blog/idempotent-apis/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/idempotent-apis/</guid>
      <pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate>
      <description>Practical idempotency for APIs — double clicks, duplicate webhooks, worker retries, idempotency keys and unique constraints.</description>
    </item>
    <item>
      <title>PostgreSQL at Scale: Indexes, Queries and Performance Lessons</title>
      <link>https://varnaudov.com/en/blog/postgresql-at-scale/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/postgresql-at-scale/</guid>
      <pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate>
      <description>PostgreSQL performance lessons — EXPLAIN ANALYZE, indexes, N+1, pagination, locking, pooling and real before/after cases.</description>
    </item>
    <item>
      <title>Building a Multi-Provider Shipping Integration Architecture</title>
      <link>https://varnaudov.com/en/blog/multi-provider-shipping-architecture/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/multi-provider-shipping-architecture/</guid>
      <pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate>
      <description>How to design a multi-courier shipping layer — provider interface, adapters, labels, tracking and pickup points without breaking the core system.</description>
    </item>
    <item>
      <title>From Monolith to Scalable Monolith: Why Microservices Aren&apos;t Always the Answer</title>
      <link>https://varnaudov.com/en/blog/scalable-monolith-vs-microservices/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/scalable-monolith-vs-microservices/</guid>
      <pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate>
      <description>When a modular monolith plus workers beats premature microservices — boundaries, events, deployment simplicity and when to extract a service.</description>
    </item>
    <item>
      <title>16 Years of Backend Development: What Actually Matters</title>
      <link>https://varnaudov.com/en/blog/years-of-backend-development/</link>
      <guid isPermaLink="true">https://varnaudov.com/en/blog/years-of-backend-development/</guid>
      <pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate>
      <description>Reflections from 16 years of backend work — what compounds: debugging, databases, APIs, simplicity, monitoring, communication and trade-offs.</description>
    </item>
  </channel>
</rss>
