Design layer overview
The engines that place, plan, price and review an Equinix deployment, what each one reads, and what is still planned.
Purpose#
The API layer creates and reads individual resources. The design layer works on the decisions around them: the choice of metros, the topology, the cost, and the sizing of an estate that already exists. The engines only read from the account, with one exception: executing or reconciling a deployment plan creates resources.
Engines#
| Engine | Entry point | Question it answers | Status |
|---|---|---|---|
| DesignSpec | DesignSpec.builder(), DesignSpecIO | What is the design intent, as a versioned document | New in 4.0 |
| Metro Optimizer | design.optimizeMetros() | Which set of metros serves the sites, workloads and clouds best | Rebuilt in 4.0 |
| Deployment Wizard | design.deploymentWizard(result) | What exactly to create, in what order, at what price; and whether live state still matches | Lifecycle New in 4.0 |
| Estate analysis | design.analyzeEstate() | What to change in the estate that already exists | New in 4.0 |
| Peering Intelligence | design.peeringIntelligence() | Where target networks are present at Equinix, and what a metro loss removes | |
| Cost and value | design.savingsCalculator(), design.tcoComparison() | What a design costs and what it saves, with the source of every figure | |
| Cloud-to-cloud | toCloud(...) on the calculators, cloudToCloudStrategy(...) on the wizard | Whether traffic between two clouds belongs on Equinix or on a native provider link | Beta |
Entry points#
Design gives access to the engines on top of a Fabric client. The engines read through the FabricGateway interface (metros, service profiles, Cloud Routers, connections, routing protocols, prices) and reuse the client's token and connection pool.
import com.eqixiac.equinix.Design;
import com.eqixiac.equinix.Equinix;
try (Equinix eq = new Equinix(credentials)) {
Design design = eq.design(); // or Design.over(fabric)
design.optimizeMetros(); // builders; nothing is sent until the terminal call
design.tcoComparison();
design.analyzeEstate();
}Fabric exposes the same builders directly: fabric.optimizeMetros(), fabric.deploymentWizard(result), fabric.peeringIntelligence(), fabric.savingsCalculator(), fabric.tcoComparison().
Shared rules#
All engines handle missing data and provenance in the same way.
- An engine reports an item that it cannot price as unpriced, with a reason, and does not count it as zero. A latency that was neither measured nor computable is treated as unknown and is left out of scoring.
- An engine adds amounts only within one currency and applies no exchange rate. It reports a result with mixed currencies as one subtotal per currency.
- Each price in a result states its source: the live Equinix price search, a figure supplied by the caller, a provider's public price API, the bundled dated reference table, or an estimate.
- A result records the fingerprint of the
DesignSpecit was computed from and the time of the data it read, so that a run can be repeated and compared.
Data sources#
| Data | Source | Notes |
|---|---|---|
| Metros, regions, connected-metro latency | Fabric Metros API | avgLatency is round-trip. Measured live on 2026-11-11: SV to DC 65.8 ms. |
| Which cloud is reachable in which metro | Fabric service profiles | |
| Equinix prices | Fabric price search, live | Falls back to the reference card when a lookup cannot be answered |
| Cloud egress prices | Bundled reference table dated 2026-06, or the providers' public price APIs when enabled | List prices; a negotiated discount is not in them |
| Native cloud-to-cloud prices and region pairs | Bundled tables dated 2026-09-21 | Copies of provider pages; they go stale |
| Network presence at exchanges and facilities | PeeringDB | Separate rate limit; optional API key |
| IBX coordinates | Internet Access | For IBX-to-IBX latency floors |
Planned#
The plan lifecycle (diff, reconcile, rollback) and estate analysis entered the tree during the week this page was written. Their API may still change before 4.0.0 is published.