Segundo Sommerville (2011), os projetistas de sistemas distribuídos precisam organizar seus projetos de sistema para equilibrar desempenho, confiança, proteção e capacidade de gerenciamento do sistema. Não existe um modelo de organização de sistema distribuído aplicável a todas as circunstâncias, de modo que surgiram vários estilos de arquitetura. Ao projetar uma aplicação distribuída, deve-se escolher um estilo de arquitetura que ofereça suporte aos requisitos não funcionais críticos de seu sistema. De acordo com o autor, a arquitetura cliente-servidor multicamadas é usada: