Opérations, gestion et continuité
L'entreprise reste la vôtre. La machinerie en dessous est la nôtre à faire tourner.
Systems construit le sol et le sécurise. Infrastructure prend les commandes : nous l'installons, nous la maintenons en marche jour après jour, et c'est nous qui sommes éveillés quand quelque chose bouge. Une salle de marché, une entreprise, ou une seule personne avec une boutique en ligne — les mêmes mains et la même veille.
Six choses qui quittent vos mains le premier jour et ne reviennent pas.
Où ça tourne, à quelle taille, et ce que cela doit coûter. Nous le choisissons, nous l'installons, et nous le redimensionnons quand votre trafic change — avant que cela ne devienne un problème visible.
Domaine, certificats, et courrier qui arrive au lieu de tomber dans un dossier spam. Renouvelés avant même que vous ne vous souveniez qu'ils existent, car un nom expiré est une entreprise fermée.
Le paiement, les moyens de paiement, pays par pays, et la commande qui ne doit jamais se perdre. Construite une fois, puis maintenue en état — y compris le jour où votre fournisseur change quelque chose.
Des sauvegardes auxquelles vous n'avez jamais à penser, et une restauration que nous avons réellement effectuée. Une copie que personne n'a jamais ramenée n'est pas une copie — c'est un espoir.
Des pages qui s'ouvrent rapidement, où que se trouve le visiteur. La lenteur, c'est de l'argent qui s'en va, donc la vitesse fait partie de la gestion de la maison, pas une ligne supplémentaire à acheter.
Mises à jour, certificats sur le point d'expirer, le composant avec une faille. Fermée par nous, sur notre calendrier — pas sur votre inquiétude, et pas à trois heures du matin chez vous.
Ce qui se passe réellement entre l'instant où quelque chose casse et l'instant où ça se redresse.
Chaque requête, chaque porte et chaque clé est déposée en périphérie à l'instant même. Rien n'attend qu'une tâche nocturne le découvre au matin.
Pas une boîte mail, pas un tableau de bord que quelqu'un ouvrira peut-être demain. L'alerte va là où elle ne peut pas être tranquillement ignorée.
Ce qui s'est passé, ce que cela a touché, et ce qui a déjà été fait. Vous n'apprenez pas que votre maison est en panne par vos propres clients.
Les mêmes mains qui l'ont installé entrent et le réparent. Il n'y a aucun niveau au-dessus de nous à qui le transmettre, donc il n'y a personne pour nous à attendre.
Ce qui a échoué, pourquoi, et ce que nous avons changé pour que cela ne puisse pas échouer deux fois de la même façon. Une panne qui n'est pas consignée revient.
Une seule feuille. Lisible par quelqu'un qui n'est pas ingénieur, car c'est à lui qu'elle s'adresse.
Ce que nous vous remettons, c'est la moitié qui tourne dans votre maison : l'exercice qui teste vos propres copies chaque nuit, et l'appel unique qui place une maison sous gestion. Notre salle des opérations reste fermée — ce qui tourne de votre côté est à vous de lire avant de lui faire confiance.
# put one house under management POST https://api.matchtopalgorithm.ai/v1/operate/houses Authorization: MT-••••-••••-•••• — one key, one house Content-Type: application/json { "house": "shop.yourcompany.com", "runs": ["web", "checkout", "mail", "database"], "watch": ["uptime", "certificates", "backups", "speed"], "drill": { "restore": "nightly", "prove": "orders" }, "wake": ["telegram", "phone"], — a mailbox is not a watch "window": "always", "clock": "Europe/Zurich", — the sheet arrives in your hour "sheet": "monthly" } 202 Accepted { "house_id": "h_4c81e07a", "under_watch": "live", "first_sheet": "2026-11-01", "keys_held": "yours — handed back on request" }
"""MatchTop · restore drill — the piece that proves a copy is a copy. Standard library only. It runs in your house, on your own copies, where you can watch it.""" import hashlib, hmac, json, os, subprocess, time from pathlib import Path from urllib.request import Request, urlopen KEY = bytes.fromhex(os.environ["MT_KEY"]) # one key per house, never on disk EDGE = os.environ["MT_EDGE"] # no address baked into the build SHADOW = Path(os.environ["MT_SHADOW"]) # a shadow copy. never the live house. def newest_copy(vault: Path) -> Path: """Drill the copy you would actually reach for, not a convenient one.""" copies = sorted(vault.glob("*.dump"), key=lambda p: p.stat().st_mtime) if not copies: raise FileNotFoundError("the vault is empty") # the loudest fault there is return copies[-1] def fingerprint(copy: Path) -> str: """So that tomorrow we can prove this was the file we brought back.""" h = hashlib.sha256() with copy.open("rb") as f: for block in iter(lambda: f.read(1 << 20), b""): h.update(block) return h.hexdigest() def bring_it_back(copy: Path) -> dict: """Restore into the shadow, then ask it a question only a live house can answer.""" SHADOW.mkdir(parents=True, exist_ok=True) started = time.monotonic() subprocess.run(["pg_restore", "--clean", "-d", "mt_shadow", str(copy)], check=True, timeout=1800) asked = subprocess.run(["psql", "-d", "mt_shadow", "-tAc", "select count(*) from orders"], capture_output=True, text=True, check=True) return {"seconds": round(time.monotonic() - started, 1), "orders": int(asked.stdout.strip())} # a restore nobody queried is not a restore def file_it(result: dict) -> str: """Signed and filed, pass or fail. The month's sheet is written from these.""" body = json.dumps(result, separators=(",", ":"), sort_keys=True).encode() call = Request(EDGE, body, { "Content-Type": "application/json", "X-MT-House": os.environ["MT_HOUSE"], "X-MT-Seal": hmac.new(KEY, body, hashlib.sha256).hexdigest(), }) with urlopen(call, timeout=8) as answer: # we dial out. nothing dials in. return json.load(answer)["filed"] def drill(vault: Path) -> None: copy = newest_copy(vault) result = {"copy": copy.name, "age_hours": round((time.time() - copy.stat().st_mtime) / 3600, 1), "fingerprint": fingerprint(copy)[:16]} try: result |= bring_it_back(copy) result["verdict"] = "came back" except Exception as fault: result["verdict"] = "did not come back" # the drill exists for this branch result["fault"] = str(fault)[:200] # and this is the night we are worth it file_it(result) if __name__ == "__main__": drill(Path(os.environ["MT_VAULT"])) # every night, watched or not
Aucun chiffre client sur cette page. Nous ne chiffrons rien que nous n'ayons mesuré nous-mêmes, donc ces quatre chiffres viennent des maisons que nous faisons tourner de nos propres mains.
Pas une comparaison de prix. Une comparaison de la façon dont les deux maisons sont construites.
Rien de tout cela n'est une liste de fonctionnalités, et c'est exactement pourquoi cela ne peut pas être sous-coté. Une entreprise avec un tour de garde ne peut pas vous donner la personne qui a construit votre système. Une entreprise dont la facture doit grossir chaque année ne peut pas en retirer une ligne. Une entreprise qui ne fait qu'observer ne peut pas réparer. Elles ne sont pas derrière nous — elles sont construites différemment, et elles ne peuvent pas passer de l'autre côté sans cesser d'être elles-mêmes.
C'est aussi pourquoi il n'y a pas de grille tarifaire sur cette page. Nous regardons ce qui ne doit pas s'arrêter, nous mesurons l'opération, puis nous chiffrons ce que nous avons mesuré. Chacun paie à sa propre taille — une boutique tenue par une seule personne n'est pas facturée comme si c'était une salle de marché.
Deux lignes suffisent. Nous les lisons nous-mêmes et répondons nous-mêmes — il n'y a aucune file derrière cette fenêtre.
C'est déjà sur un écran à Zurich — pas dans une file, pas dans un ticket. L'ingénieur qui ferait tourner ceci le lit, et répond lui-même.
·