This document outlines best practices for designing large-scale websites based on lessons learned from eBay's architecture and operations. The key principles discussed are: (1) Partition everything into manageable chunks by data, load, or usage to improve scalability, availability, and manageability; (2) Use asynchrony wherever possible to improve scalability, availability, and latency; (3) Automate everything to improve scalability, availability, and reduce costs; (4) Assume everything will fail and design for resilience, rapid failure detection and recovery, and graceful degradation.