The process of designing architecture, components, data, and interactions for a reliable and scalable system.