[{"data":1,"prerenderedAt":458},["ShallowReactive",2],{"blog-post-detail-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68":3,"blogs-all-posts-detail-suggestions-en":28,"blog-comments-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en":393},{"status":4,"source":5,"data":6},"success","markdown-file",{"id":7,"title":8,"slug":9,"lang":10,"category":11,"categorySlug":12,"summary":13,"excerpt":13,"author":14,"date":15,"readTime":16,"image":17,"tags":18,"publishedAt":22,"createdAt":22,"updatedAt":22,"filePath":23,"sourceUrl":24,"content":25,"seoTitle":26,"seoDescription":13,"canonicalUrl":27},"cron-1786956216746-en","What Is the Circuit Breaker Pattern? A Practical Guide","what-is-the-circuit-breaker-pattern-a-practical-guide-4j68","en","Microservices","microservices","What Is the Circuit Breaker Pattern? A Practical Guide for Developers   Imagine your...","Avijit Bera","8\u002F17\u002F2026","6 min read","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi6cy1uyqxjd14ikkveev.png",[11,12,19,20,21],"backend","api","Trending","2026-08-17T08:43:36.746Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fmicroservices\u002Fwhat-is-the-circuit-breaker-pattern-a-practical-guide-4j68.md","https:\u002F\u002Fdev.to\u002Favijitbera\u002Fwhat-is-the-circuit-breaker-pattern-a-practical-guide-20i4","\n# What Is the Circuit Breaker Pattern? A Practical Guide for Developers\n\nImagine your application depends on a payment service.\n\nEverything works normally until the payment service starts responding slowly. Your application keeps sending requests, each request waits longer than usual, and eventually more requests start piling up.\n\nNow imagine this happening across several services at the same time.\n\nOne small failure can quickly turn into a much larger outage.\n\nThis is one of the problems the **Circuit Breaker pattern** is designed to solve.\n\nThe circuit breaker pattern is a resilience technique that prevents an application from repeatedly calling an unhealthy or failing service. Instead of allowing failed requests to continue piling up, the circuit breaker temporarily stops requests and gives the failing service time to recover.\n\nIn this guide, we'll look at **what the circuit breaker pattern is, how it works, its three states, why it's important in microservices, how it differs from retries and timeouts, common implementation strategies, and when you should use it in production.**\n\n---\n\n## What Is the Circuit Breaker Pattern?\n\nThe **Circuit Breaker pattern** is a software design pattern used to prevent repeated calls to a service that is currently failing.\n\nIt works similarly to an electrical circuit breaker.\n\nWhen an electrical system detects a serious problem, a circuit breaker cuts the connection to prevent further damage.\n\nA software circuit breaker does something similar:\n\n```text\nHealthy service\n      ↓\nRequests allowed\n      ↓\nService starts failing\n      ↓\nCircuit opens\n      ↓\nRequests stopped\n      ↓\nService gets time to recover\n      ↓\nCircuit tests service\n      ↓\nService healthy?\n      │\n      ├── Yes → Close circuit\n      │\n      └── No  → Keep circuit open\n```\n\nThe important idea is simple:\n\n> **When a dependency is failing, stop repeatedly calling it until it has had a chance to recover.**\n\n---\n\n# Why Do We Need Circuit Breakers?\n\nModern applications rarely work in isolation.\n\nA typical SaaS application might depend on:\n\n```text\nYour API\n   │\n   ├── PostgreSQL\n   ├── Redis\n   ├── Payment API\n   ├── Email Provider\n   ├── Authentication Service\n   ├── AI API\n   └── Other Microservices\n```\n\nIf one of these dependencies becomes unavailable, your application can start experiencing failures too.\n\nFor example:\n\n```text\nOrder Service\n     │\n     ▼\nPayment Service\n     │\n     X\n   DOWN\n```\n\nIf the Order Service continues calling the Payment Service thousands of times, those requests may:\n\n* consume connection pools\n* consume worker threads\n* increase memory usage\n* increase latency\n* create request queues\n* trigger more timeouts\n* make the Order Service unhealthy\n\nEventually, the failure can spread.\n\nThis is known as a **cascading failure**.\n\n---\n\n# What Is a Cascading Failure?\n\nA cascading failure happens when a failure in one component causes problems in other components.\n\nConsider this example:\n\n```text\nPayment Service\n      ↓\n    DOWN\n      ↓\nOrder Service waits\n      ↓\nRequests accumulate\n      ↓\nWorker pool exhausted\n      ↓\nOrder Service becomes slow\n      ↓\nAPI requests start timing out\n      ↓\nEntire application becomes unstable\n```\n\nThe original problem was the Payment Service.\n\nBut now multiple services are affected.\n\nA circuit breaker helps stop this chain earlier.\n\n```text\nPayment Service\n      ↓\n    DOWN\n      ↓\nCircuit Breaker\n      ↓\nStop calling Payment Service\n      ↓\nOrder Service remains responsive\n```\n\nThis is one of the biggest reasons circuit breakers are important in distributed systems.\n\n---\n\n# How Does a Circuit Breaker Work?\n\nA circuit breaker typically has **three states**:\n\n1. Closed\n2. Open\n3. Half-Open\n\nUnderstanding these three states is the key to understanding the circuit breaker pattern.\n\n---\n\n# 1. Closed State\n\nThe **Closed** state is the normal state.\n\nRequests are allowed to reach the dependency.\n\n```text\nClient\n  ↓\nApplication\n  ↓\nCircuit Breaker\n  ↓\nPayment Service\n  ↓\nResponse\n```\n\nThe circuit breaker monitors the requests.\n\nFor example, it may track:\n\n* failed requests\n* successful requests\n* timeouts\n* latency\n* error percentage\n\nSuppose the configuration is:\n\n```text\nFailure threshold: 50%\nMinimum requests: 20\n```\n\nIf enough requests start failing, the circuit breaker can decide that the dependency is unhealthy.\n\nThe circuit then changes from:\n\n```text\nCLOSED\n   ↓\nOPEN\n```\n\n---\n\n# 2. Open State\n\nWhen the circuit is **Open**, requests are no longer sent to the failing dependency.\n\nInstead, the circuit breaker fails fast.\n\n```text\nClient\n  ↓\nApplication\n  ↓\nCircuit Breaker\n  │\n  └── OPEN\n       ↓\n   Don't call service\n       ↓\n   Return fallback\u002Ferror\n```\n\nThis is extremely important.\n\nWithout a circuit breaker:\n\n```text\nRequest\n  ↓\nPayment API\n  ↓\nTimeout\n  ↓\nWait\n  ↓\nRetry\n  ↓\nTimeout\n  ↓\nWait\n```\n\nWith an open circuit:\n\n```text\nRequest\n  ↓\nCircuit Breaker\n  ↓\nOPEN\n  ↓\nFail immediately\n```\n\nThe application doesn't waste resources waiting for a dependency that is already known to be unhealthy.\n\n---\n\n# 3. Half-Open State\n\nThe circuit shouldn't remain open forever.\n\nEventually, the dependency might recover.\n\nThat's where the **Half-Open** state comes in.\n\nAfter a configured period, the circuit breaker allows a small number of test requests through.\n\n```text\nOPEN\n  ↓\nWait\n  ↓\nHALF-OPEN\n  ↓\nTest request\n  ↓\nService healthy?\n```\n\nIf the test succeeds:\n\n```text\nHALF-OPEN\n     ↓\nSuccess\n     ↓\nCLOSED\n```\n\nIf the test fails:\n\n```text\nHALF-OPEN\n     ↓\nFailure\n     ↓\nOPEN\n```\n\nThis gives the dependency an opportunity to recover without immediately sending a large amount of traffic back to it.\n\n---\n\n# Circuit Breaker State Diagram\n\nThe complete lifecycle looks like this:\n\n```text\n                 ┌───────────────┐\n                 │    CLOSED     │\n                 │ Normal traffic│\n                 └───────┬───────┘\n                         │\n                  Failure threshold\n                         │\n                         ▼\n                 ┌───────────────┐\n                 │     OPEN      │\n                 │ Fail fast     │\n                 │ No requests   │\n                 └───────┬───────┘\n                         │\n                    Recovery time\n                         │\n                         ▼\n                 ┌───────────────┐\n                 │   HALF-OPEN   │\n                 │ Test requests │\n                 └───────┬───────┘\n                         │\n                ┌────────┴────────┐\n                │                 │\n             Success            Failure\n                │                 │\n                ▼                 ▼\n             CLOSED             OPEN\n```\n\n---\n\n# A Simple Real-World Example\n\nSuppose your application uses a third-party payment API.\n\nNormally:\n\n```text\nOrder API\n   ↓\nCircuit Breaker\n   ↓\nPayment API\n   ↓\nSuccess\n```\n\nNow the payment provider starts failing.\n\nThe first few requests fail:\n\n```text\nRequest 1 → 500\nRequest 2 → 500\nRequest 3 → timeout\nRequest 4 → 500\nRequest 5 → timeout\n```\n\nThe circuit breaker detects the failure rate.\n\nIt opens the circuit:\n\n```text\nOrder API\n   ↓\nCircuit Breaker\n   ↓\nOPEN\n   ↓\nDon't call Payment API\n```\n\nNew requests fail immediately or use a fallback.\n\nAfter a configured recovery period:\n\n```text\nOPEN\n ↓\nHALF-OPEN\n ↓\nTest Payment API\n```\n\nIf the payment service is healthy:\n\n```text\nTest succeeds\n ↓\nCLOSED\n ↓\nNormal traffic resumes\n```\n\n---\n\n# Circuit Breaker vs Retry\n\nCircuit breakers and retries are often confused because both deal with failures.\n\nBut they solve different problems.\n\n## Retry\n\nA retry says:\n\n> \"This request failed. Let's try it again.\"\n\nFor example:\n\n```text\nRequest\n  ↓\nFailure\n  ↓\nRetry\n  ↓\nSuccess\n```\n\nRetries are useful for temporary failures.\n\nFor example, a network connection may fail once but succeed immediately afterward.\n\n---\n\n## Circuit Breaker\n\nA circuit breaker says:\n\n> \"This dependency appears unhealthy. Stop calling it for now.\"\n\nFor example:\n\n```text\nRepeated failures\n       ↓\nCircuit opens\n       ↓\nStop requests\n       ↓\nWait for recovery\n```\n\nSo:\n\n```text\nRetry = Try again\n\nCircuit Breaker = Stop trying for a while\n```\n\nThey are often used together.\n\n---\n\n# Circuit Breaker + Retry\n\nA resilient application might use:\n\n```text\nRequest\n   ↓\nCircuit Breaker\n   ↓\nRetry\n   ↓\nDependency\n```\n\nFor a temporary failure:\n\n```text\nRequest\n ↓\nDependency\n ↓\nFailure\n ↓\nRetry\n ↓\nSuccess\n```\n\nFor a persistent failure:\n\n```text\nRequest\n ↓\nDependency\n ↓\nFailure\n ↓\nRetry\n ↓\nFailure\n ↓\nCircuit opens\n ↓\nFuture requests fail fast\n```\n\nThe order and exact behavior depend on your architecture and libraries, but the important point is that **retries should not blindly continue when a dependency is persistently failing**.\n\n---\n\n# Circuit Breaker vs Timeout\n\nA timeout controls **how long a request is allowed to wait**.\n\nFor example:\n\n```text\nTimeout = 3 seconds\n```\n\nIf the dependency doesn't respond within three seconds:\n\n```text\nRequest\n ↓\nWait 3 seconds\n ↓\nTimeout\n```\n\nA circuit breaker controls **whether requests should be sent at all** based on observed failures.\n\nThe two mechanisms work well together:\n\n```text\nRequest\n  ↓\nCircuit Breaker\n  ↓\nTimeout\n  ↓\nDependency\n```\n\nA timeout prevents an individual request from waiting forever.\n\nA circuit breaker prevents the application from repeatedly sending requests to a dependency that is consistently failing.\n\n---\n\n# Circuit Breaker vs Rate Limiting\n\nThese mechanisms solve completely different problems.\n\n### Rate limiting\n\nControls traffic volume.\n\n```text\n100 requests\u002Fminute\n```\n\n### Circuit breaker\n\nControls traffic based on dependency health.\n\n```text\nDependency failing\n       ↓\nStop sending requests\n```\n\nYou can use both:\n\n```text\nClient\n  ↓\nRate Limiter\n  ↓\nCircuit Breaker\n  ↓\nBackend\n```\n\nRate limiting protects your system from excessive traffic.\n\nCircuit breaking protects your system from unhealthy dependencies.\n\n---\n\n# What Metrics Should a Circuit Breaker Monitor?\n\nA circuit breaker needs some way to determine whether a dependency is unhealthy.\n\nCommon signals include:\n\n### Error count\n\nFor example:\n\n```text\n10 failures\nwithin the last 20 requests\n```\n\n### Error percentage\n\nFor example:\n\n```text\nFailure rate = 60%\n```\n\n### Timeouts\n\nRepeated timeouts are often a strong indicator of an unhealthy dependency.\n\n### Latency\n\nA service may technically return HTTP 200 responses while becoming extremely slow.\n\nFor example:\n\n```text\nNormal latency: 100ms\n\nCurrent latency:\n500ms\n1s\n2s\n5s\n```\n\nDepending on your requirements, excessive latency can be treated as a failure condition.\n\n---\n\n# Failure Thresholds\n\nA circuit breaker usually needs a threshold that determines when the circuit should open.\n\nFor example:\n\n```text\nMinimum requests: 20\nFailure threshold: 50%\n```\n\nThe circuit doesn't immediately open after one failed request.\n\nInstead, it waits until enough data is available.\n\nExample:\n\n```text\n20 requests\n12 failures\n\nFailure rate = 60%\n```\n\nIf the configured threshold is 50%, the circuit can open.\n\nThis prevents a single temporary failure from unnecessarily taking the circuit offline.\n\n---\n\n# Failure Count vs Failure Percentage\n\nThere are two common approaches.\n\n## Failure count\n\nOpen the circuit after a certain number of failures.\n\n```text\n5 consecutive failures\n→ OPEN\n```\n\nSimple, but it may not work well for services with highly variable traffic.\n\n---\n\n## Failure percentage\n\nOpen the circuit when the percentage of failures exceeds a threshold.\n\n```text\n20 requests\n12 failures\n\n60% failure rate\n→ OPEN\n```\n\nThis can provide more context because it considers both successful and failed requests.\n\n---\n\n# Consecutive Failure Detection\n\nAnother simple strategy is tracking consecutive failures.\n\nFor example:\n\n```text\nSuccess\nSuccess\nFailure\nFailure\nFailure\nFailure\nFailure\n```\n\nConfiguration:\n\n```text\n5 consecutive failures\n```\n\nThe circuit opens after the fifth consecutive failure.\n\nThis approach is easy to understand and can work well for certain services, although it doesn't capture all traffic patterns.\n\n---\n\n# How Long Should a Circuit Stay Open?\n\nThe open state usually has a **cooldown period**.\n\nFor example:\n\n```text\nOpen duration = 30 seconds\n```\n\nAfter 30 seconds:\n\n```text\nOPEN\n ↓\nHALF-OPEN\n```\n\nThe correct duration depends on the dependency.\n\nIf you test too quickly:\n\n```text\nService still recovering\n ↓\nTest request fails\n ↓\nCircuit opens again\n```\n\nIf you wait too long:\n\n```text\nService recovered\n ↓\nTraffic still blocked\n ↓\nUnnecessary downtime\n```\n\nA good value should be based on the recovery characteristics of the dependency.\n\n---\n\n# What Should Happen When the Circuit Is Open?\n\nThis is one of the most important design decisions.\n\nThe application can:\n\n### Return an error\n\nFor example:\n\n```http\n503 Service Unavailable\n```\n\nwith:\n\n```json\n{\n  \"error\": \"dependency_unavailable\",\n  \"message\": \"Payment service is temporarily unavailable\"\n}\n```\n\n### Return cached data\n\nFor read operations, stale data may sometimes be better than no data.\n\n```text\nRequest\n ↓\nCircuit OPEN\n ↓\nCached response\n ↓\nClient\n```\n\n### Use a fallback\n\nFor example:\n\n```text\nRecommendation service unavailable\n        ↓\nReturn popular products\n```\n\n### Queue the request\n\nFor operations that don't need an immediate response, you may be able to queue work for later processing.\n\nThe right fallback depends heavily on the business operation.\n\n---\n\n# Circuit Breakers in Microservices\n\nCircuit breakers are particularly useful in microservice architectures.\n\nImagine:\n\n```text\n                 API Gateway\n                      │\n              ┌───────┼───────┐\n              ▼       ▼       ▼\n            Users   Orders  Payments\n                      │\n                      ▼\n                 Inventory\n```\n\nIf Inventory becomes unavailable:\n\n```text\nOrders\n  ↓\nInventory\n  X\n DOWN\n```\n\nWithout a circuit breaker, Orders may repeatedly call Inventory.\n\nWith a circuit breaker:\n\n```text\nOrders\n  ↓\nCircuit Breaker\n  ↓\nInventory\n```\n\nAfter repeated failures:\n\n```text\nOrders\n  ↓\nCircuit Breaker OPEN\n  ↓\nDon't call Inventory\n```\n\nThe Orders service can continue handling requests that don't depend on Inventory.\n\nThis helps isolate failures.\n\n---\n\n# Circuit Breakers at the API Gateway\n\nCircuit breakers don't have to live inside individual applications.\n\nThey can also be implemented at an **API gateway** or edge proxy.\n\nFor example:\n\n```text\n                    Internet\n                       │\n                       ▼\n                 API Gateway\n                       │\n                 Circuit Breaker\n                       │\n          ┌────────────┼────────────┐\n          ▼            ▼            ▼\n       Service A    Service B    Service C\n```\n\nThe gateway can monitor origin health and stop forwarding requests when an origin becomes unhealthy.\n\nThis can be particularly useful when you have multiple applications or services that share the same infrastructure.\n\nFor example, [EdgeWrap](https:\u002F\u002Fapp.edgewrap.pro) provides an edge API gateway layer that can sit in front of your APIs, while the [EdgeWrap documentation](https:\u002F\u002Fdocs.edgewrap.pro\u002F) provides configuration and implementation details.\n\n---\n\n# Circuit Breaker and Caching\n\nCaching can complement circuit breakers.\n\nSuppose:\n\n```text\nGET \u002Fapi\u002Fproducts\n```\n\nnormally returns product information.\n\nIf the origin becomes unavailable:\n\n```text\nClient\n  ↓\nAPI Gateway\n  ↓\nOrigin DOWN\n```\n\nInstead of returning an error immediately, an edge gateway may be able to serve a previously cached response, depending on the cache policy.\n\n```text\nClient\n  ↓\nAPI Gateway\n  ↓\nOrigin unavailable\n  ↓\nCached response\n  ↓\nClient\n```\n\nThis is sometimes called **stale-if-error** behavior when implemented through appropriate HTTP caching semantics.\n\nIt can make applications more resilient during short backend failures.\n\n---\n\n# Circuit Breaker and Failover\n\nCircuit breakers can also work with multiple origins.\n\nFor example:\n\n```text\n                 API Gateway\n                      │\n            ┌─────────┴─────────┐\n            ▼                   ▼\n        Primary API        Secondary API\n            │                   │\n          DOWN                Healthy\n```\n\nThe gateway can detect that the primary origin is unhealthy and route traffic to a secondary origin, depending on the platform's failover capabilities.\n\nA more resilient architecture might look like:\n\n```text\n                    API Gateway\n                         │\n                  Health Monitoring\n                         │\n              ┌──────────┴──────────┐\n              ▼                     ▼\n         Primary Origin        Backup Origin\n              │                     │\n            DOWN                  Healthy\n              │                     │\n              └──────────┬──────────┘\n                         ▼\n                       Client\n```\n\nCircuit breaking and failover aren't exactly the same thing, but they can complement each other.\n\n---\n\n# Circuit Breaker Implementation Example\n\nThe following simplified pseudocode demonstrates the basic idea:\n\n```javascript\nclass CircuitBreaker {\n  constructor(action, threshold = 5, timeout = 30000) {\n    this.action = action;\n    this.threshold = threshold;\n    this.timeout = timeout;\n\n    this.failures = 0;\n    this.state = \"CLOSED\";\n  }\n\n  async execute() {\n    if (this.state === \"OPEN\") {\n      throw new Error(\"Circuit is open\");\n    }\n\n    try {\n      const result = await this.action();\n\n      this.failures = 0;\n      return result;\n    } catch (error) {\n      this.failures++;\n\n      if (this.failures >= this.threshold) {\n        this.state = \"OPEN\";\n\n        setTimeout(() => {\n          this.state = \"HALF_OPEN\";\n        }, this.timeout);\n      }\n\n      throw error;\n    }\n  }\n}\n```\n\nThis is intentionally simplified.\n\nA production implementation needs to consider things such as:\n\n* concurrent requests\n* half-open request limits\n* failure windows\n* latency\n* distributed state\n* race conditions\n* metrics\n* fallback behavior\n* recovery detection\n\nFor production systems, using a well-tested resilience library or managed infrastructure is usually preferable to maintaining your own implementation.\n\n---\n\n# Distributed Circuit Breakers\n\nA distributed system introduces another challenge.\n\nImagine:\n\n```text\n                 API Gateway\n                      │\n          ┌───────────┼───────────┐\n          ▼           ▼           ▼\n       Server A    Server B    Server C\n```\n\nIf each server has its own circuit state:\n\n```text\nServer A → OPEN\nServer B → CLOSED\nServer C → CLOSED\n```\n\nsome servers may continue sending traffic to an unhealthy dependency.\n\nDepending on your architecture, this may be acceptable or undesirable.\n\nA centralized or edge-level circuit breaker can provide a more consistent view of dependency health.\n\nHowever, distributed circuit state also introduces its own complexity.\n\nFor many applications, a local circuit breaker is sufficient because each service instance can independently protect itself.\n\n---\n\n# Common Circuit Breaker Configuration\n\nA circuit breaker might have configuration such as:\n\n```text\nFailure threshold:       50%\nMinimum requests:        20\nOpen duration:            30 seconds\nHalf-open requests:       3\nRequest timeout:           5 seconds\n```\n\nThese values are only examples.\n\nYou should tune them based on your traffic and dependency behavior.\n\n---\n\n# Circuit Breaker Best Practices\n\n## 1. Always configure timeouts\n\nA circuit breaker is not a replacement for timeouts.\n\nA request should not be allowed to hang indefinitely.\n\nUse:\n\n```text\nTimeout\n+\nCircuit Breaker\n```\n\nrather than relying on either mechanism alone.\n\n---\n\n## 2. Don't open the circuit too aggressively\n\nA single temporary error doesn't necessarily mean the service is unhealthy.\n\nUse a minimum request count or appropriate failure window before opening the circuit.\n\n---\n\n## 3. Monitor latency as well as errors\n\nA service that returns successful responses after 20 seconds may be just as problematic as a service returning errors.\n\n---\n\n## 4. Keep the half-open state controlled\n\nDon't send hundreds of requests immediately when testing recovery.\n\nAllow a small number of test requests first.\n\n---\n\n## 5. Choose meaningful fallbacks\n\nDon't return fake success responses for operations such as payments or account creation.\n\nFor critical operations, it may be safer to return a clear error or queue the operation.\n\n---\n\n## 6. Monitor circuit state changes\n\nTrack events such as:\n\n```text\nCLOSED → OPEN\nOPEN → HALF-OPEN\nHALF-OPEN → CLOSED\nHALF-OPEN → OPEN\n```\n\nThese transitions can provide valuable operational information.\n\n---\n\n## 7. Combine circuit breakers with other resilience techniques\n\nA robust API architecture may use:\n\n```text\nTimeout\n   +\nRetry\n   +\nCircuit Breaker\n   +\nRate Limiting\n   +\nCaching\n   +\nHealth Checks\n   +\nFailover\n```\n\nEach solves a different part of the reliability problem.\n\n---\n\n# Common Circuit Breaker Mistakes\n\n### Mistake 1: Treating every error as a failure\n\nSome HTTP errors are caused by invalid client requests.\n\nFor example:\n\n```text\n400 Bad Request\n401 Unauthorized\n404 Not Found\n```\n\nThese don't necessarily indicate that the dependency is unhealthy.\n\nYou need to carefully define which responses should contribute to the circuit failure threshold.\n\n---\n\n### Mistake 2: Retrying endlessly\n\nRetries without limits can make an outage worse.\n\nA failing dependency can receive even more traffic precisely when it is struggling.\n\n---\n\n### Mistake 3: Using an extremely short recovery period\n\nIf the dependency needs 60 seconds to recover and your circuit tests it every 5 seconds, you'll repeatedly hit an unhealthy service.\n\n---\n\n### Mistake 4: No fallback strategy\n\nOpening the circuit is only part of the solution.\n\nYou also need to decide what your application should return to the user.\n\n---\n\n### Mistake 5: Ignoring observability\n\nIf you don't monitor circuit transitions, you may not know why requests are failing.\n\n---\n\n# When Should You Use the Circuit Breaker Pattern?\n\nCircuit breakers are particularly useful when your application depends on:\n\n* third-party APIs\n* payment providers\n* authentication services\n* microservices\n* AI APIs\n* external databases\n* messaging services\n* internal HTTP services\n\nThey are especially valuable when a dependency failure could cause your own application to become unstable.\n\n---\n\n# When Should You Not Use a Circuit Breaker?\n\nNot every function needs a circuit breaker.\n\nFor example, a simple in-process function:\n\n```text\ncalculateTax()\n```\n\nprobably doesn't need one.\n\nCircuit breakers are most useful around **remote or failure-prone dependencies** where failures can consume significant resources.\n\nAdding a circuit breaker everywhere can also make systems unnecessarily complicated.\n\nUse it where dependency failures actually pose a resilience risk.\n\n---\n\n# A Practical Resilience Architecture\n\nFor a production SaaS API, you might end up with something like:\n\n```text\n                         Users\n                           │\n                           ▼\n                  ┌─────────────────┐\n                  │   Edge Gateway  │\n                  │                 │\n                  │ DDoS Protection │\n                  │ WAF             │\n                  │ Rate Limiting   │\n                  │ Caching         │\n                  └────────┬────────┘\n                           │\n                           ▼\n                     Application\n                           │\n                    ┌──────┴──────┐\n                    ▼             ▼\n              Circuit Breaker   Redis\n                    │\n                    ▼\n             External Service\n                    │\n               ┌────┴────┐\n               │         │\n             Healthy    Down\n               │         │\n               ▼         ▼\n             Success   Fallback\n```\n\nThe goal isn't to eliminate every failure.\n\nThat's impossible.\n\nThe goal is to **contain failures and prevent them from spreading through the system**.\n\n---\n\n# Circuit Breaker Pattern: Key Takeaways\n\nThe circuit breaker pattern can be summarized in a few ideas:\n\n### Closed\n\nRequests flow normally.\n\n```text\nRequest → Dependency\n```\n\n### Open\n\nThe dependency is considered unhealthy.\n\n```text\nRequest → Fail Fast\n```\n\n### Half-Open\n\nThe system tests whether the dependency has recovered.\n\n```text\nRequest → Test Dependency\n```\n\nAnd the most important principle is:\n\n> **Don't keep hammering a dependency that is already failing.**\n\nA circuit breaker gives your system a way to recognize failure, stop unnecessary traffic, and recover gracefully.\n\n---\n\n# Frequently Asked Questions\n\n## What is the circuit breaker pattern?\n\nThe circuit breaker pattern is a resilience design pattern that prevents an application from repeatedly calling an unhealthy dependency. It temporarily stops requests when failures exceed a configured threshold and later tests whether the dependency has recovered.\n\n## What are the three states of a circuit breaker?\n\nThe three common states are **Closed**, **Open**, and **Half-Open**. Closed allows normal traffic, Open blocks calls to the dependency, and Half-Open allows a limited number of test requests to determine whether the dependency has recovered.\n\n## What is the difference between a circuit breaker and a retry?\n\nA retry attempts a failed operation again. A circuit breaker stops sending requests when a dependency is consistently failing. They are often used together.\n\n## What is the difference between a circuit breaker and a timeout?\n\nA timeout limits how long an individual request can wait. A circuit breaker prevents new requests from being sent to a dependency that appears unhealthy.\n\n## Is a circuit breaker useful in microservices?\n\nYes. Circuit breakers are commonly used in microservice architectures to prevent failures in one service from cascading into other services.\n\n## Can an API gateway implement a circuit breaker?\n\nYes. API gateways and edge proxies can monitor backend health and stop forwarding requests to unhealthy origins. This can provide centralized resilience across multiple APIs.\n\n## Should every API use a circuit breaker?\n\nNo. Circuit breakers are most useful for remote or failure-prone dependencies. Adding them to every function or internal operation can create unnecessary complexity.\n\n## Can a circuit breaker improve API reliability?\n\nYes. A circuit breaker can prevent repeated calls to failing dependencies, reduce resource exhaustion, and help isolate failures. It does not make the dependency itself more reliable, but it can make your overall system more resilient to its failures.\n\n---\n\n# Final Thoughts\n\nFailures are inevitable in distributed systems.\n\nServers go down. Networks become unreliable. Third-party APIs experience outages. Databases become overloaded. External services become slow.\n\nThe goal of resilient architecture isn't to pretend these failures won't happen.\n\nIt's to make sure **one failure doesn't bring down everything else**.\n\nThe circuit breaker pattern is one of the simplest and most useful patterns for achieving that.\n\nBy combining:\n\n```text\nTimeouts\n   +\nRetries\n   +\nCircuit Breakers\n   +\nRate Limiting\n   +\nCaching\n   +\nHealth Checks\n   +\nFailover\n```\n\nyou can build APIs that continue operating gracefully even when individual dependencies aren't healthy.\n\nFor teams that want to enforce resilience at the infrastructure layer, an API gateway can provide another useful control point. [EdgeWrap](https:\u002F\u002Fapp.edgewrap.pro) is designed to sit in front of APIs and provide edge-level traffic management, security, caching, routing, and reliability features. You can learn more about its architecture and configuration in the [EdgeWrap documentation](https:\u002F\u002Fdocs.edgewrap.pro\u002F).\n\nThe most important lesson is simple:\n\n> **When a dependency fails, protect your application first. Stop unnecessary calls, fail fast when appropriate, and give the dependency time to recover.**\n\n---\n\n> 🔗 **Original Source**: [Avijit Bera](https:\u002F\u002Fdev.to\u002Favijitbera\u002Fwhat-is-the-circuit-breaker-pattern-a-practical-guide-20i4)\n","What Is the Circuit Breaker Pattern? A Practical Guide - Intlight Insights","https:\u002F\u002Fintlighttech.com\u002Fblogs\u002Fwhat-is-the-circuit-breaker-pattern-a-practical-guide-4j68",{"items":29,"total":356,"page":357,"totalPages":357,"limit":358,"lang":10,"categories":359,"popularTags":373},[30,47,49,65,81,95,108,121,135,149,163,175,188,200,214,227,241,253,267,280,294,307,319,332,344],{"id":31,"title":32,"slug":33,"lang":10,"category":34,"categorySlug":35,"summary":36,"excerpt":36,"author":37,"date":15,"readTime":16,"image":38,"tags":39,"publishedAt":44,"createdAt":44,"updatedAt":44,"filePath":45,"sourceUrl":46},"cron-1786956218725-en","I Thought I'd Lost the Plot. I Was Writing It.","i-thought-id-lost-the-plot-i-was-writing-it-wjvz","AI Agents","ai-agents","I Thought I'd Lost the Plot. I Was Writing It.            I set out to build autonomous...","Joe Black","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa3l9h76kr920p8bm2mjp.png",[34,40,41,42,43],"claudecode","aiagents","developmenttools","autonomousagents","2026-08-17T08:43:38.725Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Fi-thought-id-lost-the-plot-i-was-writing-it-wjvz.md","https:\u002F\u002Fdev.to\u002Fjoeblackwaslike\u002Fi-thought-id-lost-the-plot-i-was-writing-it-5fil",{"id":7,"title":8,"slug":9,"lang":10,"category":11,"categorySlug":12,"summary":13,"excerpt":13,"author":14,"date":15,"readTime":16,"image":17,"tags":48,"publishedAt":22,"createdAt":22,"updatedAt":22,"filePath":23,"sourceUrl":24},[11,12,19,20,21],{"id":50,"title":51,"slug":52,"lang":10,"category":53,"categorySlug":54,"summary":55,"excerpt":55,"author":56,"date":15,"readTime":16,"image":57,"tags":58,"publishedAt":62,"createdAt":62,"updatedAt":62,"filePath":63,"sourceUrl":64},"cron-1786956214008-en","I attacked my own npm package before launching it. It let the proposer approve their own writes","i-attacked-my-own-npm-package-before-launching-it-it-let-the-proposer-approve-their-own-writes-oi6y","Security","security","My library exists so a human approves an LLM's UPDATE before it runs. It never checked that the approver was somebody other than the proposer — and wrote \\\"approved\\\" into the audit trail anyway.","hyuga","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F65yv5n4qvrgn3t6ot4gy.png",[53,59,60,54,61],"opensource","ai","database","2026-08-17T08:43:34.007Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fsecurity\u002Fi-attacked-my-own-npm-package-before-launching-it-it-let-the-proposer-approve-their-own-writes-oi6y.md","https:\u002F\u002Fdev.to\u002Fhyuga611\u002Fi-attacked-my-own-npm-package-before-launching-it-it-let-the-proposer-approve-their-own-writes-4mki",{"id":66,"title":67,"slug":68,"lang":10,"category":69,"categorySlug":70,"summary":71,"excerpt":71,"author":72,"date":15,"readTime":16,"image":73,"tags":74,"publishedAt":78,"createdAt":78,"updatedAt":78,"filePath":79,"sourceUrl":80},"cron-1786956210950-en","Build an MCP Server in Go (Part 1): Designing a diagnostic-grade Kubernetes client","build-an-mcp-server-in-go-part-1-designing-a-diagnostic-grade-kubernetes-client-p1d4","Kubernetes","kubernetes","This post designs the Kubernetes client. The next post wraps it as an MCP server and wires it to an...","Fer Rios","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpw4b055hh8hxl5unrmvv.png",[69,70,75,76,77],"go","devops","mcp","2026-08-17T08:43:30.949Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fkubernetes\u002Fbuild-an-mcp-server-in-go-part-1-designing-a-diagnostic-grade-kubernetes-client-p1d4.md","https:\u002F\u002Fdev.to\u002Fferztyle\u002Fbuild-an-mcp-server-in-go-part-1-designing-a-diagnostic-grade-kubernetes-client-49a2",{"id":82,"title":83,"slug":84,"lang":10,"category":34,"categorySlug":35,"summary":85,"excerpt":85,"author":86,"date":15,"readTime":16,"image":87,"tags":88,"publishedAt":92,"createdAt":92,"updatedAt":92,"filePath":93,"sourceUrl":94},"cron-1786956117904-en","The Write Policy Is the Hard Part: Promotion Pipelines for Agent Memory","the-write-policy-is-the-hard-part-promotion-pipelines-for-agent-memory-4qv9","Storing agent memory is easy. Deciding what earns a permanent write, and keeping the write-path alive through RBAC and network policy, is the real work.","Guatu","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fguatulabs.dev%2Fog%2Fthe-write-policy-is-the-hard-part-promotion-pipelines-for-agent-memory.png",[34,41,89,90,91],"agentmemory","rbac","networkpolicies","2026-08-17T08:41:57.903Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Fthe-write-policy-is-the-hard-part-promotion-pipelines-for-agent-memory-4qv9.md","https:\u002F\u002Fdev.to\u002Ffuthgar\u002Fthe-write-policy-is-the-hard-part-promotion-pipelines-for-agent-memory-5mc",{"id":96,"title":97,"slug":98,"lang":10,"category":34,"categorySlug":35,"summary":99,"excerpt":99,"author":100,"date":15,"readTime":101,"image":102,"tags":103,"publishedAt":105,"createdAt":105,"updatedAt":105,"filePath":106,"sourceUrl":107},"cron-1786955347611","I Changed How I Think About AI Memory","i-changed-how-i-think-about-ai-memory-fnpm","I Changed How I Think About AI Memory   When I first built Lean AI Memory, I focused too...","Phúc Phùng","6 phút","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0oqod5zshdan74573bau.png",[34,60,41,59,104],"git","2026-08-17T08:29:07.610Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Fi-changed-how-i-think-about-ai-memory-fnpm.md","https:\u002F\u002Fdev.to\u002Fphucphungbk\u002Fi-changed-how-i-think-about-ai-memory-4mkd",{"id":109,"title":110,"slug":111,"lang":10,"category":11,"categorySlug":12,"summary":112,"excerpt":112,"author":113,"date":15,"readTime":101,"image":114,"tags":115,"publishedAt":118,"createdAt":118,"updatedAt":118,"filePath":119,"sourceUrl":120},"cron-1786955347443","Real-Life Refactoring Example: ~3x Less Code to Read","real-life-refactoring-example-3x-less-code-to-read-dccm","There is a popular idea that refactoring is making code shorter. It is not entirely wrong....","Valentine Shi","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Foubl9dlj23byhsak2mqy.png",[11,116,117,19,12],"node","software","2026-08-17T08:29:07.443Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fmicroservices\u002Freal-life-refactoring-example-3x-less-code-to-read-dccm.md","https:\u002F\u002Fdev.to\u002Fvalentineshi-dev\u002Freal-life-refactoring-example-3x-less-code-to-read-3mdl",{"id":122,"title":123,"slug":124,"lang":10,"category":53,"categorySlug":54,"summary":125,"excerpt":125,"author":126,"date":15,"readTime":101,"image":127,"tags":128,"publishedAt":132,"createdAt":132,"updatedAt":132,"filePath":133,"sourceUrl":134},"cron-1786955347034","The Tragedy of the Clean-Handed Auditor","the-tragedy-of-the-clean-handed-auditor-rgoz","\\\"I could save them if they'd only listen...\\\"  Hey, you. Yeah, you: the compliance or governance...","Ben Link","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5z426h3tt6e2b3sthd2f.png",[53,54,129,130,131],"compliance","developers","careerdevelopment","2026-08-17T08:29:07.034Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fsecurity\u002Fthe-tragedy-of-the-clean-handed-auditor-rgoz.md","https:\u002F\u002Fdev.to\u002Flinkbenjamin\u002Fthe-tragedy-of-the-clean-handed-auditor-1253",{"id":136,"title":137,"slug":138,"lang":10,"category":69,"categorySlug":70,"summary":139,"excerpt":139,"author":140,"date":15,"readTime":101,"image":141,"tags":142,"publishedAt":146,"createdAt":146,"updatedAt":146,"filePath":147,"sourceUrl":148},"cron-1786955346614","Building Sluice: QoS-Aware Capacity Governance for Self-Hosted LLM Inference","building-sluice-qos-aware-capacity-governance-for-self-hosted-llm-inference-flbu","📦 Project: https:\u002F\u002Fgithub.com\u002FVampiricCyborg\u002Fsluice           1. The Problem: When Capacity Becomes...","Madhav M S","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fh3vuie9oakcn3bqzxtbh.png",[69,143,144,70,145],"distributedsystems","llm","systemdesign","2026-08-17T08:29:06.613Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fkubernetes\u002Fbuilding-sluice-qos-aware-capacity-governance-for-self-hosted-llm-inference-flbu.md","https:\u002F\u002Fdev.to\u002Fvampiriccyborg\u002Fbuilding-sluice-qos-aware-capacity-governance-for-self-hosted-llm-inference-13ja",{"id":150,"title":151,"slug":152,"lang":10,"category":34,"categorySlug":35,"summary":153,"excerpt":153,"author":154,"date":15,"readTime":101,"image":155,"tags":156,"publishedAt":160,"createdAt":160,"updatedAt":160,"filePath":161,"sourceUrl":162},"cron-1786954879160","Test What Your AI Agents Must Not Do","test-what-your-ai-agents-must-not-do-fj6y","A Guardrail Without A Negative Test Is Still An Assumption   Most AI agent governance starts...","Bobai Kato","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fres.cloudinary.com%2Fota-run%2Fimage%2Fupload%2Fq_auto%2Ftest-what-your-ai-agents-must-not-do.png",[34,41,157,158,159],"agentsafety","negativetesting","executiongovernance","2026-08-17T08:21:19.160Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Ftest-what-your-ai-agents-must-not-do-fj6y.md","https:\u002F\u002Fdev.to\u002Fotaready\u002Ftest-what-your-ai-agents-must-not-do-3e1a",{"id":164,"title":165,"slug":166,"lang":10,"category":11,"categorySlug":12,"summary":167,"excerpt":167,"author":168,"date":15,"readTime":101,"image":169,"tags":170,"publishedAt":172,"createdAt":172,"updatedAt":172,"filePath":173,"sourceUrl":174},"cron-1786954878754","Protecting Microservices: Implementing End-to-End Encryption Across REST APIs","protecting-microservices-implementing-end-to-end-encryption-across-rest-apis-gtfz","End-to-end encryption across REST APIs is the difference between a microservices architecture that...","Fu'ad Husnan","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fba3onadsxu08gb14brer.png",[11,20,12,21,171],"2026","2026-08-17T08:21:18.754Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fmicroservices\u002Fprotecting-microservices-implementing-end-to-end-encryption-across-rest-apis-gtfz.md","https:\u002F\u002Fdev.to\u002Ffuadhusnan_f44f3e13\u002Fprotecting-microservices-implementing-end-to-end-encryption-across-rest-apis-26hb",{"id":176,"title":177,"slug":178,"lang":10,"category":53,"categorySlug":54,"summary":179,"excerpt":179,"author":180,"date":15,"readTime":101,"image":181,"tags":182,"publishedAt":185,"createdAt":185,"updatedAt":185,"filePath":186,"sourceUrl":187},"cron-1786954878272","I Gave My Agent One Signed Permission It Couldn’t Mint Itself","i-gave-my-agent-one-signed-permission-it-couldnt-mint-itself-nm1o","Evidence status. The supervised operator run completed on 2026-08-09. An operator-signed job...","Self-Correcting Systems","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg1gjbzx4muvma5fznpjl.png",[53,183,76,54,184],"machinelearning","agents","2026-08-17T08:21:18.271Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fsecurity\u002Fi-gave-my-agent-one-signed-permission-it-couldnt-mint-itself-nm1o.md","https:\u002F\u002Fdev.to\u002Fkenielzep97\u002Fi-gave-my-agent-one-signed-permission-it-couldnt-mint-itself-2lpc",{"id":189,"title":190,"slug":191,"lang":10,"category":69,"categorySlug":70,"summary":192,"excerpt":192,"author":193,"date":15,"readTime":101,"image":194,"tags":195,"publishedAt":197,"createdAt":197,"updatedAt":197,"filePath":198,"sourceUrl":199},"cron-1786954877848","One GPU, four ways to share it: ten scenarios, and the headline finding I had to retract","one-gpu-four-ways-to-share-it-ten-scenarios-and-the-headline-finding-i-had-to-retract-3y1v","I measured every GPU sharing mode across ten scenarios, published a headline finding that duplicate models are nearly free on unified memory, then failed to replicate it and retracted it. Here is what the controlled replication showed and how the original measurement fooled me.","Christopher Maher","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fllmkube.com%2Fog-gpu-sharing-four-ways-devto.png",[69,70,196,60,76],"gpu","2026-08-17T08:21:17.847Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fkubernetes\u002Fone-gpu-four-ways-to-share-it-ten-scenarios-and-the-headline-finding-i-had-to-retract-3y1v.md","https:\u002F\u002Fdev.to\u002Fdefilan\u002Fone-gpu-four-ways-to-share-it-ten-scenarios-and-the-one-number-that-inverts-on-your-hardware-1bih",{"id":201,"title":202,"slug":203,"lang":10,"category":34,"categorySlug":35,"summary":204,"excerpt":204,"author":86,"date":205,"readTime":101,"image":206,"tags":207,"publishedAt":211,"createdAt":211,"updatedAt":211,"filePath":212,"sourceUrl":213},"cron-1786954563310","FastMCP Agent Mail: RBAC Tokens vs Anonymous Access, and the 403 Errors in Between","fastmcp-agent-mail-rbac-tokens-vs-anonymous-access-and-the-403-errors-in-between-ef0p","Why a FastMCP agent mail server that works anonymously in dev returns 403 behind TLS ingress, and how to wire bearer tokens without leaking them.","17\u002F8\u002F2026","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fguatulabs.dev%2Fog%2Ffastmcp-agent-mail-rbac-token-vs-anonymous-lessons-from-403-errors.png",[34,208,209,41,210],"fastmcp","mcpservers","authentication","2026-08-17T08:16:03.310Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Ffastmcp-agent-mail-rbac-tokens-vs-anonymous-access-and-the-403-errors-in-between-ef0p.md","https:\u002F\u002Fdev.to\u002Ffuthgar\u002Ffastmcp-agent-mail-rbac-tokens-vs-anonymous-access-and-the-403-errors-in-between-22pk",{"id":215,"title":216,"slug":217,"lang":10,"category":11,"categorySlug":12,"summary":218,"excerpt":218,"author":219,"date":205,"readTime":101,"image":220,"tags":221,"publishedAt":224,"createdAt":224,"updatedAt":224,"filePath":225,"sourceUrl":226},"cron-1786954562962","eBPF-Powered Request Tracing in Go Microservices Without Instrumentation Tax","ebpf-powered-request-tracing-in-go-microservices-without-instrumentation-tax-k53p","How eBPF uprobes and ring buffers replace manual trace propagation in Go services—mechanics, tradeoffs, and failure modes.","Neeraj Singhi","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fws515jitp8rvalxr8d63.png",[11,222,75,12,223],"architecture","performance","2026-08-17T08:16:02.962Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fmicroservices\u002Febpf-powered-request-tracing-in-go-microservices-without-instrumentation-tax-k53p.md","https:\u002F\u002Fdev.to\u002Fneeraj_singhi_golang\u002Febpf-powered-request-tracing-in-go-microservices-without-instrumentation-tax-34kf",{"id":228,"title":229,"slug":230,"lang":10,"category":53,"categorySlug":54,"summary":231,"excerpt":231,"author":232,"date":205,"readTime":101,"image":233,"tags":234,"publishedAt":238,"createdAt":238,"updatedAt":238,"filePath":239,"sourceUrl":240},"cron-1786954562825","How Dopamine Works: The Architecture of a Modern iOS Jailbreak","how-dopamine-works-the-architecture-of-a-modern-ios-jailbreak-woxq","Most developers will never jailbreak a phone. That is fine. This article is not a how-to, and there...","ArshTechPro","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0gnfjvl3fzvb1r1rpvci.png",[53,235,236,54,237],"ios","mobile","programming","2026-08-17T08:16:02.825Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fsecurity\u002Fhow-dopamine-works-the-architecture-of-a-modern-ios-jailbreak-woxq.md","https:\u002F\u002Fdev.to\u002Farshtechpro\u002Fhow-dopamine-works-the-architecture-of-a-modern-ios-jailbreak-2hj3",{"id":242,"title":243,"slug":244,"lang":10,"category":69,"categorySlug":70,"summary":245,"excerpt":245,"author":246,"date":205,"readTime":101,"image":247,"tags":248,"publishedAt":250,"createdAt":250,"updatedAt":250,"filePath":251,"sourceUrl":252},"cron-1786954562468","I got tired of SSHing into 10 VMs a day, so I built a live map of my whole infrastructure","i-got-tired-of-sshing-into-10-vms-a-day-so-i-built-a-live-map-of-my-whole-infrastructure-iqz9","Every day at work looked the same. Something breaks, or I need to push a new image, and I'm SSHing...","ByteStrix","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4xdxpc7fsu7nv8usri7a.png",[69,249,76,59,70],"productivity","2026-08-17T08:16:02.468Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fkubernetes\u002Fi-got-tired-of-sshing-into-10-vms-a-day-so-i-built-a-live-map-of-my-whole-infrastructure-iqz9.md","https:\u002F\u002Fdev.to\u002Fbytestrix\u002Fi-got-tired-of-sshing-into-10-vms-a-day-so-i-built-a-live-map-of-my-whole-infrastructure-2iil",{"id":254,"title":255,"slug":256,"lang":10,"category":34,"categorySlug":35,"summary":257,"excerpt":257,"author":258,"date":205,"readTime":101,"image":259,"tags":260,"publishedAt":264,"createdAt":264,"updatedAt":264,"filePath":265,"sourceUrl":266},"cron-1786954558132","The Coordinated Rename Is the Agent's Most Dangerous Refactor","the-coordinated-rename-is-the-agents-most-dangerous-refactor-iazu","Multi-agent rename tooling rewrites two hundred files in ten seconds because it noticed the drift. Half the time the drift was a load-bearing distinction the team encoded on purpose. Vocabulary curation is a real-time review surface now, and senior includes refusing changes that would be technically more consistent because the domain has two concepts the agent has no way to see.","Travis Frisinger","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fwww.tddbuddy.com%2Fimages%2Fcovers%2Fthe-coordinated-rename-is-the-dangerous-refactor.png",[34,261,41,262,263],"vocabulary","domainmodeling","codereview","2026-08-17T08:15:58.132Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Fthe-coordinated-rename-is-the-agents-most-dangerous-refactor-iazu.md","https:\u002F\u002Fdev.to\u002Ftmfrisinger\u002Fthe-coordinated-rename-is-the-agents-most-dangerous-refactor-6a",{"id":268,"title":269,"slug":270,"lang":10,"category":11,"categorySlug":12,"summary":271,"excerpt":271,"author":272,"date":205,"readTime":101,"image":273,"tags":274,"publishedAt":277,"createdAt":277,"updatedAt":277,"filePath":278,"sourceUrl":279},"cron-1786954557526","Microservices: Building Applications as Independent, Communicating Services","microservices-building-applications-as-independent-communicating-services-c45k","Microservices: Building Applications as Independent, Communicating Services   A practical,...","Rhuturaj Takle","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8puio1c7flrtyivr04hl.png",[11,12,275,237,276],"dotnet","learning","2026-08-17T08:15:57.526Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fmicroservices\u002Fmicroservices-building-applications-as-independent-communicating-services-c45k.md","https:\u002F\u002Fdev.to\u002Frhuturaj_takle\u002Fmicroservices-building-applications-as-independent-communicating-services-2eo8",{"id":281,"title":282,"slug":283,"lang":10,"category":53,"categorySlug":54,"summary":284,"excerpt":284,"author":285,"date":205,"readTime":101,"image":286,"tags":287,"publishedAt":291,"createdAt":291,"updatedAt":291,"filePath":292,"sourceUrl":293},"cron-1786954556056","From Arduino To Automotive: How I Escaped The IDE And Owned The Bus","from-arduino-to-automotive-how-i-escaped-the-ide-and-owned-the-bus-hj7g","Arduino taught me how to build. Bare metal taught me how the build actually works.  I have a lot of...","v. Splicer","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fabn3138rnp9vm0nyk54b.jpg",[53,288,289,290,54],"esp32","arduino","canbus","2026-08-17T08:15:56.056Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fsecurity\u002Ffrom-arduino-to-automotive-how-i-escaped-the-ide-and-owned-the-bus-hj7g.md","https:\u002F\u002Fdev.to\u002Fnumbpill3d\u002Ffrom-arduino-to-automotive-how-i-escaped-the-ide-and-owned-the-bus-f8f",{"id":295,"title":296,"slug":297,"lang":10,"category":69,"categorySlug":70,"summary":298,"excerpt":298,"author":299,"date":205,"readTime":101,"image":300,"tags":301,"publishedAt":304,"createdAt":304,"updatedAt":304,"filePath":305,"sourceUrl":306},"cron-1786954555663","The Backup Awakens: A Star Wars Story","the-backup-awakens-a-star-wars-story-jzpq","The Quest Begins (The \\\"Why\\\")   Honestly, I used to think backups were the boring chores you...","Timevolt","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1200,height=627,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4ynsfxiz14nn4b9ylhn6.png",[69,76,302,70,303],"docker","cicd","2026-08-17T08:15:55.662Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fkubernetes\u002Fthe-backup-awakens-a-star-wars-story-jzpq.md","https:\u002F\u002Fdev.to\u002Ftimevolt\u002Fthe-backup-awakens-a-star-wars-story-1616",{"id":308,"title":309,"slug":310,"lang":10,"category":34,"categorySlug":35,"summary":311,"excerpt":311,"author":258,"date":205,"readTime":101,"image":312,"tags":313,"publishedAt":316,"createdAt":316,"updatedAt":316,"filePath":317,"sourceUrl":318},"cron-1786954321408","Test Deletion Is a Privileged Operation","test-deletion-is-a-privileged-operation-2pfz","The cheapest way for an agent to make a failing test pass is to delete it. That is logical for the agent and catastrophic for the codebase. Tests are append-only by default. Deletion needs a human author, a separate commit, and a separate review.","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fwww.tddbuddy.com%2Fimages%2Fcovers%2Ftest-deletion-is-a-privileged-operation.png",[34,314,41,315,263],"tdd","testdesign","2026-08-17T08:12:01.408Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fai-agents\u002Ftest-deletion-is-a-privileged-operation-2pfz.md","https:\u002F\u002Fdev.to\u002Ftmfrisinger\u002Ftest-deletion-is-a-privileged-operation-264a",{"id":320,"title":321,"slug":322,"lang":10,"category":11,"categorySlug":12,"summary":323,"excerpt":323,"author":324,"date":205,"readTime":101,"image":325,"tags":326,"publishedAt":329,"createdAt":329,"updatedAt":329,"filePath":330,"sourceUrl":331},"cron-1786954321239","You Don't Always Need a Workflow Engine to Roll Back a Failed Checkout","you-dont-always-need-a-workflow-engine-to-roll-back-a-failed-checkout-1iwf","Here's a sequence that shows up in almost every Laravel app that talks to the outside world:   Charge...","Sient","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu6g3j4z4af9tbuozbz2v.png",[11,327,328,222,12],"laravel","php","2026-08-17T08:12:01.239Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fmicroservices\u002Fyou-dont-always-need-a-workflow-engine-to-roll-back-a-failed-checkout-1iwf.md","https:\u002F\u002Fdev.to\u002Fsient\u002Fyou-dont-always-need-a-workflow-engine-to-roll-back-a-failed-checkout-5gop",{"id":333,"title":334,"slug":335,"lang":10,"category":53,"categorySlug":54,"summary":336,"excerpt":336,"author":337,"date":205,"readTime":101,"image":338,"tags":339,"publishedAt":341,"createdAt":341,"updatedAt":341,"filePath":342,"sourceUrl":343},"cron-1786954321092","I Stopped Trusting AI Agents With Tools. So I Built a Gatekeeper.","i-stopped-trusting-ai-agents-with-tools-so-i-built-a-gatekeeper-9i2m","Update 08\u002F15 0.2.0 Released   github.com\u002Fdeghosal-2026\u002Fagent-tooltrust · pip install agent-tooltrust...","Debashish Ghosal","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fr97gsrqar0qk7ejjibih.png",[53,60,184,54,340],"gatekeeper","2026-08-17T08:12:01.092Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fsecurity\u002Fi-stopped-trusting-ai-agents-with-tools-so-i-built-a-gatekeeper-9i2m.md","https:\u002F\u002Fdev.to\u002Fdebashish_ghosal\u002Fi-stopped-trusting-ai-agents-with-tools-so-i-built-a-gatekeeper-26fb",{"id":345,"title":346,"slug":347,"lang":10,"category":69,"categorySlug":70,"summary":348,"excerpt":348,"author":349,"date":205,"readTime":101,"image":350,"tags":351,"publishedAt":353,"createdAt":353,"updatedAt":353,"filePath":354,"sourceUrl":355},"cron-1786954320913","I Automated My Entire GitOps Security Stack. The First Thing It Blocked Was My Own Salary.","i-automated-my-entire-gitops-security-stack-the-first-thing-it-blocked-was-my-own-salary-pko8","I Automated My Entire GitOps Security Stack. The First Thing It Blocked Was My Own...","Le Beltagy","https:\u002F\u002Fmedia2.dev.to\u002Fdynamic\u002Fimage\u002Fwidth=1000,height=420,fit=cover,gravity=auto,format=auto\u002Fhttps%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frvjfi7ee0tmi1xp1mem5.png",[69,70,54,352,76],"gitops","2026-08-17T08:12:00.911Z","\u002FUsers\u002Fnguyenanhtuan\u002FCode\u002FNuxtjs\u002Fnextpress\u002Fintlight\u002Fpublic\u002Fcontents\u002Fkubernetes\u002Fi-automated-my-entire-gitops-security-stack-the-first-thing-it-blocked-was-my-own-salary-pko8.md","https:\u002F\u002Fdev.to\u002Fle_beltagy\u002Fi-automated-my-entire-gitops-security-stack-the-first-thing-it-blocked-was-my-own-salary-227e",25,1,50,[360,363,367,369,370,371],{"name":361,"slug":362,"count":356},"All","all",{"name":364,"slug":365,"count":366},"Nuxt 4","nuxt-4",0,{"name":69,"slug":70,"count":368},6,{"name":53,"slug":54,"count":368},{"name":11,"slug":12,"count":368},{"name":34,"slug":35,"count":372},7,[374,375,376,377,378,379,380,381,382,383,385,387,389,390,392],{"name":34,"slug":35,"count":372},{"name":41,"slug":41,"count":372},{"name":54,"slug":54,"count":372},{"name":11,"slug":12,"count":368},{"name":12,"slug":12,"count":368},{"name":53,"slug":54,"count":368},{"name":69,"slug":70,"count":368},{"name":70,"slug":70,"count":368},{"name":76,"slug":76,"count":368},{"name":60,"slug":60,"count":384},4,{"name":59,"slug":59,"count":386},3,{"name":19,"slug":19,"count":388},2,{"name":20,"slug":20,"count":388},{"name":21,"slug":391,"count":388},"trending",{"name":75,"slug":75,"count":388},{"success":394,"slug":9,"lang":10,"items":395,"total":456,"page":357,"limit":457,"hasMore":394,"remaining":368},true,[396,407,417,427,446],{"author":397,"avatar":398,"role":399,"date":400,"createdAt":401,"content":402,"likes":403,"isLiked":404,"replies":405,"id":406},"Julian Sterling","J","Cybersecurity Director","2 hours ago","2026-08-17T08:09:00.576Z","Zero-Trust microsegmentation powered by eBPF and Cilium eliminates sidecar proxy overhead while delivering strict L7 network encryption. Excellent walkthrough!",27,false,[],"c-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en-1",{"author":408,"avatar":409,"role":410,"date":411,"createdAt":412,"content":413,"likes":414,"isLiked":404,"replies":415,"id":416},"Oliver Bennett","O","VP of Engineering","8 hours ago","2026-08-17T02:09:00.577Z","Top-tier technical writing. Clear architecture diagrams, reproducible benchmarks, and actionable code snippets. Bookmarked for our engineering team.",45,[],"c-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en-2",{"author":418,"avatar":419,"role":420,"date":421,"createdAt":422,"content":423,"likes":424,"isLiked":404,"replies":425,"id":426},"Kenji Sato","K","Principal Infrastructure Architect","2 days ago","2026-08-15T10:09:00.577Z","Intlight's multi-region architectural blueprints set the benchmark for ultra-resilient, enterprise-grade cloud systems in 2026.",53,[],"c-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en-3",{"author":428,"avatar":429,"role":430,"date":431,"createdAt":432,"content":433,"likes":434,"isLiked":404,"replies":435,"id":445},"Marcus Vance","M","Head of AI Engineering @ NextWave","1 hour ago","2026-08-17T09:09:00.576Z","The Agent Memory Pipeline section hits the nail on the head. Hierarchical memory indexing with Qdrant vector search is the only sustainable way to scale long-context autonomous agents.",42,[436],{"author":437,"avatar":438,"role":439,"date":440,"createdAt":441,"content":442,"likes":443,"isLiked":404,"id":444},"Sarah Jenkins","S","LLM Research Scientist","30 mins ago","2026-08-17T09:39:00.576Z","Yes! Separating episodic memory from working context allows agents to operate indefinitely without token explosion.",19,"r-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en-4-1","c-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en-4",{"author":447,"avatar":448,"role":449,"date":450,"createdAt":451,"content":452,"likes":453,"isLiked":404,"replies":454,"id":455},"Priya Sharma","P","Distributed Database Architect","5 hours ago","2026-08-17T05:09:00.577Z","The latency comparisons between gRPC Protobuf binary encoding and standard JSON payloads demonstrate exactly why internal services should deprecate REST for high-throughput pipelines.",38,[],"c-what-is-the-circuit-breaker-pattern-a-practical-guide-4j68-en-5",13,5,1786961340902]