Distributed systems are like 3D brain teasers: easy to disassemble; hard to put together.