<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>System-Design on Escalopa</title><link>https://escalopa.com/en/tags/system-design/</link><description>Recent content in System-Design on Escalopa</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>ahmed.helaly.dev@google.com (Ahmed Helaly)</managingEditor><webMaster>ahmed.helaly.dev@google.com (Ahmed Helaly)</webMaster><copyright>© 2026 Ahmed Helaly</copyright><lastBuildDate>Wed, 17 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://escalopa.com/en/tags/system-design/index.xml" rel="self" type="application/rss+xml"/><item><title>Raft Leader Election From First Principles</title><link>https://escalopa.com/en/posts/raft-leader-election-from-first-principles/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/raft-leader-election-from-first-principles/</guid><description>Randomized election timeouts and term monotonicity turn competing candidates into one current leader.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/raft-leader-election-from-first-principles/featured.svg"/></item><item><title>Log Replication and the Raft Safety Story</title><link>https://escalopa.com/en/posts/log-replication-and-the-raft-safety-story/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/log-replication-and-the-raft-safety-story/</guid><description>A leader commits only entries known to be durable on a quorum, preserving one ordered history.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/log-replication-and-the-raft-safety-story/featured.svg"/></item><item><title>Designing Idempotent Consumers</title><link>https://escalopa.com/en/posts/designing-idempotent-consumers/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/designing-idempotent-consumers/</guid><description>Persist the business effect and message identity in one atomic boundary whenever possible.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/designing-idempotent-consumers/featured.svg"/></item><item><title>Exactly Once Is Usually a Local Property</title><link>https://escalopa.com/en/posts/exactly-once-is-usually-a-local-property/</link><pubDate>Sat, 25 Jan 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/exactly-once-is-usually-a-local-property/</guid><description>End-to-end exactly-once claims decompose into deduplication, atomicity, and replay-safe effects.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/exactly-once-is-usually-a-local-property/featured.svg"/></item><item><title>Retries, Timeouts, and the Latency Budget</title><link>https://escalopa.com/en/posts/retries-timeouts-and-the-latency-budget/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/retries-timeouts-and-the-latency-budget/</guid><description>Retries spend remaining deadline and capacity; they do not create either.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/retries-timeouts-and-the-latency-budget/featured.svg"/></item><item><title>Exponential Backoff With Jitter</title><link>https://escalopa.com/en/posts/exponential-backoff-with-jitter/</link><pubDate>Thu, 19 Jun 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/exponential-backoff-with-jitter/</guid><description>Jitter breaks synchronized retry waves while caps and deadlines bound recovery cost.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/exponential-backoff-with-jitter/featured.svg"/></item><item><title>Circuit Breakers Are Not Error Handling</title><link>https://escalopa.com/en/posts/circuit-breakers-are-not-error-handling/</link><pubDate>Thu, 05 Feb 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/circuit-breakers-are-not-error-handling/</guid><description>A breaker protects a dependency and caller capacity; ordinary failures still require explicit policy.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/circuit-breakers-are-not-error-handling/featured.svg"/></item><item><title>Consistent Hashing for Practical Sharding</title><link>https://escalopa.com/en/posts/consistent-hashing-for-practical-sharding/</link><pubDate>Sat, 22 Feb 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/consistent-hashing-for-practical-sharding/</guid><description>A hash ring limits key movement, but load balance still depends on virtual nodes and key distribution.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/consistent-hashing-for-practical-sharding/featured.svg"/></item><item><title>Quorums Without the Hand Waving</title><link>https://escalopa.com/en/posts/quorums-without-the-hand-waving/</link><pubDate>Sat, 26 Oct 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/quorums-without-the-hand-waving/</guid><description>Intersecting read and write quorums provide a reasoning tool, not automatic availability or freshness.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/quorums-without-the-hand-waving/featured.svg"/></item><item><title>Ordering Events in Distributed Systems</title><link>https://escalopa.com/en/posts/ordering-events-in-distributed-systems/</link><pubDate>Tue, 31 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/ordering-events-in-distributed-systems/</guid><description>Choose the weakest ordering guarantee the business invariant needs and encode it per entity.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/ordering-events-in-distributed-systems/featured.svg"/></item><item><title>Outbox Pattern for Reliable Event Publishing</title><link>https://escalopa.com/en/posts/outbox-pattern-for-reliable-event-publishing/</link><pubDate>Fri, 03 Oct 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/outbox-pattern-for-reliable-event-publishing/</guid><description>Commit state and an event record together, then publish asynchronously with idempotent delivery.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/outbox-pattern-for-reliable-event-publishing/featured.svg"/></item><item><title>Saga Coordination Without Mystery</title><link>https://escalopa.com/en/posts/saga-coordination-without-mystery/</link><pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/saga-coordination-without-mystery/</guid><description>A saga is a state machine of forward actions, durable decisions, and explicit compensations.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/saga-coordination-without-mystery/featured.svg"/></item><item><title>Lease-Based Distributed Locks</title><link>https://escalopa.com/en/posts/lease-based-distributed-locks/</link><pubDate>Mon, 14 Apr 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/lease-based-distributed-locks/</guid><description>A lease bounds stale ownership only when fencing tokens protect the resource from expired holders.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/lease-based-distributed-locks/featured.svg"/></item><item><title>Read Repair and Anti-Entropy</title><link>https://escalopa.com/en/posts/read-repair-and-anti-entropy/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/read-repair-and-anti-entropy/</guid><description>Foreground repair improves observed keys while background comparison closes the long tail.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/read-repair-and-anti-entropy/featured.svg"/></item><item><title>Handling Hot Keys Before They Melt a Service</title><link>https://escalopa.com/en/posts/handling-hot-keys-before-they-melt-a-service/</link><pubDate>Fri, 20 Sep 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/handling-hot-keys-before-they-melt-a-service/</guid><description>Detect skew, isolate the key, coalesce work, and change partitioning only with evidence.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/handling-hot-keys-before-they-melt-a-service/featured.svg"/></item><item><title>Load Shedding as a Correctness Feature</title><link>https://escalopa.com/en/posts/load-shedding-as-a-correctness-feature/</link><pubDate>Sun, 13 Apr 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/load-shedding-as-a-correctness-feature/</guid><description>Rejecting excess work early preserves useful throughput and bounded latency for admitted requests.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/load-shedding-as-a-correctness-feature/featured.svg"/></item><item><title>Designing for Partial Failure</title><link>https://escalopa.com/en/posts/designing-for-partial-failure/</link><pubDate>Tue, 13 May 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/designing-for-partial-failure/</guid><description>Timeout, retry, fallback, and reconciliation paths are first-class behavior, not exceptional code.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/designing-for-partial-failure/featured.svg"/></item><item><title>Version Vectors in Plain Language</title><link>https://escalopa.com/en/posts/version-vectors-in-plain-language/</link><pubDate>Thu, 26 Feb 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/version-vectors-in-plain-language/</guid><description>Version vectors distinguish causality from concurrency when one scalar version cannot.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/version-vectors-in-plain-language/featured.svg"/></item><item><title>Gossip Protocols and Eventual Membership</title><link>https://escalopa.com/en/posts/gossip-protocols-and-eventual-membership/</link><pubDate>Thu, 10 Oct 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/gossip-protocols-and-eventual-membership/</guid><description>Random peer exchange trades immediate agreement for scalable, failure-tolerant convergence.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/gossip-protocols-and-eventual-membership/featured.svg"/></item><item><title>A Practical Failure Detector</title><link>https://escalopa.com/en/posts/a-practical-failure-detector/</link><pubDate>Thu, 09 Oct 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/a-practical-failure-detector/</guid><description>Failure detectors produce suspicions from imperfect timing; the application decides how costly suspicion may be.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/a-practical-failure-detector/featured.svg"/></item><item><title>Writing Architecture Decision Records</title><link>https://escalopa.com/en/posts/writing-architecture-decision-records/</link><pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/writing-architecture-decision-records/</guid><description>Record context, forces, decision, consequences, and revisit triggers while the reasoning is fresh.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/writing-architecture-decision-records/featured.svg"/></item><item><title>Modular Monolith Before Microservices</title><link>https://escalopa.com/en/posts/modular-monolith-before-microservices/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/modular-monolith-before-microservices/</guid><description>Strong internal boundaries earn optional distribution without paying network and operations costs early.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/modular-monolith-before-microservices/featured.svg"/></item><item><title>Finding Service Boundaries With Invariants</title><link>https://escalopa.com/en/posts/finding-service-boundaries-with-invariants/</link><pubDate>Tue, 17 Feb 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/finding-service-boundaries-with-invariants/</guid><description>Place data and behavior that change under one invariant behind the same consistency boundary.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/finding-service-boundaries-with-invariants/featured.svg"/></item><item><title>The Real Cost of a Microservice</title><link>https://escalopa.com/en/posts/the-real-cost-of-a-microservice/</link><pubDate>Mon, 09 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/the-real-cost-of-a-microservice/</guid><description>Each service adds deployment, ownership, observability, compatibility, and failure-management obligations.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/the-real-cost-of-a-microservice/featured.svg"/></item><item><title>Hexagonal Architecture in Practical Go</title><link>https://escalopa.com/en/posts/hexagonal-architecture-in-practical-go/</link><pubDate>Mon, 19 Jan 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/hexagonal-architecture-in-practical-go/</guid><description>Keep domain decisions behind ports and push transport and storage details to adapters.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/hexagonal-architecture-in-practical-go/featured.svg"/></item><item><title>Evolutionary Architecture With Fitness Functions</title><link>https://escalopa.com/en/posts/evolutionary-architecture-with-fitness-functions/</link><pubDate>Wed, 18 Sep 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/evolutionary-architecture-with-fitness-functions/</guid><description>Automate checks for the architectural properties that must remain true as teams and systems change.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/evolutionary-architecture-with-fitness-functions/featured.svg"/></item><item><title>Design Reviews That Produce Decisions</title><link>https://escalopa.com/en/posts/design-reviews-that-produce-decisions/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/design-reviews-that-produce-decisions/</guid><description>Share constraints and alternatives early, assign decision ownership, and record unresolved risks.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/design-reviews-that-produce-decisions/featured.svg"/></item><item><title>Turning Product Requirements Into System Constraints</title><link>https://escalopa.com/en/posts/turning-product-requirements-into-system-constraints/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/turning-product-requirements-into-system-constraints/</guid><description>Translate user journeys into load, latency, consistency, privacy, availability, and cost envelopes.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/turning-product-requirements-into-system-constraints/featured.svg"/></item><item><title>Planning a Safe Service Rollout</title><link>https://escalopa.com/en/posts/planning-a-safe-service-rollout/</link><pubDate>Sat, 18 Apr 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/planning-a-safe-service-rollout/</guid><description>Stage exposure, define observability and rollback signals, and test compatibility before scaling traffic.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/planning-a-safe-service-rollout/featured.svg"/></item><item><title>Cross-Team API Ownership</title><link>https://escalopa.com/en/posts/cross-team-api-ownership/</link><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/cross-team-api-ownership/</guid><description>One team owns the contract while consumers participate through compatibility tests and change visibility.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/cross-team-api-ownership/featured.svg"/></item><item><title>Technical Onboarding as a System</title><link>https://escalopa.com/en/posts/technical-onboarding-as-a-system/</link><pubDate>Thu, 16 Apr 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/technical-onboarding-as-a-system/</guid><description>Give newcomers a map, a runnable path, progressive tasks, and feedback loops instead of a document dump.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/technical-onboarding-as-a-system/featured.svg"/></item><item><title>Teaching Distributed Systems With Failure Scenarios</title><link>https://escalopa.com/en/posts/teaching-distributed-systems-with-failure-scenarios/</link><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/teaching-distributed-systems-with-failure-scenarios/</guid><description>Start from observable failures and invariants, then introduce algorithms as tools that preserve them.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/teaching-distributed-systems-with-failure-scenarios/featured.svg"/></item><item><title>Code Review for High-Load Services</title><link>https://escalopa.com/en/posts/code-review-for-high-load-services/</link><pubDate>Wed, 07 Jan 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/code-review-for-high-load-services/</guid><description>Review correctness under concurrency, bounds, failure behavior, observability, and rollout—not only syntax.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/code-review-for-high-load-services/featured.svg"/></item><item><title>Performance Optimization as an Experiment</title><link>https://escalopa.com/en/posts/performance-optimization-as-an-experiment/</link><pubDate>Sat, 10 Jan 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/performance-optimization-as-an-experiment/</guid><description>State a measurable hypothesis, control the workload, compare distributions, and retain a rollback path.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/performance-optimization-as-an-experiment/featured.svg"/></item><item><title>Building a Latency Budget Across Services</title><link>https://escalopa.com/en/posts/building-a-latency-budget-across-services/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/building-a-latency-budget-across-services/</guid><description>Allocate a percentile-aware deadline across work, dependencies, queues, and limited retries.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/building-a-latency-budget-across-services/featured.svg"/></item></channel></rss>