✕

Operasi, manajemen dan kesinambungan

Infrastructure

Perusahaan tetap milik Anda. Mesin di bawahnya kami yang menjalankan.

Systems membangun fondasinya dan mengamankannya. Infrastructure memegang kendalinya: kami yang memasangnya, kami yang menjaganya tetap berjalan hari demi hari, dan kami yang terjaga ketika ada sesuatu yang bergerak. Sebuah ruang perdagangan, sebuah perusahaan, atau satu orang dengan toko daring — tangan yang sama dan pengawasan yang sama.

Anda sedang membaca sebuah rumah yang kami jalankan sendiri. Ia sudah mengawasi ketika Anda tiba — ·

Apa yang berhenti Anda pikul

Enam hal yang lepas dari tangan Anda pada hari pertama dan tidak pernah kembali.

Mesin-mesinnya

Di mana ia berjalan, seberapa besar, dan berapa seharusnya biayanya. Kami yang memilihnya, kami yang memasangnya, dan kami yang menyesuaikan ukurannya ketika lalu lintas Anda berubah — sebelum ia menjadi masalah yang terlihat.

Alamatnya

Domain, sertifikat, dan surel yang benar-benar sampai alih-alih mendarat di folder spam. Diperbarui sebelum Anda ingat bahwa ia ada, karena nama yang kedaluwarsa berarti perusahaan yang tutup.

Tokonya

Checkout, metode pembayaran, negara demi negara, dan pesanan yang tidak boleh hilang. Dibangun satu kali, lalu dijaga tetap bekerja — termasuk pada hari pemasok Anda mengubah sesuatu.

Salinannya

Salinan cadangan yang tidak perlu Anda pikirkan, dan pemulihan yang sudah benar-benar kami jalankan. Salinan yang belum pernah dipulihkan siapa pun bukanlah salinan — itu sebuah harapan.

Kecepatannya

Halaman yang terbuka cepat di mana pun pengunjung berada. Lambat berarti uang yang berjalan keluar, jadi kecepatan adalah bagian dari menjalankan rumah ini, bukan baris tambahan yang harus dibeli.

Penambalannya

Pembaruan, sertifikat yang hampir kedaluwarsa, komponen yang berlubang. Ditutup oleh kami, menurut kalender kami — bukan menurut kekhawatiran Anda, dan bukan pada pukul tiga pagi di waktu Anda.

Siapa yang mengawasi, dan kapan

Apa yang sebenarnya terjadi antara saat sesuatu rusak dan saat ia kembali berdiri.

Pada saat ia terjadi

Sistem menyadarinya

Setiap permintaan, setiap pintu dan setiap kunci dicatat di edge begitu ia terjadi. Tidak ada yang menunggu tugas malam untuk menemukannya pada pagi hari.

Dalam tarikan napas yang sama

Sebuah telepon berbunyi di Zürich

Bukan kotak surat, bukan dasbor yang mungkin dibuka seseorang besok. Peringatan itu pergi ke tempat yang tidak bisa diabaikan dalam diam.

Sebelum Anda bertanya

Anda mendengarnya dari kami

Apa yang terjadi, apa yang terkena, dan apa yang sudah dilakukan untuk mengatasinya. Anda tidak akan mengetahui bahwa rumah Anda tumbang dari pelanggan Anda sendiri.

Sampai ia berdiri kembali

Ia diperbaiki, bukan dinaikkan ke tingkat lain

Tangan yang sama yang memasangnya masuk dan memperbaikinya. Tidak ada tingkat di atas kami untuk melimpahkannya, jadi tidak ada siapa pun yang harus kami tunggu.

Pada akhir bulan

Ia dicatat secara tertulis

Apa yang gagal, mengapa, dan apa yang kami ubah agar ia tidak dapat gagal dengan cara yang sama dua kali. Kegagalan yang tidak dicatat akan kembali.

Apa yang tiba secara tertulis, setiap bulan

Satu lembar. Dapat dibaca oleh orang yang bukan insinyur, karena justru untuk dialah lembar itu dibuat.

Jam aktif
Jam ketika ia menyala, dan menit ketika ia tidak — diukur dari luar rumah Anda, sehingga angkanya bukan milik kami untuk dipermanis.
Apa yang kami ubah
Setiap perubahan yang kami lakukan, dalam bahasa yang lugas. Anda dapat membacanya dalam satu menit dan tetap tahu persis apa yang bergerak.
Apa yang rusak
Apa yang gagal, apa yang terkena, dan apa yang kami lakukan — termasuk kegagalan yang tidak pernah Anda sadari, dan itulah sebagian besarnya.
Apa yang datang berikutnya
Apa yang kami niatkan untuk dikerjakan bulan depan, ditulis sebelum kami mengerjakannya. Tidak ada yang terjadi pada rumah Anda sebagai kejutan.
Berapa biayanya
Angka yang sama seperti bulan lalu, kecuali Anda meminta sesuatu yang baru. Tidak pernah ada baris yang muncul sendiri di lembar ini.

Antarmukanya

Yang kami serahkan kepada Anda adalah separuh yang berjalan di rumah Anda: latihan yang menguji salinan Anda sendiri setiap malam, dan satu panggilan yang menempatkan sebuah rumah di bawah manajemen. Ruang operasi kami tetap tertutup — apa yang berjalan di sisi Anda adalah milik Anda untuk dibaca sebelum Anda memercayainya.

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

Diukur di rumah kami sendiri

Tidak ada angka klien di halaman ini. Kami tidak menyebut apa pun yang belum kami ukur sendiri, jadi keempat angka ini berasal dari rumah-rumah yang kami jalankan dengan tangan kami sendiri.

2
rumah yang kami jalankan
yang satu ini dan milik sebuah klinik — kami adalah klien pertama kami sendiri, dan keluhan pertama kami sendiri
7
pintu di rumah ini
satu untuk setiap bahasa, semuanya di bawah satu pengawasan dan satu tagihan
0
konsol yang harus dipelajari
tidak ada yang harus Anda masuki dan tidak ada yang harus diingat — Anda meminta, dan ia selesai
1
orang yang menjawab
tanpa tingkatan, tanpa tiket, dan tanpa siapa pun di depannya yang hanya mencatat

Apa yang tidak dapat ditiru

Bukan perbandingan harga. Perbandingan tentang bagaimana kedua rumah itu dibangun.

Pengaturan yang biasa
Di sini
Siapa yang menjawab
Jadwal piket yang tidak pernah Anda kenal. Siapa pun yang mengangkat harus diberi tahu apa sistem Anda sebelum ia dapat membantu.
Orang yang memasangnya. Ia sudah mengenal sistem Anda sampai hafal, jadi tidak ada yang perlu dijelaskan lebih dahulu.
Jam kantor
Kegagalan pada pukul 23:40 adalah tiket yang dibaca pukul 09:00. Malam itu menjadi milik Anda, sendirian.
Pengawasan kami tidak mengenal jam kantor. Peringatan pergi ke sebuah telepon, dan telepon itu tidak dimatikan.
Setiap tahun
Satu kursi lagi, satu modul lagi, satu tingkatan lagi. Pengaturan itu hanya dapat menjadi semakin berat.
Kami mencabut apa yang tidak lagi Anda butuhkan. Operasinya menjadi lebih ringan — demikian pula biayanya bagi Anda.
Ketika ia rusak
Mereka memberi tahu Anda bahwa ia rusak. Perbaikannya ditawarkan terpisah, oleh orang lain.
Kami juga yang membangun mesinnya, jadi kami masuk dan memperbaikinya. Satu rumah bertanggung jawab atas kedua paruhnya.
Hari Anda pergi
Konsol mereka, format mereka, biaya keluar mereka. Berjalan keluar berbiaya satu proyek penuh.
Akun Anda, domain Anda, data Anda. Kami menyimpan kunci yang diserahkan kepada kami, dan kami menyerahkannya kembali pada hari Anda meminta.

Tidak satu pun dari itu adalah daftar fitur, dan justru itulah sebabnya ia tidak dapat dikalahkan dengan tawaran. Perusahaan dengan jadwal piket tidak dapat memberi Anda orang yang membangun sistem Anda. Perusahaan yang tagihannya harus tumbuh setiap tahun tidak dapat mencabut satu baris darinya. Perusahaan yang hanya mengawasi tidak dapat memperbaiki. Mereka tidak berada di belakang kami — mereka dibangun secara berbeda, dan mereka tidak dapat berpindah tanpa berhenti menjadi diri mereka sendiri.

Itu juga sebabnya tidak ada daftar harga di halaman ini. Kami melihat apa yang tidak boleh berhenti, kami mengukur operasinya, lalu kami menyebut angka yang kami ukur. Masing-masing membayar sesuai ukurannya sendiri — sebuah toko yang dijalankan satu orang tidak ditagih seolah-olah ia sebuah ruang perdagangan.

Katakan kepada kami apa yang lebih baik Anda serahkan

Dua baris sudah cukup. Kami sendiri yang membacanya dan kami sendiri yang menjawabnya — tidak ada antrean yang berdiri di belakang jendela ini.

Pesan ini sampai kepada satu orang, dan orang itulah yang menjawab. Tidak ada apa pun di sini yang dibagikan, dijual atau diteruskan.

Mr. MatchTop · matchtopalgorithm.ai