This document provides an overview of distributed system architecture. It defines a distributed system as a collection of independent components located on different machines that share messages to achieve common goals. It discusses four types of software architectures - layered, object-based, data-centered, and event-based - as well as two system architectures - client-server and peer-to-peer. The document outlines characteristics, disadvantages, and details of each architectural style.