Everbridge · xMatters

Service Intelligence

Finding the root cause of an incident across a complex web of services.

When a service degrades, the failure can cascade through a complex web of dependencies, triggering alerts across many connected services. I designed the service dependencies map so IT operations and SRE teams could trace those relationships to identify potential root causes and understand what could be affected next.

An incident console showing impacted services, a service info card with a Run Automation menu open, and an automation list sorted by Most Relevant where each automation is tagged with the service it belongs to.

At a glance

Role
Lead designer - concept through shipped experience
Team
The CPO, the CTO and engineering leads
Users
IT operations, SRE and on-call engineers during live incidents
Shipped in
xMatters On-Demand, and extended in every release after

Context

xMatters helps IT operations and SRE teams detect, investigate, and respond to service disruptions.

As systems became more distributed, a problem in one service could affect several others. Responders needed to understand those dependencies to determine where a problem started and what might be affected next.

Problem

Complex service relationships created alert floods with no clear way to find the root cause.

A service can depend on several upstream services and support several downstream services. A failure in one service could trigger alerts across multiple dependent services. Incident responders could be flooded with alerts but had no way to see which one represented the original failure and which were cascading effects.

Incident responders needed to answer three questions:

  • Where did the problem start?
  • Which services are contributing to it?
  • What could be affected next?

The challenge was to make these relationships understandable without overwhelming responders with the entire service topology.

Approach

I designed the Service Dependencies Map as an interactive way to investigate the relationships behind an incident.

Rather than showing the entire service topology at once, the map starts with the service at the center of the investigation and lets responders progressively reveal the relationships they need to understand.

0-to-1: I led it from concept to release, working directly with the CPO, the CTO and the engineering leads - because I was proposing a new first-class object in the data model, not a screen.

A service knows who owns it, what it depends on, what depends on it, and whether it is healthy. Once that object exists, dependency is something the product can draw instead of something the responder has to remember.

Explore relationships in either direction

The dependency model is not a simple hierarchy. A service can depend on multiple upstream services while supporting multiple downstream services.

I designed the interaction model to let responders follow either direction:

  • Upstream: What is this service dependent on? Where could the problem originate?
  • Downstream: What depends on this service? What could be affected next?

Each expansion reveals another level of the topology, allowing responders to follow a specific line of investigation rather than navigating the entire graph.

Expand to investigate, collapse to refocus

Progressive expansion solves one problem but can create another: the map can quickly become crowded as more relationships are revealed.

I designed branch-level collapse so responders could remove an entire line of exploration while preserving the rest of the investigation. A hover preview shows which services and connections will be hidden before the branch is collapsed.

This creates a simple interaction loop: Expand to investigate → collapse to refocus → explore another path.

The pattern lets the graph grow as needed without requiring the user to manage the entire topology at once.

Expand to investigate
Collapse to refocus

Let responders arrange it

Auto-layout is a starting position, not an answer. Services drag where the responder wants them, and selecting one darkens its own connections so it stays legible in a crowd.

Connections follow the service, and the one you are holding stays legible in the crowd.

Search and navigate the graph

Investigation does not always start from the service at the center of the incident. Responders may already have a particular service in mind based on alerts, experience, or other information.

Search lets them jump directly to a service and bring its relationships into the current view, rather than manually traversing the graph to find it.

Minimap, zoom and fit-to-screen cover the case the default view is trying to avoid: a map that has outgrown the screen.

Zoom out for the shape of the estate, in to read it. The minimap answers “where am I”.

The map is a place to act

A diagram you have to leave costs a context switch nobody has during an incident. From a service on the map you can open its info card, engage the group that owns it, and run automations scoped to it - health check, rollback, status-page update - without leaving the thing that told you where to run them.

Two views side by side. On the left, a service card in the incident console's Impacted Services panel with a Run Automation menu open, offering Rolling Restart and Regional Failover. On the right, the same menu opened from a service node on the dependency map.

Because an automation belongs to a service, the incident already knows which ones matter - ranked against the impacted services instead of listing every runbook in the company.

An incident console showing impacted services, a service info card with a Run Automation menu open, and an automation list sorted by Most Relevant where each automation is tagged with the service it belongs to.

Design for reuse

The dependency map established reusable interaction patterns for working with complex relationships:

  • Progressive disclosure to reveal complexity on demand
  • Directional exploration to distinguish upstream and downstream relationships
  • Branch-level collapse to manage growing graphs
  • Search-to-context to quickly locate a known service
  • Contextual actions to keep relevant information and actions close to the service

Together, these patterns made a complex service topology navigable without requiring responders to understand the entire system at once.

Outcome

The Service Dependencies Maps gave operations and SRE teams a way to investigate incidents through the relationships between services, rather than reconstructing those relationships from alerts alone.

More importantly, the work established a reusable, service-centric interaction model for xMatters. Services could be understood not just as sources of alerts, but as connected objects with dependencies, impact, ownership, and actions.

The result was a foundation that could extend beyond dependency visualization to support investigation, impact analysis, navigation, and remediation across the product.

🔗 Read more about: service dependencies maps