Algumas opções de design feitas com antecedência podem evitar tanto um exagero de engenharia quanto uma falha monumental em projetos de nuvem, segundo Mark Simms e Mark Souza em sua sessão na Microsoft Build 2015 "Sobrevivendo ao Sucesso: projetando web sites e serviços para um crescimento rápido".
Eles listam quatro categorias de opções de design: escalabilidade, capacidade de gerenciamento, disponibilidade e viabiliade.
Escalabilidade é a maior mudança ao migrar de um data center para a nuvem. Precisa aprender como adicionar recursos de forma eficiente e incremental, ao invés de extrapolar a compra de recursos de capital fixos.
Capacidade de gerenciamento através de telemetria e ALM é o mais crítico. Sem isso, não saberá seus problemas ou suas soluções. Os efeitos das novas mudanças serão desconhecidos. E não será possível remover mudanças ruins.
Disponibilidade é como permanecer funcionando dado o inevitável transiente e suportar falhas na aplicação e seus serviços subjacentes.
Viabilidade exige que novas funcionalidades possam ser continuamente adicionadas no prazo e dentro do orçamento sem acumular grandes débitos técnicos.
Simms e Souza mantém que, sem dedicar tempo, dinheiro e gente para trabalhar nessas opções não-funcionais de design, haverá uma produção no "momento de aprendizado" que não será interessante.
Por toda a palestra eles constantemente enfatizaram a necessidade da telemetria para tomar decisões educadas sobre suas opções de design. Examiná-las tem que ser parte da sua experiência diária.
Eles recomendam abordar as quatro categorias de concepção, primeiramente por compreender a natureza da sua aplicação e decompor sua carga de trabalho, com especial atenção para estado e consistência. Seu sistema é uma aplicação de modo grande impacto? Que precisa executar de forma consistente por um período limitado (exemplo, das 9h às 17h) sem falhas? Em uma plataforma móvel durante um evento em tempo real com atualizações simultâneas, pode ser necessário de 3-5 segundos de consistência na leitura, enquanto infrequentes atualizações agendadas podem levar alguns minutos. É preciso testar continuamente em Produção por tempo suficiente para evitar surpresas inconvenientes.
Dado esse entendimento, use o dinheiro com o tempo precioso da engenharia. Dado a limitação de recursos, Platform as a Service (PaaS) é mais fácil de gerenciar as máquinas virtuais, porque muitas escolhas do projeto não precisam ser feitas ou analisadas.
É necessário encontrar o seu ponto de ruptura antes dos seus usuários. Execute um teste destrutivo de carga sobre pequenas implantações. Os pontos de contenção e unidades de escala serão identificados. Poderá então decidir se precisa de melhorias de desempenho ou se pode ganhar tempo para adicionar novas funcionalidades, adicionando recursos de nuvem.
Então, use os dados para identificar os lugares que precisam adicionar mais recursos, os gargalos e pontos de contenção. É possível identificar características no futuro (como cache) que será necessário?
A última questão examinada por eles é como se preparar para usar múltiplos data centers? Recursos de front-end ou camada de middleware necessitam de low state e replicação de código. A base de dados que é altamente stateful e precisa de uma replicação de dados eventual, mas consistente. É preciso fornecer desempenho e roteamento de DNS baseado em localidade. Prepara seu sistema para manejar múltiplos itens anteriores. Obtenha uma descrição prescritiva não-imperativa do sistema que facilita a publicação automática e implantação nomeada. Então, distingue as novas implantações nos dados de telemetria.
Simms e Souza resumiram a palestra enfatizando três coisas: use ambientes de nuvem dinâmica, para ganhar tempo até que a funcionalidade esteja boa; use dados de telemetria com uma base sólida para tomar decisões e resolver problemas; use dados para ajudar a analisar situações de stress.