Distributed systems are increasingly deployed in the real world nowadays. Concepts like high-availability, disaster recovery, service-oriented architectures, grid computing, and peer-to-peer are now a standard part of a software engineer's vocabulary. Data is often stored on remote servers or disks, and redundancy is employed for fault-tolerance and high availability. Even computations on a single machine are becoming increasingly parallel due to the advent of multi-core architectures, as discussed in the previous Distributed Computing Column.
/lp/association-for-computing-machinery/on-distributed-computing-principles-in-systems-research-introduction-1CImJrRQIR