Princípios básicos de design do sistema

Last reviewed 2023-08-05 UTC

Este documento no Framework de arquitetura do Google Cloud descreve os princípios básicos de design do sistema. Um design de sistema robusto é seguro, confiável, escalonável e independente. Ele permite fazer alterações iterativas e reversíveis sem interromper o sistema, minimizar riscos potenciais e melhorar a eficiência operacional. Para alcançar um design de sistema robusto, recomendamos que você siga quatro princípios principais.

Documente tudo

Quando você começa a mover suas cargas de trabalho para a nuvem ou cria seus aplicativos, um grande obstáculo para o sucesso é a falta de documentação do sistema. A documentação é especialmente importante para visualizar corretamente a arquitetura das implantações atuais.

Uma arquitetura de nuvem bem documentada estabelece uma linguagem e padrões comuns, o que permite que equipes multifuncionais se comuniquem e colaborem de maneira eficaz. Ele também fornece as informações necessárias para identificar e guiar futuras decisões de design. A documentação precisa ser escrita de acordo com os casos de uso para fornecer contexto às decisões de design.

Com o tempo, suas decisões de design vão evoluir e mudar. O histórico de alterações fornece o contexto que suas equipes precisam para alinhar iniciativas, evitar a duplicação e avaliar as mudanças de desempenho com eficiência ao longo do tempo. Os registros de alterações são especialmente importantes quando você integra um novo arquiteto de nuvem que ainda não está familiarizado com o design, a estratégia ou o histórico atual do sistema.

Simplifique o design e use serviços totalmente gerenciados

A simplicidade é essencial para o design do sistema. Se sua arquitetura for muito complexa para entender, será difícil implementar o design e gerenciá-lo ao longo do tempo. Quando possível, use serviços totalmente gerenciados para minimizar os riscos, tempo e esforço associados ao gerenciamento e à manutenção de sistemas de referência.

Se você já estiver executando as cargas de trabalho em produção, teste com serviços gerenciados para ver como eles podem ajudar a reduzir as complexidades operacionais. Se você estiver desenvolvendo novas cargas de trabalho, comece de maneira simples, estabeleça um produto mínimo viável (MVP, na sigla em inglês) e resista ao impulso de trabalhar demais com engenharia. É possível identificar casos de uso excepcionais, iterar e melhorar seus sistemas gradualmente ao longo do tempo.

Dissocie a arquitetura

A dissociação é uma técnica usada para separar os aplicativos e componentes de serviço em componentes menores que podem operar de forma independente. Por exemplo, é possível dividir uma pilha de aplicativos monolítica em componentes de serviço separados. Em uma arquitetura desacoplada, um aplicativo pode executar funções de forma independente, independentemente das várias dependências.

Uma arquitetura desacoplada aumenta a flexibilidade para:

  • Aplicar upgrades independentes.
  • Aplicar controles de segurança específicos.
  • Estabelecer metas de confiabilidade para cada subsistema.
  • Monitorar a saúde.
  • Controlar os parâmetros de desempenho e custo de forma granular.

Você pode começar o desacoplamento antecipado na fase de design ou incorporá-lo como parte dos upgrades do sistema à medida que escalonar.

Usar uma arquitetura sem estado

Uma arquitetura sem estado pode aumentar a confiabilidade e a escalonabilidade dos aplicativos.

Aplicativos com estado dependem de várias dependências para executar tarefas, como dados armazenados em cache local. Os aplicativos com estado geralmente precisam de mecanismos adicionais para capturar o progresso e reiniciar sem problemas. Aplicativos sem estado podem executar tarefas sem dependências locais significativas usando armazenamento compartilhado ou serviços em cache. Uma arquitetura sem estado permite que seus aplicativos sejam escalonados rapidamente com dependências mínimas de inicialização. Os aplicativos são resistentes a reinicializações rígidas, têm menor inatividade e fornecem melhor desempenho para os usuários finais.

A categoria de design do sistema descreve as recomendações para tornar os aplicativos sem estado ou usar recursos nativos da nuvem para melhorar a captura do estado da máquina para aplicativos com estado.

A seguir