This document discusses architecting for scalability and availability in the cloud. It begins with an introduction to scalability, including definitions of scalability and why systems need to scale. It describes techniques for scaling such as load balancers, rule-based autoscaling, and scaling patterns like push and pull. It also covers CPU and I/O scaling. The document then discusses availability, including definitions and metrics. It describes different availability levels, calculating system availability, and how to define availability requirements based on understanding potential fault scenarios.