Skip to content
Putting technology to work.
Insights to guide decisions and action.

Search articles

Lessons From the Discord Voice Outage Postmortem: Architecture Dependency Audits in Custom Development to Uncover Hidden Circular Dependencies 2026

Table of contents · 11 items

On May 15, 2026, InfoQ published Discord Reveals How a Hidden Circular Dependency Triggered Its March Voice Outage, reporting on a detailed postmortem by Discord regarding the "undetected circular dependency" that caused a complete shutdown of its voice services on March 25, 2026.

The core issue was simple: "Service A depended on B, B depended on C, and C was waiting for A to finish starting up." Dependencies that resolved smoothly in sequence under normal conditions created concurrency conflicts during simultaneous startup within a specific incident recovery sequence, driving the entire voice infrastructure into a cascading failure. Outages of this kind, which even Discord with its 600 million monthly active users could not prevent, routinely lurk in mid-sized enterprise production systems that have run for 3 to 10 years. This article outlines the design of an "architecture dependency audit" service delivered for clients.

Why hidden circular dependencies pose the greatest outage risk for mid-sized enterprises

StructureWhy it goes unnoticed
Midway through microservice migrationService boundaries shift frequently, leaving dependency maps outdated
Bidirectional usage of shared librariesPaths like A → Shared → B and B → Shared → A are overlooked
Deferred resolution in DI containersStartup appears sequential initially, but collapses upon restart
Vendor-provided packagesInternal dependencies are black boxes that cannot be scanned
Siloed architectural knowledgeDependency maps are lost when original designers leave

Uncovering architectures with "benign during normal operations, lethal during incident recovery" characteristics requires specialized architecture dependency audits. While we covered graph management of model dependencies in Netflix Model Lifecycle Graph for Custom MLOps Governance, this article extends that approach to enterprise systems overall.

Three lessons extracted from the Discord postmortem

Lesson 1: Dependencies that cannot be verified during normal operations are the biggest landmines

Discord's outage surfaced for the first time during an incident recovery sequence. Unless you intentionally reproduce recovery sequences using chaos testing, dependency issues remain invisible.

Lesson 2: Service boundary diagrams always drift from actual traffic

Discord had internal dependency diagrams. However, because "diagrams unupdated for over six months" diverged from reality, the circular dependency was never detected. A mechanism to "generate dependency graphs from live traffic" is indispensable.

Lesson 3: Impossible to detect with unit testing

Circular dependencies cannot be detected by unit tests, integration tests, or E2E tests. It is necessary to continuously scan runtime dependencies at the service mesh layer or via eBPF.

The four phases of building an architecture dependency audit for clients

Phase 1: Baseline assessment (3–4 weeks)

Collect the client's architecture diagrams, repository structures, and service mesh configurations to establish an "official dependency graph." In parallel, collect 2 weeks of actual traffic logs using tools like OpenTelemetry, Cilium Hubble, or Pixie.

Phase 2: Automated dependency graph generation and diff analysis (2–3 weeks)

Generate a dynamic dependency graph from live traffic logs and report the diff against the official diagram. In our experience, 30% to 60% of active dependencies are missing from official diagrams in the vast majority of cases.

Phase 3: Circular dependency detection + risk prioritization (2–3 weeks)

Extract circular paths using NetworkX, Graphviz, Backstage Tech Insights, or similar tools, prioritizing risk based on "blast radius during outages × recovery difficulty."

Phase 4: Chaos testing + remediation roadmap (4–6 weeks)

Reproduce incident recovery sequences using chaos testing for the top 5 to 10 priorities, formulating a roadmap of remediation proposals to break cycles. Propose locking startup ordering for the short term, and making dependency flows strictly unidirectional over the medium to long term.

Standard technology stack set for custom development

LayerRecommended technologyAlternative
Dynamic dependency collectionCilium Hubble + eBPFOpenTelemetry + Tempo
Static dependency analysisBackstage Tech Insightsdependency-cruiser / Madge
Dependency visualizationBackstage + GraphvizStructurizr / C4 model
Chaos testingChaos Mesh / GremlinLitmus Chaos
ObservabilityGrafana + PrometheusDatadog
Continuous scanningGitHub Actions + weekly RoutineArgo Workflows
Report generationNotion + Looker StudioConfluence

Combining this particularly with Continuous Profiling for Clients With Grafana Pyroscope 2.0 establishes a robust foundation to monitor both "dependencies and performance" continuously.

Which organizations this fits and which it does not

Suitable organizationsUnsuitable organizations
Operating microservices for 3+ yearsOperating standalone monoliths
Experienced unexplained outages in the past yearVirtually zero history of outages
Service boundaries change frequentlyArchitecture remains static
SRE teams in early setup phaseMature SRE culture firmly established
Organizations advancing in-house engineeringOperating exclusively on third-party vendor packages

Six clauses to include in client contracts

ClauseDetailsWhat the client should verify
Audit scopeTarget services and environments (production / staging)Liability for out-of-scope systems
Data collection scopeAgreements on trace and log collectionHandling personal data
Chaos testing timeframesProduction vs. staging, blast radiusUser impact tolerances
Remediation liability boundariesLimited to proposals, or including implementationAllocation of implementation responsibility
Report distribution scopeExecutive leadership / engineering teams / audit firmsScope of non-disclosure obligations
Contract renewal termsAnnual / semi-annual audit renewalsFee adjustments upon renewal

Client-side ROI estimation (model for mid-sized SaaS with 200 employees)

ItemBefore auditAfter auditDifference
Annual incident count12 incidents4 incidents-8 incidents
Recovery time per incidentAvg. 4.5 hoursAvg. 1.2 hours-3.3 hours
Annual downtime from incidents54 hours4.8 hours-49 hours
Opportunity loss per hour1,000,000 yen1,000,000 yen
Annual opportunity loss54 million yen4.8 million yen-49.2 million yen

Standard: Even at this investment level, the ROI exceeds 6x. Even for large-scale engagements, it delivers returns recoverable within the first year.

Five common pitfalls

Pitfall 1: Auditing solely from official diagrams

Audits relying solely on official diagrams are proven to miss 30% to 60% of active dependencies. Dynamic analysis using live traffic logs is indispensable.

Pitfall 2: Running chaos testing directly in production

Running chaos tests in production without staging validation carries an exceptionally high probability of causing genuine outages. The sequence of two staging cycles followed by production is non-negotiable.

Pitfall 3: Settling for "fixed restart ordering" to resolve dependencies

While effective as a short-term workaround, having humans memorize restart sequences leaves knowledge siloed. A roadmap to make dependency flows strictly unidirectional over the medium to long term is essential.

Pitfall 4: Leaving third-party vendor packages as "black boxes"

Internal dependencies of commercial packages can be surfaced by adding trace instrumentation and requesting disclosures from vendors. Be sure to include contract negotiations within the audit scope.

Pitfall 5: Stopping at deliverable reports

Simply handing a report to executives will not move engineering teams. The golden rule is to mandate "integration into the next fiscal year's roadmap" within the contract.

90-day action plan

WeekAction
Week 1〜4Baseline assessment + dynamic dependency collection
Week 5〜7Dynamic dependency graph generation + diff analysis
Week 8〜10Circular dependency detection + risk prioritization
Week 11〜13Chaos testing + presenting remediation roadmap

Summary — Preempting through client services what 600-million-user Discord could not prevent

Discord's March voice outage demonstrated to the world that "dependencies undetectable during normal operations" represent the single greatest outage risk. Auditing this entirely in-house is impractical for mid-sized enterprises, making specialized audit services from external partners the most cost-effective countermeasure.

If you are dealing with challenges like "an increase in unexplained outages" or "tangled service boundaries that obscure the current state," feel free to contact us via our contact form.

Sources

Share this articleXFacebook
Kakeru Suzuki

Fascinated by the possibilities of technology, has had a deep interest in programming and digital art since student days

Turn this article's theme into your company's next step

Concrete steps forward for your organization.

We organize your desired architecture, legacy systems, and operational requirements to formulate your next steps toward execution.

  • Desired architecture
  • Integration with existing environments
  • Operational requirements
Consult on development & operations initiatives

You can consult with us from the initial conceptual stage. Details from this article will be carried over to the inquiry form.

Receive the latest articles by email