Mantenha a simplicidade
Evite a engenharia excessiva do projeto de arquitetura, do código do aplicativo e das 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 controlo, minimizando ineficiências e potenciais erros de configuração ou interações inesperadas. Por outro lado, a simplificação excessiva pode introduzir pontos únicos de falha. Manter uma abordagem equilibrada.
Cenário de exemplo
A Contoso Travel está comprando e integrando uma pequena empresa iniciante com um popular aplicativo de viagens baseado na Web. A popularidade do aplicativo se deve ao seu modelo de negócios de negociação de descontos profundos com redes de hotéis e companhias aéreas, e ao uso das mídias sociais para fazer campanhas de marketing intensas e altamente direcionadas.
A versão existente do produto de inicialização foi desenvolvida em nodejs e está sendo executada 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 atingir os valores de negócios desejados. Mantenha o caminho crítico enxuto.
Projetar para requisitos de negócios pode levar a uma solução simples que é fácil de implementar e gerenciar. Evite ter muitos componentes críticos, porque cada um é um ponto significativo de falha.
O desafio da Contoso
- Um dos componentes do aplicativo recém-adquirido facilita a coleta de feedback dos usuários diretamente no site depois que eles fizeram uma reserva. O recurso raramente é usado porque a maioria dos usuários simplesmente ignora ele. Há um forte mecanismo de feedback dos usuários que funciona através das contas de mídia social da empresa, que é muito usado para marketing da interação do usuário. Este mecanismo é usado significativamente com mais frequência do que a função de feedback do site.
Aplicação da abordagem e dos resultados
- Como parte da versão inicial do aplicativo com a marca Contoso Travel, a equipe decide remover o componente de feedback do site da carga de trabalho.
- Uma base de código menor reduz o custo de manutenção e operações. E, neste caso, não há impacto nos requisitos de negócios.
Padronize seu ciclo de vida de desenvolvimento de software
Estabeleça padrões na implementação, implantação e processos de código e documente-os. Identifique oportunidades para aplicar esses padrões usando validações automatizadas.
As normas proporcionam consistência e minimizam os 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 de ativos durante a solução de problemas.
O 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 na funcionalidade, os estilos de codificação não são impostos e os pipelines de liberação não têm portas de liberaçã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 às bibliotecas de uso e padrões de design inconsistentes.
- Há incidentes frequentes após grandes atualizações na produção, às vezes exigindo reversões das atualizações ou hot-fixes no meio da implantação. A frequência desses tipos de problemas de implantação força a equipe a usar um modelo de suporte prático ao lançar atualizações para a produção. Para piorar a situação, os problemas frequentes estão afetando negativamente a reputação da Contoso por meio de uma experiência de usuário ruim.
Aplicação da abordagem e dos resultados
- A equipe que assume o suporte do novo aplicativo faz um esforço para alcançar maior consistência, impondo estilos de codificação, padronizando um conjunto comum de bibliotecas e padrões de design e formalizando o uso de portas de liberação com base em testes automatizados.
- Enquanto essas alterações estão sendo implementadas, a equipe de carga de trabalho adere aos seus requisitos de documentação padrão. Todas as novas ferramentas, padrões de design e estilos que estão sendo adotados são minuciosamente documentados, permitindo que a equipe compreenda e mantenha a carga de trabalho de forma mais eficiente no futuro. A equipe agora pode identificar mais facilmente desvios nos padrões ao realizar revisões de código.
Minimize a carga de operações e desenvolvimento
Aproveite os recursos fornecidos pela plataforma e os ativos pré-criados que podem ajudá-lo a atingir efetivamente as metas de negócios.
Essa abordagem minimiza o tempo de desenvolvimento. Ele também permite que você confie em práticas testadas e comprovadas que foram usadas com cargas de trabalho semelhantes.
O desafio da Contoso
- Para a versão inicial sob a marca Contoso Travel, a solução nodejs será migrada de VMs para os Serviços de Aplicativo, para aproveitar os muitos recursos de confiabilidade nativos que o serviço oferece.
- A versão implantada em VMs contém uma quantidade significativa de código personalizado necessário para instrumentação.
Aplicação da abordagem e dos resultados
- Durante a migração inicial para os Serviços de Aplicativo, 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.