InfraForge / Engineering
InfraForge for engineers

Know where your system breaks, before your users find out.

Replicate the infrastructure you run, play real recorded traffic through it, and see which part gives out first, the second it happens, and what it takes down with it.

Load468,000 requests per hour
Faultapp-2 crashes at 60s
01 · The problem

A load test tells you it got slow. It doesn't tell you why.

Dashboards show symptoms after the fact. Diagrams show what you meant to build. Neither shows how this exact system behaves when a server dies at the worst possible moment.

Most capacity decisions are made from a mix of vendor numbers, a load test against staging, and experience. That works until the failure you didn't test for. Then the questions start: which part saturated first? Was it the server that died, or the one that took its traffic? Did the database slow everything else down?

InfraForge answers those questions before you ship. You rebuild your system as it really is, play a recording of real traffic through it, inject the failure you're worried about, and read what happened second by second. Nothing is estimated after the fact; every number on the screen is the recorded value at that second.

02 · How it works

Replicate, replay, read.

Three steps, each one honest about what it knows. If a value wasn't recorded, InfraForge shows it as unknown, never as zero.

01

Replicate the system you actually run.

Place a load balancer, app servers and a database. Size each one, connect them the way traffic really flows, and set the limits you have in production.

lbLoad balancer
app-1, app-22 × virtual machine
dbDatabase
02

Replay real recorded traffic.

468,000 requests per hour, steady, 80% reads, medium payloads, applied second by second. Then inject the fault you're worried about: here, app-2 crashes at second 60 and stays down for 30 seconds.

03

Read where it broke, and why.

Every component reports its load, CPU and health every second. When something fails, you get the chain of events that led to it, read straight from the recording.

app-1saturated
Requests
130 rps
CPU
100%
Full since
second 63

app-2 crashed at second 60; the balancer sent app-1 its share too.

03 · A recorded run

Ninety seconds, one crash, every second on the record.

The run below is the challenge “Lose an app server”: 468,000 requests per hour, steady, 80% reads, medium payloads. Scrub through it and watch the bench.

Live · drag the timeline below
90 s recorded
app-1dblb
0255075100 0s15s30s45s60s75s90s app-2 crashes · 60s app-1dblb
Fig. 1 · The recorded run, liveDrag along the chart or press play. The bench shows that exact second: lamps, traffic on the cables, the failed server. Before the crash, app-1 and app-2 share the load at about 43% CPU each; one second after app-2 stops, app-1 is at 86.3%, and by second 63 it is at 100%.
Load balancer130 → 130 rps
app-165 → 130 rps
app-265 → 0 rps
Database156 → 156 rps
Fig. 2 · Requests per secondTraffic into the balancer never changes at the crash: it stays at 130 rps. What changes is where it goes. app-2 drops to zero and app-1 takes all 130.
04 · Why it broke

The server that died wasn't the one that failed the test.

app-2 crashing was the experiment. The real finding is what the remaining system did next.

Fig. 3 · Second 70app-2 is down; app-1 and the database are both running hot.
  1. 59s

    Two servers, plenty of room

    The balancer sends 65 rps to each app server. Both sit near 43% CPU.

  2. 60s

    app-2 crashes

    Its process stops. From the next second it answers nothing and its cables drain.

  3. 61s

    app-1 takes everything

    Its traffic doubles from 65 to 130 rps and its CPU jumps to 86.3% in one second.

  4. 62s

    The database runs hot

    Its CPU reaches 95.4% at 156 rps.

  5. 63s

    app-1 is saturated

    CPU hits 100%. One server was never enough for this traffic; two only looked like it.

05 · What you can replicate

Start with the parts every system has.

Each component behaves like the real one under load: it saturates, queues, fails and recovers. New components arrive only once they are realistic.

ComponentWhat is modelledStatus
Load balancerHow requests are split across targets, and where they go when a target stops answering.Available
App serversRequests, CPU and memory on each instance, every second, sized like real machine types.Available
DatabaseQuery load and CPU, and the second it saturates.Available
CacheWhat it absorbs, and what reaches the database when it misses or fails.Available
Queues and workersBacklog, consumers and retries.Planned
Autoscaling groupsNew instances, their warm-up time, and the config they inherit.Planned
CDN and object storageEdge hits, origin load and transfer.Planned
06 · What you measure

Every second, for every component.

These are the values InfraForge records. Anything it cannot measure yet is labelled as such, so you never mistake a gap for a zero.

Requests per secondRecorded

How much traffic each component handles, and how it shifts when something fails.

CPURecorded

How busy each component is. Sustained 100% means requests are waiting.

MemoryRecorded

How much each instance holds, per second.

HealthRecorded

Healthy, under pressure, saturated or failed, with the second it changed.

Latency p50 · p95 · p99Coming with the new engine

What a typical request, and your slowest requests, experience.

Monthly costComing with the new engine

What the setup costs per month at real provider prices, so you can weigh headroom against spend.

07 · Failures you can inject

Break it on purpose, on a timeline.

Pick what fails, when, and for how long. The recording shows the rest of the system's response.

FailureWhat happensWhere to see it
Server crashThe process stops; the balancer must route around it.Lose an app server
CPU pressureExtra load lands on one server for a set time.Headroom under CPU pressure
Cache failureThe cache goes down and the database takes every read.When the cache fails
Traffic burstsLoad doubles in short bursts.Survive the peak
08 · Where it fits

Not a load test. Not a diagram.

InfraForge sits between the tools you already use: it runs like a test, reads like a diagram, and explains like a post-mortem.

Load testingDiagram toolsInfraForge
Needs the real system runningYesNoNo
Shows behaviour under loadYesNoYes, recorded per second
Explains why something failedNoNoYes, as a chain of events
Injects failures on a timelineSometimesNoYes
09 · Questions

What engineers ask first.

Short answers. The docs go deeper.

Is this a simulation or a real deployment?

A simulation. Nothing is deployed to your cloud account. InfraForge models each component's behaviour under load and records every second, so you can study a failure without causing one.

Where does the traffic come from?

From recorded workloads. The run on this page is 468,000 requests per hour, steady, 80% reads, medium payloads. The same recording is replayed every time, so runs are repeatable and comparable.

How realistic are the numbers?

Each value is recorded from the engine at that second, never filled in afterwards. Where a value isn't measured yet, such as latency percentiles today, it is shown as unknown rather than as zero.

Which clouds and components are supported?

Load balancers, app servers, a database and a cache are available now. Queues, autoscaling groups, CDN and object storage are planned and will be added only when they are realistic.

Do I need to install anything?

No. InfraForge runs in the browser.

What does it cost?

It is free during early access.

Start

Replicate one system you run, and break it on purpose.

It takes a few minutes to build. The recording takes 90 seconds.