molina/faq.md

docs

Questions buyers ask

Is Molina a service or a library?

A service. I run it on my machine and you install nothing. I have run experiments on a disk that says saved before it is, a cluster with its network split and a program with racing threads.

Who is this for?

Molina is for a business owner or head of engineering whose product depends on a database or on several servers working together, and for the engineers who run that product. They are responsible for databases, distributed systems, infrastructure and data durability, where losing data a customer was told was saved, breaking a consistency promise or being unable to reproduce a failure has serious consequences.

Does it run in my environment?

No. Your software runs on my hardware, in a virtual computer. Nothing is installed in your environment and nothing is added to your tests.

Does it simulate failures or really break things?

I cause them inside a virtual computer, by changing the disk, the network and the power beneath your software, so nothing of yours is damaged.

What is a network split?

The connection between servers is cut, so each side sees only part of the system. Glossary

What is a disk that says saved before it is?

I make a disk say a write is stored when it is only in memory, as a real disk with a cache can, so a power cut loses the write. Glossary

What do I need to give you?

Your software as a Linux container image or a docker-compose file, and the promise it has to keep. No preparation.

What do I get back?

When a promise breaks: a replay code, a recording you can read and check and, where it can be reduced, the smallest set of failures that still breaks it.

What you get at the end

What if nothing breaks?

You get a recording of what ran and under what conditions. A clean report is still a result: what was explored held up, and nothing more.

What does it cost?

The call is free. Priced case by case; the price is settled after the call.

How long does it take?

There is no fixed length. I agree on the scope with you on the free call, and the work ends when it has a result either way.

Can I run it myself?

No, not yet. There is no installer. I run it. I replay a finding on request until the day I delete your files, which is 30 days after the report. Ask for a longer period before you send anything.

What can it not run?

Software that only runs on Windows, software that needs a GPU or special hardware, and software with no container image. Limits

Does it find bugs for sure?

No. I cannot promise to find a bug, and a mature library might have nothing to find.

How exact is the replay?

Replay matched exactly in five of my runs, each against its original:

  • An Akka.NET cluster with its network split: in 3 of 3 pairs, all 1,476 network messages had the same outcome, delivery time and contents, and the same 42 were cut. Standing: MIGHT. The record
  • A .NET program with four racing threads: 96 restored copies, 90 counted, none differed. Standing: MIGHT. The record
  • Postgres on a disk that says saved before it is, in exact mode: 3 of 3 replays byte for byte identical in console, timings and switch log. The switch log was empty: no network message crossed the switch. Standing: MIGHT. The record
  • A NATS pair with a split in virtual time: 3 of 3 replays, all five files byte for byte identical; with another replay code, 0 of 5 files matched. Standing: MIGHT. The record
  • Akka's own test, NodeUpSpec: 36 of 36 copies byte for byte identical on an idle host and 36 of 36 on a loaded one. Standing: UNRATED. The record

Replay is not yet measured on your software until I run it. The limits

What happens to my data?

Before any image arrives, you and I agree on how it is kept, deleted and read. How I treat your data

Why not just use my own engineers?

After an incident nobody could reproduce, engineers argue about the cause. I turn that argument into an experiment, and you get a result either way, with a recording your engineers can read and check.

They still fix what is found. Ordinary tests run on a computer that does not fail, so they cannot cut the power a moment after a database said saved. Building this in house means building a hypervisor, the program that runs virtual computers. That is specialist work.

Who are you?

I'm Will Ehrendreich. SageTech is me, and I run every engagement myself.

:SageTech --ready