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 em 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 aspetos operacionais desse modelo e como otimizar as opções de tecnologia para ajudá-lo a cumprir seus contratos de nível de serviço (SLAs) e objetivos de nível de serviço (SLOs).
Selecione 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 de aplicativos, escala, necessidades de desempenho e o modelo de isolamento do locatário. O que é ideal para uma aplicação pode não ser para outra.
Considerações de design
Modelo de hospedagem. O Azure oferece vários modelos de hospedagem, principalmente infraestrutura como serviço (IaaS) e plataforma como serviço (PaaS), 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áquina virtual e clusters do Serviço Kubernetes do Azure (AKS).
O PaaS permite implantar aplicativos sem gerenciar a infraestrutura subjacente. Ele inclui recursos integrados para dimensionamento automático e balanceamento de carga. Exemplos são o Serviço de Aplicativo do Azure e os Aplicativos de Contêiner do Azure.
Os serviços PaaS oferecem menos controle em comparação com IaaS, o que pode ser problemático se seu aplicativo precisar de uma configuração específica. Por exemplo, seu aplicativo pode ser executado em um sistema operacional que o serviço PaaS não suporta.
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 é projetado para aplicativos da Web, enquanto o AKS é de uso mais geral. Ele pode hospedar aplicativos Web, cargas de trabalho de IA e tarefas de computação em lote.
Desenvolver a experiência da equipa. Grandes mudanças podem ser desafiadoras se a equipe não tiver experiência com a nova plataforma. Avalie as competências da sua equipa e adapte-as aos 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êiner, 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 entender melhor a plataforma ao longo do tempo.
Despesas gerais de gestão. As plataformas de computação equilibram a sobrecarga e o controle. Mais responsabilidade de gestão afastada da sua equipa significa menos controlo sobre a plataforma.
Por exemplo, a IaaS oferece alto controle sobre VMs, mas vem com uma sobrecarga significativa. Se seu aplicativo for implantado no ambiente de um cliente, você pode ter acesso limitado para operações de gerenciamento. Avalie se essas compensações são aceitáveis e viáveis.
Requisitos de desempenho. Compreenda 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. Também pode ser necessário selecionar regiões específicas que ofereçam suporte a determinadas séries de VMs para atender a requisitos especializados.
Requisitos de fiabilidade. Considere os recursos de confiabilidade de sua plataforma de computação e garanta 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 maior 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 da CPU, memória, rede e escala da GPU. Execute 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 da 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 no seu design. Procure uma solução que você possa iterar ao longo do tempo para se adaptar à evolução dos requisitos técnicos e de negócios. | A flexibilidade permite-lhe adaptar-se 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 operacionais 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 suportem nativamente suas escolhas tecnológicas. | Você evita o custo de redesenhar 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 de 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 arrendamento 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 de design
Planeie o seu modelo de arrendamento. O seu modelo de arrendamento determina a partilha de recursos entre clientes e é influenciado pelos seus modelos de negócio e de preços. Os modelos de inquilino único têm custos mais elevados por cliente em comparação com os modelos totalmente multiinquilinos. 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 inquilinos. 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 a permissão de 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 seu modelo de locação. | Você evita retrabalhar sua plataforma verificando a configuração crítica primeiro. |
Imponha seu modelo de isolamento. Tenha cuidado com recursos compartilhados, como caches de disco local, memória do sistema e caches externos, pois eles podem vazar dados involuntariamente entre locatários se não forem gerenciados corretamente. Para requisitos de isolamento altos, imponha o isolamento dentro da plataforma de computação e no aplicativo. |
Um forte isolamento reduz o risco de fuga de dados entre inquilinos, um grave incidente de segurança. |
Implemente governança e monitoramento de recursos, com visibilidade de métricas no nível do cliente. Monitore proativamente o consumo de recursos de cada cliente para detetar e mitigar problemas barulhentos de vizinhos. |
Você evita que os problemas afetem outros clientes monitorando o consumo de recursos e atenuando os problemas antecipadamente. |
Configurar 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 demandas crescentes de usuários, dados em grande escala e cargas de trabalho complexas sem comprometer a velocidade e o desempenho. Sua arquitetura de sistema deve garantir escalabilidade e desempenho ideal, quer gerencie centenas ou milhões de usuários, enquanto equilibra 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. Analise as cargas de trabalho de forma holística para identificar quais recursos oferecem mais benefícios para o 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 gerenciamento de custos, consulte Cobrança e gerenciamento de custos para cargas de trabalho SaaS no Azure.
Considerações de design
Estratégias de dimensionamento horizontal e vertical. As 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 seu aplicativo de dimensionar 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 entre 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 monitoração de estado que não precisam de armazenamentos 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 de forma eficiente com 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 diminuem para controlar os custos sem afetar a experiência do usuário. Fatores como a utilização da CPU, a hora do dia ou as solicitações recebidas 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 RE :06 Recomendações para um 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, você eventualmente alcançará limites, como restrições de rede ou armazenamento, na escalabilidade da sua solução.
Nota
O padrão Deployment Stamps permite implantar várias instâncias independentes de sua solução. Ele fornece outra dimensão de escala. É crucial entender a capacidade de cada selo para determinar quando implantar mais. Este conceito também é conhecido como embalagem de lixo.
Recomendações de design
Recomendação | Benefício |
---|---|
Escolha o dimensionamento horizontal em vez do dimensionamento 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 testes de carga. | Simular o 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 menor número possível de recursos. |
Você está mais bem preparado para lidar com o crescimento além da sua infraestrutura atual. |
Implemente o dimensionamento automático, sempre que possível. Defina regras de dimensionamento automático para refletir a carga do seu 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 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-no a detetar problemas de utilização elevada e a controlar antecipadamente os custos. |
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. |
Estrutura para resiliência
A resiliência de sua camada de computação desempenha um grande papel em sua estratégia geral de resiliência. Seu aplicativo deve tolerar e se recuperar de falhas comuns de forma automática e perfeita, sem impacto para o usuário.
Considerações de design
Requisitos de fiabilidade. Defina requisitos de fiabilidade claros. Esses requisitos incluem metas internas, ou SLOs, e compromissos com o cliente, 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 datacenter isolados dentro de uma região. Para maior resiliência, implante aplicativos em várias zonas de disponibilidade. A implantação entre 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, normalmente é necessário executar cópias redundantes em locais diferentes. Essa tarefa pode ser desafiadora para cargas de trabalho com monitoração de estado, que precisam manter o estado da sessão. Procure criar cargas de trabalho sem monitoração de 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 problemas menores. |
Escolha aplicativos sem monitoração de estado. Se o seu aplicativo precisar ter monitoração de 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. |
Use zonas de disponibilidade. | Você aumenta sua resiliência reduzindo interrupções localizadas do datacenter. |
Projete uma arquitetura multirregional quando houver justificativa comercial para fazê-lo. | Você atende aos altos requisitos de tempo de atividade e oferece suporte a usuários em diferentes regiões. |
Execute 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 que vários selos compartilham. | 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 plataformas de computação:
Próximo passo
Saiba mais sobre as considerações de rede para cargas de trabalho SaaS.