Computação para cargas de trabalho SaaS no Azure
Seu aplicativo de software como serviço (SaaS) precisa ser executado em uma plataforma de computação. Como outros componentes da sua arquitetura, ele precisa atender aos requisitos de negócios e ser projetado de acordo com seu modelo de negócios. A escolha da plataforma de computação é uma decisão de design significativa. Sua decisão afeta o isolamento, o desempenho e a resiliência do cliente, e sua plataforma de computação influencia como toda a sua solução SaaS pode ser dimensionada e crescer.
Este artigo descreve as considerações para escolher seu modelo de hospedagem, os aspectos operacionais desse modelo e como otimizar as opções de tecnologia para ajudá-lo a cumprir seus SLAs (contratos de nível de serviço) e SLOs (objetivos de nível de serviço).
Selecionar uma plataforma de computação
Escolher a plataforma de computação certa para sua carga de trabalho SaaS é importante, mas a abundância de opções disponíveis pode fazer com que a escolha pareça esmagadora. A melhor plataforma depende de fatores como arquitetura do aplicativo, escala, necessidades de desempenho e o modelo de isolamento do locatário. O que é ideal para um aplicativo pode não ser para outro.
Considerações sobre o design
Modelo de hospedagem. O Azure oferece vários modelos de hospedagem, principalmente IaaS (infraestrutura como serviço) e PaaS (plataforma como serviço), cada um com seus próprios benefícios e compensações. Avalie os requisitos da sua aplicação e escolha o modelo mais adequado.
A IaaS fornece máquinas virtuais (VMs) e controle total sobre elas, incluindo rede e armazenamento. No entanto, requer gerenciamento e aplicação de patches, o que pode ser operacionalmente intensivo. Os exemplos incluem conjuntos de dimensionamento de máquinas virtuais e clusters do AKS (Serviço de Kubernetes do Azure).
O PaaS permite que você implante aplicativos sem gerenciar a infraestrutura subjacente. Ele inclui recursos internos para dimensionamento automático e balanceamento de carga. Exemplos são Serviço de Aplicativo do Azure e Aplicativos de Contêiner do Azure.
Os serviços de PaaS oferecem menos controle em comparação com o IaaS, o que pode ser problemático se seu aplicativo precisar de configuração específica. Por exemplo, seu aplicativo pode ser executado em um sistema operacional ao qual o serviço de PaaS não dá suporte.
Tipo de carga de trabalho. Algumas plataformas são especializadas para cargas de trabalho específicas, enquanto outras são versáteis. Por exemplo, o Serviço de Aplicativo foi projetado para aplicativos Web, enquanto o AKS é mais de uso geral. Ele pode hospedar aplicativos Web, cargas de trabalho de IA e tarefas de computação em lote.
Desenvolver a experiência da equipe. Grandes mudanças podem ser desafiadoras se a equipe não tiver experiência com a nova plataforma. Avalie as habilidades de sua equipe e combine-as com os requisitos da sua plataforma. Comece com uma plataforma simples e evolua gradualmente sua arquitetura, em vez de pular direto para uma opção mais avançada.
Por exemplo, se você estiver criando um aplicativo em contêineres, comece com Aplicativos de Contêiner para facilitar o gerenciamento. À medida que suas necessidades se tornam mais complexas, você pode fazer a transição para o AKS quando obtiver uma melhor compreensão da plataforma ao longo do tempo.
Despesas gerais de gerenciamento. As plataformas de computação equilibram a sobrecarga e o controle. Mais responsabilidade de gerenciamento transferida de sua equipe significa menos controle sobre a plataforma.
Por exemplo, o IaaS oferece alto controle sobre as VMs, mas vem com sobrecarga significativa. Se o aplicativo for implantado no ambiente de um cliente, você poderá ter acesso limitado às operações de gerenciamento. Avalie se essas compensações são aceitáveis e viáveis.
Requisitos de desempenho. Entenda os requisitos de desempenho do seu aplicativo modelando CPU, memória, rede, incluindo largura de banda e latência, GPU e necessidades de disponibilidade. Você também deve considerar o crescimento futuro. Use essas informações para escolher os recursos de computação apropriados, como a série e o tamanho das VMs. Talvez você também precise selecionar regiões específicas que ofereçam suporte a séries de VMs específicas para atender a requisitos especializados.
Requisitos de confiabilidade. Considere os recursos de confiabilidade de sua plataforma de computação e certifique-se de que eles atendam às suas metas de confiabilidade. Talvez seja necessário usar camadas de serviço específicas para ter várias instâncias de sua solução ou implantar em zonas de disponibilidade para aumentar a confiabilidade.
Consulte RE :04 Recomendações para definir metas de confiabilidade.
Segurança e conformidade de aplicativos. Avalie os recursos de segurança e as certificações de conformidade de cada plataforma de computação para garantir que eles atendam às suas necessidades. Por exemplo, se você precisar monitorar e filtrar o tráfego de saída, talvez seja necessário escolher serviços ou camadas de computação específicos.
Recomendações de design
Recomendação | Benefício |
---|---|
Avalie os requisitos de desempenho de computação estimando as dimensões de escala de CPU, memória, rede e GPU. Realize testes de carga para coletar dados mais precisos para informar seu exercício de modelagem. |
Essas tarefas ajudam você a selecionar o dimensionamento apropriado para sua plataforma de computação e dimensionar adequadamente quando a carga no sistema aumenta. |
Avalie a proficiência de sua equipe e comece com a plataforma menos complexa que atenda às suas necessidades ou com a qual a equipe já esteja familiarizada. | Você garante operações mais suaves e evita sobrecarregar sua equipe escolhendo uma plataforma de computação com a qual eles estejam familiarizados. |
Seja flexível em seu design. Procure uma solução que você possa iterar ao longo do tempo para se adaptar aos requisitos técnicos e de negócios em evolução. | A flexibilidade permite que você se adapte mais facilmente às mudanças e melhorias ao longo do tempo. Você pode responder de forma eficaz às necessidades técnicas e de negócios em evolução. |
Avalie o custo total de propriedade (TCO), incluindo os custos de operação da solução. | Você tem uma compreensão clara dos custos, o que é crucial para planejar seu modelo de preços e garantir operações econômicas. |
Avalie se você precisa usar plataformas de computação específicas por causa de sua pilha de tecnologia. Algumas plataformas de computação são mais adequadas para determinadas linguagens de programação, ferramentas e sistemas operacionais. Esforce-se para usar plataformas que ofereçam suporte nativo às suas escolhas de tecnologia. | Você evita o custo de reprojetar sua arquitetura, o que pode incluir a migração para uma nova plataforma. |
Avalie os recursos de confiabilidade da plataforma e considere as garantias do seu provedor de serviços em nuvem em seus SLOs. | Você reduz o risco de interrupções localizadas do datacenter planejando recursos de confiabilidade e usando zonas de disponibilidade, se estiverem disponíveis. |
Modelo de locação e isolamento
Seu modelo de negócios SaaS determina se você hospeda recursos para clientes ou os gerencia no ambiente do cliente. A maioria dos provedores de SaaS hospeda recursos em nome de seus clientes, o que permite flexibilidade no design da plataforma de computação. Isole as cargas de trabalho do cliente de forma eficaz para otimizar a eficiência de custos sem comprometer a experiência ou o desempenho do cliente.
Considerações sobre o design
Planeje seu modelo de locação. Seu modelo de locação determina o compartilhamento de recursos entre clientes e é influenciado por seus modelos de negócios e preços. Os modelos de locatário único têm custos mais altos por cliente em comparação com os modelos totalmente multilocatários. Seu preço deve refletir essas diferenças.
Requisitos do cliente. Alguns clientes podem ter necessidades específicas de residência de dados, garantias de desempenho ou conformidade de segurança. Se esses requisitos precisarem de níveis de isolamento mais altos do que o normal, considere como refletir o aumento dos custos em seu modelo de negócios.
Problema do vizinho barulhento. Esteja ciente do problema do vizinho barulhento ao compartilhar recursos entre locatários. Os recursos de computação são os mais afetados. Para obter mais informações, consulte Antipadrão de vizinho barulhento.
Ao escolher um modelo de locação, equilibre a economia de custos do compartilhamento de recursos com a necessidade de garantir o desempenho do cliente. O compartilhamento excessivo de recursos ou o consumo excessivo podem degradar a experiência do cliente.
Compensação: Desempenho e custo. O compartilhamento de recursos entre clientes pode ser econômico, mas se alguns clientes usarem mais recursos do que o esperado, essa abordagem poderá prejudicar o desempenho de outros. Para evitar isso, implemente a governança de recursos adequada para garantir que o uso do locatário permaneça dentro dos limites esperados.
Recomendações de design
Recomendação | Benefício |
---|---|
Avalie os recursos de isolamento da plataforma de computação para garantir que ela atenda aos requisitos do modelo de locação. | Você evita retrabalhar sua plataforma verificando primeiro a configuração crítica. |
Imponha seu modelo de isolamento. Tenha cuidado com recursos compartilhados, como caches de disco locais, memória do sistema e caches externos, pois eles podem vazar dados involuntariamente entre locatários se não forem gerenciados adequadamente. Para requisitos de alto isolamento, imponha o isolamento na plataforma de computação e no aplicativo. |
O isolamento forte reduz o risco de vazamento de dados entre locatários, um sério incidente de segurança. |
Implemente governança e monitoramento de recursos, com visibilidade das métricas no nível do cliente. Monitore proativamente o consumo de recursos de cada cliente para detectar e mitigar problemas de vizinhos barulhentos. |
Você evita que os problemas afetem outros clientes monitorando o consumo de recursos e mitigando os problemas antecipadamente. |
Configure para escalabilidade e eficiência de custos
Seus clientes podem usar seu aplicativo com diferentes perfis de desempenho. Eles esperam que o aplicativo lide com as crescentes demandas dos usuários, dados em grande escala e cargas de trabalho complexas sem comprometer a velocidade e o desempenho. A arquitetura do seu sistema deve garantir escalabilidade e desempenho ideal, independentemente de gerenciar centenas ou milhões de usuários, equilibrando as necessidades e os custos de desempenho.
Compensação: Desempenho e custo. Melhorar o desempenho normalmente envolve a adição de recursos, o que aumenta os custos. Revise as cargas de trabalho de forma holística para identificar quais recursos oferecem mais benefícios pelo custo extra. Por exemplo, isolar seu cliente mais importante em uma infraestrutura dedicada pode valer a pena a despesa adicional para evitar problemas de desempenho de outras cargas de trabalho.
Para obter mais informações sobre o gerenciamento de custos, consulte Cobrança e gerenciamento de custos para cargas de trabalho SaaS no Azure.
Considerações sobre o design
Estratégias de escalonamento horizontal e vertical. Abordagens de dimensionamento horizontal e vertical são viáveis para lidar com o aumento da carga. A abordagem que você usa depende da capacidade do aplicativo de escalar em várias instâncias.
- O dimensionamento horizontal envolve a adição de mais instâncias de nós de computação. Sua arquitetura precisa de um balanceador de carga para distribuir o tráfego de entrada em vários servidores ou instâncias.
- O dimensionamento vertical envolve o aumento de recursos, como CPU e memória, em um único servidor. Use essa abordagem para aplicativos com estado que não precisam de repositórios de estado externos, como caches. O dimensionamento vertical pode causar breves interrupções de serviço e tem um limite de recursos em um único servidor.
Consulte PE :05 Recomendações para dimensionamento e particionamento.
Dimensionamento automático. Os sistemas precisam lidar com eficiência com os diferentes níveis de demanda. À medida que o tráfego de usuários aumenta, os recursos do aplicativo precisam ser dimensionados para manter o desempenho. Quando a demanda diminui, os recursos são reduzidos para controlar os custos sem afetar a experiência do usuário. Fatores como utilização da CPU, hora do dia ou solicitações de entrada orientam esses ajustes. O dimensionamento automático ajuda a equilibrar o desempenho e o custo e reduz o impacto da alta demanda em outros locatários.
Consulte as recomendações RE:06 para dimensionamento confiável.
Planejamento de capacidade e alocação de computação. A integração de novos clientes à sua carga de trabalho de SaaS consome capacidade de recursos. Mesmo que você dimensione vertical ou horizontalmente, eventualmente atingirá limites, como restrições de rede ou armazenamento, na escalabilidade da sua solução.
Observação
O padrão Selos de Implantação permite que você implante várias instâncias independentes de sua solução. Ele fornece outra dimensão de dimensionamento. É crucial entender a capacidade de cada selo para determinar quando implantar mais. Esse conceito também é conhecido como empacotamento de caixas.
Recomendações de design
Recomendação | Benefício |
---|---|
Escolha a escala horizontal em vez da escala vertical. O dimensionamento horizontal geralmente é menos complexo, mais confiável e mais econômico do que o dimensionamento vertical. | O dimensionamento horizontal geralmente é mais simples, confiável e econômico, o que permite dimensionar em um grau mais alto do que o dimensionamento vertical. |
Execute o teste de carga. | A simulação de uso pode ajudá-lo a identificar gargalos e limites de dimensionamento antes de implantar na produção. |
Defina o limite de dimensionamento para implantar um novo carimbo em vez de dimensionar horizontal ou verticalmente. Para um dimensionamento econômico sem perda de desempenho, condense seus locatários no mínimo de recursos possível. |
Você está mais bem preparado para lidar com o crescimento além de sua infraestrutura atual. |
Implemente o dimensionamento automático, sempre que possível. Defina regras de dimensionamento automático para refletir a carga do aplicativo com precisão. | Você otimiza o desempenho e o custo aumentando e diminuindo os recursos conforme necessário. |
Monitore e avalie os padrões de uso do cliente. | Você sabe quando ajustar sua infraestrutura para aumentar o desempenho ou otimizar os custos. |
Implemente mecanismos de cache, sempre que possível. | Você reduz a carga de processamento potencial na camada de computação. |
Use alertas de custo. | Os avisos ajudam a detectar problemas de alto uso e controlar os custos antecipadamente. |
Use as reservas do Azure para clientes que têm compromissos de longo prazo e utilização de computação garantida para todo esse período. | Você maximiza a eficiência de custos em sua capacidade reservada. |
Design para resiliência
A resiliência da camada de computação desempenha um papel importante na estratégia geral de resiliência. Seu aplicativo deve tolerar e se recuperar de falhas comuns de forma automática e contínua, sem impacto no usuário.
Considerações sobre o design
Requisitos de confiabilidade. Defina requisitos claros de confiabilidade. Esses requisitos incluem metas internas, ou SLOs, e compromissos com clientes, ou SLAs, que geralmente especificam metas de tempo de atividade como 99,9% ao mês.
Consulte RE :04 Recomendações para definir metas de confiabilidade.
Estratégia de implantação. Os recursos de nuvem são implantados em regiões geográficas específicas. No Azure, as zonas de disponibilidade são conjuntos de datacenters isolados dentro de uma região. Para resiliência, implante aplicativos em várias zonas de disponibilidade. A implantação em regiões ou provedores de nuvem aumenta a resiliência, mas aumenta o custo e a complexidade operacional.
Consulte RE :05 Recomendações para usar zonas e regiões de disponibilidade.
Cargas de trabalho sem estado. Para implantar aplicativos resilientes, você normalmente precisa executar cópias redundantes em locais diferentes. Essa tarefa pode ser desafiadora para cargas de trabalho com estado, que precisam manter o estado da sessão. Procure criar cargas de trabalho sem estado quando possível.
Recomendações de design
Recomendação | Benefício |
---|---|
Lide com falhas transitórias em seu aplicativo. | Você aumenta sua disponibilidade recuperando-se rapidamente de pequenos problemas. |
Escolha aplicativos sem estado. Se o aplicativo precisar ter estado, use um mecanismo de armazenamento de estado externo, como um cache, para armazenar o estado. | Você evita a perda de estado causada pela indisponibilidade de uma instância, como durante o balanceamento de carga incorreto ou durante uma interrupção. |
Usar zonas de disponibilidade. | Você aumenta sua resiliência mitigando interrupções localizadas do datacenter. |
Projete uma arquitetura multirregional quando houver justificativa comercial para fazê-lo. | Você atende a requisitos de alto tempo de atividade e oferece suporte a usuários em diferentes regiões. |
Realize a engenharia do caos. | Você entende melhor onde estão seus pontos de falha e pode corrigi-los antes que ocorra uma interrupção. |
Limite o uso de componentes compartilhados por vários carimbos. | Você elimina pontos únicos de falha e reduz a área potencial de impacto de uma interrupção. |
Recursos adicionais
A multilocação é uma metodologia de negócios central para projetar cargas de trabalho SaaS. Estes artigos fornecem mais informações sobre considerações sobre a plataforma de computação:
Próxima etapa
Saiba mais sobre as considerações de rede para cargas de trabalho SaaS.