<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Architecture on DevFlow · Python Django Developer Freelance</title>
    <link>https://dev-flow.io/en/categories/architecture/</link>
    <description>Recent content in Architecture on DevFlow · Python Django Developer Freelance</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Fri, 05 Jun 2026 00:00:00 +0200</lastBuildDate>
    <atom:link href="https://dev-flow.io/en/categories/architecture/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>CQRS in Django: a denormalized read model without Event Sourcing</title>
      <link>https://dev-flow.io/en/posts/pragmatic-cqrs-django/</link>
      <pubDate>Fri, 05 Jun 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/pragmatic-cqrs-django/</guid>
      <description>Pragmatic CQRS splits write and read models when they diverge. No dogma, no Event Sourcing, just a denormalized read model fed by Outbox events.</description>
    </item>
    <item>
      <title>Idempotency Keys: stopping a client from paying twice</title>
      <link>https://dev-flow.io/en/posts/idempotency-keys-api-pattern/</link>
      <pubDate>Thu, 04 Jun 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/idempotency-keys-api-pattern/</guid>
      <description>An idempotency key turns a POST into a safe-to-replay operation. The client can retry without risking a duplicate, even after a network timeout.</description>
    </item>
    <item>
      <title>Inbox pattern: consuming events without replaying them twice</title>
      <link>https://dev-flow.io/en/posts/inbox-pattern-idempotent-consumer/</link>
      <pubDate>Wed, 03 Jun 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/inbox-pattern-idempotent-consumer/</guid>
      <description>The Inbox pattern guarantees that an event received several times is processed only once. The natural counterpart of the Outbox on the consumer side.</description>
    </item>
    <item>
      <title>Transactional Outbox: publishing events without losing consistency</title>
      <link>https://dev-flow.io/en/posts/transactional-outbox-pattern/</link>
      <pubDate>Tue, 02 Jun 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/transactional-outbox-pattern/</guid>
      <description>The Transactional Outbox pattern guarantees that every published event matches a persisted state. One SQL transaction for both the database and the broker.</description>
    </item>
    <item>
      <title>Saga pattern: handling distributed transactions without rollback</title>
      <link>https://dev-flow.io/en/posts/saga-pattern-distributed-transactions/</link>
      <pubDate>Mon, 01 Jun 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/saga-pattern-distributed-transactions/</guid>
      <description>The Saga pattern breaks a distributed transaction into compensable steps. Each step undoes its effect when a later one fails, keeping the system consistent.</description>
    </item>
    <item>
      <title>Anti-corruption layer: isolating your code from external APIs</title>
      <link>https://dev-flow.io/en/posts/anti-corruption-layer/</link>
      <pubDate>Wed, 27 May 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/anti-corruption-layer/</guid>
      <description>The anti-corruption layer (ACL) isolates your business logic from external APIs. A single translation point, from raw JSON to typed, stable objects.</description>
    </item>
    <item>
      <title>Connascence in Python: the 9 types of coupling explained</title>
      <link>https://dev-flow.io/en/posts/connascence-python/</link>
      <pubDate>Mon, 11 May 2026 00:00:00 +0200</pubDate>
      <guid>https://dev-flow.io/en/posts/connascence-python/</guid>
      <description>Connascence classifies coupling into 9 distinct types. Discover each form with a concrete Python example and how to decide which ones to reduce first.</description>
    </item>
  </channel>
</rss>
