✕

Betrieb, Verwaltung und Kontinuität

Infrastructure

Das Unternehmen bleibt Ihres. Die Maschinerie darunter betreiben wir.

Systems baut den Boden und sichert ihn. Infrastructure übernimmt die Steuerung: wir richten sie ein, wir halten sie Tag für Tag am Laufen, und wir sind diejenigen, die wach sind, wenn sich etwas bewegt. Ein Handelssaal, ein Unternehmen oder eine Person mit einem Online-Shop — dieselben Hände und dieselbe Wache.

Sie lesen gerade ein Haus, das wir selbst betreiben. Es hat schon gewacht, als Sie ankamen — ·

Was Sie nicht mehr tragen

Sechs Dinge, die am ersten Tag aus Ihren Händen gehen und nicht zurückkommen.

Die Maschinen

Wo es läuft, wie gross, und was das kosten sollte. Wir wählen es aus, wir richten es ein, und wir passen die Grösse an, wenn sich Ihr Traffic ändert — bevor es ein Problem wird, das Sie sehen.

Die Adresse

Domain, Zertifikate und Mail, die ankommt, statt im Spam-Ordner zu landen. Erneuert, bevor Sie sich erinnern, dass es sie gibt, denn ein abgelaufener Name ist ein geschlossenes Geschäft.

Der Shop

Checkout, Zahlungsmethoden, Land für Land, und die Bestellung, die niemals verloren gehen darf. Einmal gebaut, dann am Laufen gehalten — auch an dem Tag, an dem Ihr Lieferant etwas ändert.

Die Kopien

Backups, über die Sie nie nachdenken müssen, und eine Wiederherstellung, die wir tatsächlich durchgeführt haben. Eine Kopie, die nie jemand zurückgeholt hat, ist keine Kopie — sie ist eine Hoffnung.

Die Geschwindigkeit

Seiten, die sich schnell öffnen, egal wo der Besucher steht. Langsam ist Geld, das geht, also ist Geschwindigkeit Teil des Hausbetriebs, keine zusätzliche Position zum Kaufen.

Das Patchen

Updates, bald ablaufende Zertifikate, die Komponente mit einer Lücke. Von uns geschlossen, nach unserem Kalender — nicht nach Ihrer Sorge, und nicht um drei Uhr morgens bei Ihnen.

Wer wacht, und wann

Was tatsächlich passiert zwischen dem Moment, in dem etwas bricht, und dem Moment, in dem es wieder steht.

Im Moment, in dem es passiert

Das System merkt es

Jede Anfrage, jede Tür und jeder Schlüssel wird am Edge abgelegt, in dem Moment, in dem es passiert. Nichts wartet auf einen nächtlichen Job, der es am Morgen entdeckt.

Im selben Atemzug

Ein Telefon klingelt in Zürich

Kein Postfach, kein Dashboard, das jemand morgen vielleicht öffnet. Der Alarm geht dort ein, wo er nicht leise ignoriert werden kann.

Bevor Sie fragen

Sie hören es von uns

Was passiert ist, was es betroffen hat, und was schon dagegen unternommen wurde. Sie erfahren nicht von Ihren eigenen Kunden, dass Ihr Haus ausgefallen ist.

Bis es wieder steht

Es wird repariert, nicht eskaliert

Dieselben Hände, die es eingerichtet haben, gehen hinein und beheben es. Es gibt keine Ebene über uns, an die wir es weitergeben, also gibt es niemanden, auf den wir warten müssen.

Am Ende des Monats

Es wird aufgeschrieben

Was ausfiel, warum, und was wir geändert haben, damit es nicht auf dieselbe Weise zweimal ausfallen kann. Ein Fehler, der nicht aufgeschrieben wird, kommt wieder.

Was jeden Monat schriftlich eintrifft

Ein Blatt. Lesbar für jemanden, der kein Ingenieur ist, denn für diese Person ist es gedacht.

Stunden im Betrieb
Die Stunden, in denen es lief, und die Minuten, in denen nicht — gemessen von aussen, ausserhalb Ihres Hauses, damit die Zahl nicht unsere eigene Schönfärberei ist.
Was wir geändert haben
Jede Änderung, die wir vorgenommen haben, in klarer Sprache. Sie lesen es in einer Minute und wissen trotzdem genau, was sich bewegt hat.
Was ausgefallen ist
Was versagte, was es betraf, und was wir taten — einschliesslich der Fehler, die Sie nie bemerkt haben, und das sind die meisten.
Was als Nächstes kommt
Was wir im nächsten Monat vorhaben, aufgeschrieben, bevor wir es tun. Nichts geschieht an Ihrem Haus als Überraschung.
Was es kostet
Dieselbe Zahl wie im letzten Monat, ausser Sie haben nach etwas Neuem gefragt. Keine Position erscheint je von sich aus auf diesem Blatt.

Die Schnittstelle

Was wir Ihnen übergeben, ist die Hälfte, die in Ihrem Haus läuft: die Übung, die jede Nacht Ihre eigenen Kopien testet, und der einzige Aufruf, der ein Haus unter Verwaltung stellt. Unser Betriebsraum bleibt geschlossen — was auf Ihrer Seite läuft, ist Ihres, zum Lesen, bevor Sie es vertrauen.
Der Code bleibt in Englisch — der universellen Sprache der Technik.

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

Gemessen am eigenen Haus

Keine Kundendaten auf dieser Seite. Wir nennen nichts, was wir nicht selbst gemessen haben, also stammen diese vier von den Häusern, die wir mit eigenen Händen betreiben.

2
Häuser, die wir betreiben
dieses hier und das einer Klinik — wir sind unser eigener erster Kunde, und unsere eigene erste Beschwerde
7
Türen bei diesem
eine pro Sprache, alle unter einer einzigen Wache und einer einzigen Rechnung
0
Konsolen zum Lernen
nichts, worin Sie sich einloggen müssen, und nichts zu merken — Sie fragen, und es ist erledigt
1
Person antwortet
keine Ebene, kein Ticket, und niemand, der vor ihm steht und Notizen macht

Was sich nicht kopieren lässt

Kein Preisvergleich. Ein Vergleich, wie die beiden Häuser gebaut sind.

Die übliche Lösung
Hier
Wer antwortet
Ein Diensthabenden-Plan, den Sie nie kennenlernen. Wer auch immer abnimmt, muss erst erfahren, was Ihr System ist, bevor er helfen kann.
Die Person, die es eingerichtet hat. Sie kennt Ihr System schon in- und auswendig, also gibt es nichts, was erst erklärt werden muss.
Geschäftszeiten
Ein Fehler um 23:40 Uhr ist ein Ticket, das um 09:00 Uhr gelesen wird. Die Nacht gehört allein Ihnen.
Die Wache kennt keine Geschäftszeiten. Der Alarm geht an ein Telefon, und das Telefon ist nicht ausgeschaltet.
Jedes Jahr
Ein weiterer Platz, ein weiteres Modul, eine weitere Ebene. Die Lösung kann nur schwerer werden.
Wir nehmen heraus, was Sie nicht mehr brauchen. Der Betrieb wird leichter — und damit auch, was er Sie kostet.
Wenn es bricht
Man sagt Ihnen, dass es kaputt ist. Die Reparatur wird separat offeriert, von jemand anderem.
Wir haben den Motor auch gebaut, also gehen wir hinein und reparieren ihn. Ein Haus verantwortet beide Hälften.
Der Tag, an dem Sie gehen
Ihre Konsole, ihre Formate, ihre Austrittsgebühr. Der Weggang kostet ein ganzes Projekt.
Ihr Konto, Ihre Domain, Ihre Daten. Wir halten die Schlüssel, die uns übergeben wurden, und geben sie zurück, am Tag, an dem Sie es verlangen.

Nichts davon ist eine Liste von Merkmalen, und genau deshalb lässt es sich nicht unterbieten. Eine Firma mit einem Diensthabenden-Plan kann Ihnen nicht die Person geben, die Ihr System gebaut hat. Eine Firma, deren Rechnung jedes Jahr wachsen muss, kann keine Position daraus entfernen. Eine Firma, die nur zuschaut, kann nicht reparieren. Sie liegen nicht hinter uns zurück — sie sind anders gebaut, und sie können nicht zu uns wechseln, ohne aufzuhören, sie selbst zu sein.

Das ist auch, warum es auf dieser Seite keine Preisliste gibt. Wir schauen, was nicht stillstehen darf, wir messen den Betrieb, und dann nennen wir, was wir gemessen haben. Jeder zahlt nach seiner eigenen Grösse — ein Shop, den eine Person führt, wird nicht berechnet, als wäre er ein Handelssaal.

Sagen Sie uns, was Sie lieber abgeben würden

Zwei Zeilen genügen. Wir lesen sie selbst und wir antworten selbst — hinter diesem Fenster steht keine Warteschlange.

Es erreicht eine Person, und diese Person antwortet. Nichts hier wird geteilt, verkauft oder weitergegeben.

Mr. MatchTop · matchtopalgorithm.ai