Mantenha a simplicidade
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.