Mantenha a simplicidade

Concluído
Evite superengenhar o design da arquitetura, o código do aplicativo e as operações.

Muitas vezes é o que você remove em vez do que você adiciona que leva às soluções mais confiáveis. A simplicidade reduz a área de superfície para controle, minimizando ineficiências e possíveis configurações incorretas ou interações inesperadas. Por outro lado, a simplificação excessiva pode introduzir pontos únicos de falha. Mantenha uma abordagem equilibrada.

Cenário de exemplo

A Contoso Travel está comprando e integrando uma pequena startup com um aplicativo de viagens popular baseado na Web. A popularidade do aplicativo deve-se ao seu modelo de negócios de negociação de descontos profundos com redes hoteleiras e companhias aéreas, e ao uso de mídias sociais para fazer campanhas de marketing intensas e altamente direcionadas.

A versão existente do produto da startup foi desenvolvida em Node.js e está em execução em VMs hospedadas entre o data center local e a AWS.

Minimizar os componentes da carga de trabalho

Adicione componentes à sua arquitetura somente se eles ajudarem você a alcançar valores comerciais de destino. Mantenha o caminho crítico enxuto.

A criação de requisitos de negócios pode levar a uma solução simples que é fácil de implementar e gerenciar. Evite ter muitos componentes críticos, pois cada um deles é um ponto significativo de falha.

Desafio da Contoso

  • Um dos componentes do aplicativo recém-adquirido facilita a coleta de comentários dos usuários diretamente no site depois que eles fazem uma reserva. O recurso raramente é usado porque a maioria dos usuários o ignora. Há um forte mecanismo de loop de comentários dos usuários que funciona por meio das contas de rede social da empresa, que é muito usado para a interação do usuário de marketing. Esse mecanismo é usado com mais frequência do que a função de comentários do site.

Aplicando a abordagem e os resultados

  • Como parte da versão inicial do aplicativo com a marca Contoso Travel, a equipe decide remover o componente de comentários do site da carga de trabalho.
  • Uma base de código menor reduz o custo de manutenção e operações. E, nesse caso, não há impacto sobre os requisitos de negócios.

Padronizar o seu ciclo de vida de desenvolvimento de software

Estabeleça padrões em implementação, implantação e processos de código e documente-os. Identifique oportunidades para impor esses padrões usando validações automatizadas.

Os padrões fornecem consistência e minimizam erros humanos. Abordagens como convenções de nomenclatura padrão e guias de estilo de código podem ajudá-lo a manter a qualidade e facilitar a identificação dos ativos durante a solução de problemas.

Desafio da Contoso

  • A equipe de desenvolvimento da startup não tem muitos padrões de desenvolvimento e processo definidos. Há várias bibliotecas sendo usadas que se sobrepõem à funcionalidade, os estilos de codificação não são impostos e os pipelines de lançamento não têm portões de versão formais que usam testes automatizados.
  • A equipe de carga de trabalho da Contoso percebe que o custo de manutenção da nova base de código é muito alto devido à falta de consistência nos estilos e aos padrões de design e bibliotecas de uso inconsistentes.
  • Há incidentes frequentes após grandes atualizações na produção, às vezes exigindo reversões das atualizações ou correções frequentes de implantação intermediária. A frequência desses tipos de problemas de implantação força a equipe a usar um modelo de suporte prático ao liberar atualizações para produção. Para piorar as coisas, as questões frequentes estão afetando negativamente a reputação da Contoso por meio de uma má experiência do usuário.

Aplicando a abordagem e os resultados

  • A equipe que assume o suporte do novo aplicativo faz um esforço para obter maior consistência aplicando estilos de codificação, padronizando um conjunto comum de bibliotecas e padrões de design e formalizando o uso de portões de lançamento com base em testes automatizados.
  • Enquanto essas alterações estão sendo implementadas, a equipe de carga de trabalho segue seus requisitos de documentação padrão. Todas as novas ferramentas, padrões de design e estilos que estão sendo adotados estão completamente documentados, permitindo que a equipe entenda e mantenha a carga de trabalho com mais eficiência daqui para frente. A equipe agora pode identificar mais facilmente desvios nos padrões ao executar revisões de código.

Minimizar as operações e a carga de desenvolvimento

Aproveite os recursos fornecidos pela plataforma e os ativos predefinidos que podem ajudar você a atender efetivamente às metas de negócios.

Essa abordagem minimiza o tempo de desenvolvimento. Ela também permite que você confie em práticas testadas e comprovadas que foram usadas com cargas de trabalho semelhantes.

Desafio da Contoso

  • Para a versão inicial com a identidade visual Contoso Travel, a solução Node.js será migrada de VMs para os Serviços de Aplicativos, para aproveitar os muitos recursos de confiabilidade nativos que o serviço fornece.
  • A versão implantada em VMs contém uma quantidade significativa de código personalizado necessário para instrumentação.

Aplicando a abordagem e os resultados

  • Durante a migração inicial para os Serviços de Aplicativos, a equipe conseguiu remover todo o código de instrumentação personalizado implementando a autoinstrumentação do App Insights nos Serviços de Aplicativo.
  • A equipe também pode aproveitar várias outras funções nativas do Serviço de Aplicativo, como dimensionamento automático, integração do Key Vault e redundância zonal.

Verifique seu conhecimento

1.

Por que você deve tentar minimizar o número de componentes em sua carga de trabalho?

2.

Quais elementos do ciclo de vida de desenvolvimento de software devem ser padronizados?

3.

Como a mudança para os Serviços de Aplicativos do Azure ajudou a equipe da Contoso a simplificar sua carga de trabalho?