Distributed architecture concepts I learned while building a large payments system