At the core of almost every computing service in use today---Facebook, Google, Bittorrent, Amazon, YouTube, LinkedIn, Akamai, Xbox Live, airline reservation systems, stock exchanges, etc.---is a distributed system consisting of many computers. One inescapable reality of these systems is that the individual components cannot be relied upon to do the right thing; for example, users of a peer-to-peer service may attempt to game the protocol and get something for nothing, individual computers can crash or behave arbitrarily (due to faulty hardware, software bugs, malicious administrators, or other unknown causes), or pairs of correct computers can concurrently take conflicting actions. In this talk I will describe efforts to use replication to build robust distributed systems that are efficient, available, and correct despite the unexpected behaviors of its components.