A system wherepart of it can fail
Not many machines working together, but many machines where one can fail while the rest carry on. Everything hard follows from that.
One machine dies and the rest keep running. A single program either works or does not; this is neither.
A slow reply and a dead machine look identical from outside. There is no way to distinguish them.
Two machines disagree about the time and about the order events happened in. Both are correct locally.
Four assumptionsthat stop being true
Things a single program takes for granted, and which cease to hold the moment a network is involved.
You cannot haveall three
When the network partitions — and it will — you choose between answering and being correct. There is no third option.
A partitioned system can keep serving requests from both halves and risk them disagreeing, or refuse requests until the partition heals. Databases make this choice explicitly and advertise it. The mistake is assuming a system made a different choice than it did, and discovering otherwise during an incident.
Mostly you arenot building one
The honest position for most computational research: you consume distributed systems rather than write them, and that is a much easier job.
A hundred independent runs. No coordination needed, so this is a scheduling problem, not a distributed one.
Ranks exchanging boundaries every step. Distributed, but on a reliable network with a single failure domain.
Object storage, schedulers, APIs. Somebody else solved the hard part; your job is to retry properly.
A parameter sweep across a hundred inputs is embarrassingly parallel — no coordination, no shared state, and each run is independent. That is not a distributed systems problem, it is a scheduling one, and a workflow manager or a queue solves it. Genuine distribution starts when the parts must agree on something, and if you can avoid needing that, avoid it.
Slurm isbeing built
The image and its definition are being verified. When they are done, it deploys by name like the rest.