Business continuity
A business continuity page is usually a promise. This one is an inventory: for each kind of failure, what is in place, and what has been rehearsed rather than merely configured.
The failures, and what stands between you and them
Section titled “The failures, and what stands between you and them”| Failure | What is in place | Rehearsed? |
|---|---|---|
| One Azure availability zone becomes unavailable | Zone-redundant database with a standby in a different zone, read as Healthy | Not rehearsed by us — failover has not been staged |
| Data is lost or corrupted (bad import, bad migration) | Point-in-time restore | Yes — drill run end to end, result PASS |
| A merchant damages their own data | Merchant-initiated backup and restore | Not separately drilled |
| The platform stops responding | Five alert rules with an action group | Yes — an alert was provoked and observed firing, Sev 1 |
The “rehearsed?” column is the one worth reading. Everything in the second column is real; only two of the four have been put under load on purpose.
What happens during an incident
Section titled “What happens during an incident”- Detection. An alert fires against the platform metrics — see Monitoring & alerting.
- Assessment. The failure is classified: automatic recovery (a zone failover), data recovery (a restore), or a fault that needs a fix and a deploy.
- Recovery. For data loss, the point-in-time restore path is the one that has been drilled. The drill produced a finding worth repeating here: a restored database server does not inherit the original’s firewall rules, so restoring the data is not the last step.
- Afterwards. The cause is written down where it is measurable rather than described, so the next occurrence is recognised rather than rediscovered.
Recovery numbers — capability, not a commitment
Section titled “Recovery numbers — capability, not a commitment”These are measurements of what today’s setup allows. They are not a service level agreement: CIQRA does not publish one, and printing “our RTO is X” would manufacture a promise out of a capability.
| What | Measured | Where it comes from |
|---|---|---|
| Data-loss window (RPO) | ≤ 5 minutes with point-in-time restore | Continuous write-ahead-log archiving on Azure Flexible Server |
| Restore horizon | point-in-time restore retention is set to 35 days. Effective coverage grows with server age and reaches the full 35 days on 6 September 2026 | Measured 9 August 2026: 6.7 days — backup.earliestRestoreDate = 2026-08-02T12:34:59Z, server createdAt = 2026-08-02T12:29:30Z |
| Off-region backup copy | Enabled | geoRedundantBackup |
| Database recovery (RTO) | in-region takeover in 60–120 seconds | The platform’s high-availability configuration |
| Application recovery | container revision rollback in ~2 minutes | Timed during a real recovery on 9 August 2026 |
Read those last two rows carefully, because we have:
The one recovery path that has been rehearsed end to end is the point-in-time restore, and its result is above: PASS.
What this page does not say
Section titled “What this page does not say”- It does not claim a tested failover between availability zones. The configuration is read as healthy; a staged failover has not been performed.
- It does not describe network-perimeter protections. That has not been measured for publication.