Hints for Computer System Design - An article by Butler Lampson, which was awarded the ACM Turing Award. In this article, he summarized his thoughts on system design.
Big Ball of Mud - an article with a set of patterns / antipatterns about the design of systems: big ball of mud, throwaway code, piecemeal growth, keep it working, sweeping it under the rug, reconstruction. It is interesting to read and learn about real systems that engineers often face in reality.
The Google File System - a classic article about the distributed file system Google, which was replaced by Google Colossus, about which you can also read reference. And the GFS. (Google File System) was the prototype of HDSF (Hadoop Distributed File System)
On Designing and Deploying Internet-Scale Services - Microsoft's chequelist article on how to design and evaluate large-scale systems (It's like a checklist approach. 12 factor apps)
Kafka: a Distributed Messaging System for Log Processing Kafka white paper, which has become an indispensable system for processing messages. In particular, Kafka’s partitions do a phenomenal job of forcing application designers to make explicit decisions about trading off performance for predictable message ordering.
Paxos Made Simple Lamport's article on the Paxos consensus algorithm, told to be easier to understand (But it was still complicated, and then Raft came along.)
SWIM: Scalable Weakly-Consistent Infection-Style Process Group Membership Protocol Weakly-consistent knowledge of process group membership information at all participating processes, which distinguishes this approach from what is commonly practiced for partition consensus algorithms. This approach is used in HashiCorp software and in Uber’s Ringpop.