✕

Operaciones, gestión y continuidad

Infrastructure

El negocio sigue siendo suyo. La maquinaria que lo sostiene es nuestra para gestionar.

Systems construye el terreno y lo protege. Infrastructure toma los mandos: lo configuramos, lo mantenemos corriendo día tras día, y somos nosotros quienes están despiertos cuando algo se mueve. Una sala de trading, una empresa, o una sola persona con una tienda en línea — las mismas manos y la misma vigilancia.

Está leyendo una casa que gestionamos nosotros mismos. Ya estaba vigilando cuando usted llegó — ·

Lo que deja de cargar

Seis cosas que salen de sus manos el primer día y no regresan.

Las máquinas

Dónde corre, de qué tamaño, y cuánto debería costar. Lo elegimos, lo configuramos, y lo redimensionamos cuando su tráfico cambia — antes de que se convierta en un problema visible.

La dirección

Dominio, certificados, y correo que llega en lugar de caer en una carpeta de spam. Renovado antes de que usted recuerde que existe, porque un nombre vencido es un negocio cerrado.

La tienda

Pago, métodos de cobro, país por país, y el pedido que nunca debe perderse. Construida una vez, y mantenida funcionando — incluso el día en que su proveedor cambia algo.

Las copias

Copias de seguridad en las que nunca tiene que pensar, y una restauración que de verdad hemos realizado. Una copia que nadie ha recuperado jamás no es una copia — es una esperanza.

La velocidad

Páginas que se abren rápido dondequiera que esté el visitante. Lo lento es dinero que se marcha, así que la velocidad es parte de gestionar la casa, no una línea adicional que comprar.

Los parches

Actualizaciones, certificados a punto de vencer, el componente con un agujero. Cerrado por nosotros, en nuestro calendario — no en su preocupación, ni a las tres de la madrugada suya.

Quién vigila, y cuándo

Lo que realmente ocurre entre el momento en que algo se rompe y el momento en que vuelve a estar en pie.

En el momento en que ocurre

El sistema lo nota

Cada solicitud, cada puerta y cada clave queda registrada en el borde en el instante en que ocurre. Nada espera a una tarea nocturna que lo descubra por la mañana.

En el mismo instante

Suena un teléfono en Zúrich

No un buzón, no un panel que alguien tal vez abra mañana. La alerta llega a donde no puede ser ignorada en silencio.

Antes de que usted pregunte

Se entera por nosotros

Qué ocurrió, qué tocó, y qué se ha hecho ya al respecto. Usted no se entera de que su casa está caída por boca de sus propios clientes.

Hasta que vuelve a estar en pie

Se repara, no se escala

Las mismas manos que lo configuraron entran y lo arreglan. No hay ningún nivel por encima de nosotros al que pasarlo, así que no hay a quién esperar.

Al final del mes

Queda por escrito

Qué falló, por qué, y qué cambiamos para que no pueda fallar de la misma manera dos veces. Un fallo que no queda por escrito, vuelve.

Lo que llega por escrito, cada mes

Una sola hoja. Legible por alguien que no es ingeniero, porque es para quien está pensada.

Horas en pie
Las horas que estuvo activa, y los minutos que no — medidos desde fuera de su casa, para que la cifra no sea nuestra para adornarla.
Lo que cambiamos
Cada cambio que hicimos, en lenguaje llano. Puede leerlo en un minuto y saber exactamente qué se movió.
Lo que se rompió
Qué falló, qué tocó, y qué hicimos — incluidos los fallos que usted nunca notó, que son la mayoría.
Lo que viene después
Lo que pensamos hacer el mes siguiente, escrito antes de hacerlo. Nada le ocurre a su casa como una sorpresa.
Lo que cuesta
La misma cifra que el mes pasado, a menos que haya pedido algo nuevo. Ninguna línea aparece jamás en esta hoja por su cuenta.

La interfaz

Lo que le entregamos es la mitad que corre en su casa: el simulacro que pone a prueba sus propias copias cada noche, y la única llamada que pone una casa bajo gestión. Nuestra sala de operaciones permanece cerrada — lo que corre de su lado es suyo para leer antes de confiarlo.
El código permanece en inglés — la lengua universal de la ingeniería.

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

Medido en nuestra propia casa

Ninguna cifra de cliente en esta página. No cotizamos nada que no hayamos medido nosotros mismos, así que estas cuatro son de las casas que gestionamos con nuestras propias manos.

2
casas que gestionamos
esta y la de una clínica — somos nuestro propio primer cliente, y nuestra propia primera queja
7
puertas en esta
una por idioma, todas bajo una sola vigilancia y una sola factura
0
consolas que aprender
nada en lo que usted deba iniciar sesión y nada que recordar — usted pide, y queda hecho
1
persona responde
sin niveles, sin tickets, y nadie de pie frente a él tomando notas

Lo que no se puede copiar

No es una comparación de precios. Es una comparación de cómo están construidas las dos casas.

El arreglo habitual
Aquí
Quién responde
Un turno de guardia al que nunca conoce. A quien responda hay que explicarle qué es su sistema antes de que pueda ayudar.
La persona que lo configuró. Ya conoce su sistema de memoria, así que no hay nada que explicar primero.
Horario de oficina
Un fallo a las 23:40 es un ticket leído a las 09:00. La noche le pertenece solo a usted.
La vigilancia no tiene horario de oficina. La alerta llega a un teléfono, y el teléfono no está apagado.
Cada año
Otro puesto, otro módulo, otro nivel. El arreglo solo puede volverse más pesado.
Quitamos lo que dejó de necesitar. La operación se vuelve más ligera — y también lo que le cuesta.
Cuando se rompe
Le dicen que se rompió. Repararlo se cotiza por separado, por otra persona.
Nosotros también construimos el motor, así que entramos y lo reparamos. Una sola casa responde por ambas mitades.
El día que se va
Su consola, sus formatos, su cuota de salida. Marcharse cuesta un proyecto entero.
Su cuenta, su dominio, sus datos. Guardamos las claves que nos entregaron, y se las devolvemos el día que lo pida.

Nada de eso es una lista de características, y por eso exactamente no se puede superar con una oferta más baja. Una firma con un turno de guardia no puede darle a la persona que construyó su sistema. Una firma cuya factura debe crecer cada año no puede quitarle una línea. Una firma que solo observa no puede reparar. No están por detrás de nosotros — están construidas de otra manera, y no pueden cruzar a este lado sin dejar de ser lo que son.

Por eso también no hay lista de precios en esta página. Miramos lo que no debe detenerse, medimos la operación, y luego cotizamos lo que medimos. Cada uno paga según su propio tamaño — una tienda gestionada por una sola persona no se cobra como si fuera una sala de trading.

Díganos qué preferiría entregarnos

Dos líneas bastan. Las leemos nosotros mismos y respondemos nosotros mismos — no hay cola detrás de esta ventana.

Llega a una sola persona, y esa persona responde. Nada aquí se comparte, se vende ni se transfiere.

Mr. MatchTop · matchtopalgorithm.ai