I think there's a good analogy to a wedding ceremony I read from DDIA.<p>"Do you take X? I do. And do you take Y? I do. I now pronounce you X+Y".
I always wondered how 2 phase commit fits in with the CAP theorem. What if one node receives the commit message but the transaction manager crashes before it can send the other commit messages? Won't the system be (at least temporarily) inconsistent?
Is there any documented pattern or middleware for doing transactional updates across multiple HTTP services? That is, commit a write to serviceA and a write to serviceB together, atomically?