✕

Opérations, gestion et continuité

Infrastructure

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.

Vous lisez une maison que nous faisons tourner nous-mêmes. Elle veillait déjà quand vous êtes arrivé — ·

Ce que vous arrêtez de porter

Six choses qui quittent vos mains le premier jour et ne reviennent pas.

Les machines

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.

L'adresse

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.

La boutique

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.

Les copies

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.

La vitesse

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.

Les correctifs

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.

Qui veille, et quand

Ce qui se passe réellement entre l'instant où quelque chose casse et l'instant où ça se redresse.

L'instant même

Le système le remarque

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.

Dans le même souffle

Un téléphone sonne à Zurich

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.

Avant que vous ne demandiez

Vous l'apprenez de nous

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.

Jusqu'à ce que ça se redresse

Ça se répare, ça ne s'escalade pas

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.

À la fin du mois

C'est consigné par écrit

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.

Ce qui arrive par écrit, chaque mois

Une seule feuille. Lisible par quelqu'un qui n'est pas ingénieur, car c'est à lui qu'elle s'adresse.

Heures debout
Les heures où c'était debout, et les minutes où cela ne l'était pas — mesurées depuis l'extérieur de votre maison, donc le chiffre n'est pas à nous d'enjoliver.
Ce que nous avons changé
Chaque changement effectué, en langage clair. Vous pouvez le lire en une minute et savoir exactement ce qui a bougé.
Ce qui a cassé
Ce qui a échoué, ce que cela a touché, et ce que nous avons fait — y compris les pannes que vous n'avez jamais remarquées, qui sont la plupart.
Ce qui vient ensuite
Ce que nous avons l'intention de faire le mois prochain, écrit avant de le faire. Rien n'arrive à votre maison comme une surprise.
Ce que cela coûte
Le même chiffre que le mois dernier, sauf si vous avez demandé quelque chose de nouveau. Aucune ligne n'apparaît jamais sur cette feuille d'elle-même.

L'interface

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.

"""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

Mesuré sur notre propre maison

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.

2
maisons que nous faisons tourner
celle-ci et celle d'une clinique — nous sommes notre propre premier client, et notre propre première plainte
7
portes sur celle-ci
une par langue, toutes sous une veille unique et une facture unique
0
console à apprendre
rien où vous connecter et rien à retenir — vous demandez, et c'est fait
1
personne répond
aucun niveau, aucun ticket, et personne devant lui à prendre des notes

Ce qui ne peut pas être copié

Pas une comparaison de prix. Une comparaison de la façon dont les deux maisons sont construites.

L'arrangement habituel
Ici
Qui répond
Un tour de garde que vous ne rencontrez jamais. Celui qui répond doit se faire expliquer votre système avant de pouvoir aider.
La personne qui l'a installé. Elle connaît déjà votre système par cœur, donc il n'y a rien à expliquer d'abord.
Heures de bureau
Une panne à 23h40 est un ticket lu à 9h00. La nuit vous appartient, seul.
La veille ne connaît aucune heure de bureau. L'alerte va sur un téléphone, et ce téléphone n'est jamais éteint.
Chaque année
Un siège de plus, un module de plus, un niveau de plus. L'arrangement ne peut que s'alourdir.
Nous retirons ce dont vous n'avez plus besoin. L'opération s'allège — et ce qu'elle vous coûte aussi.
Quand ça casse
Ils vous disent que ça a cassé. La réparation est chiffrée séparément, par quelqu'un d'autre.
Nous avons aussi construit le moteur, donc nous entrons et le réparons. Une seule maison répond des deux moitiés.
Le jour où vous partez
Leur console, leurs formats, leurs frais de sortie. Partir coûte tout un projet.
Votre compte, votre domaine, vos données. Nous tenons les clés qui nous ont été remises, et nous les rendons le jour où vous le demandez.

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é.

Dites-nous ce que vous préféreriez nous remettre

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.

Cela n'atteint qu'une seule personne, et c'est elle qui répond. Rien ici n'est partagé, vendu ou transmis.

Mr. MatchTop · matchtopalgorithm.ai