Esse princípio no pilar de excelência operacional do Google Cloud Well-Architected Framework ajuda a garantir a prontidão operacional e a performance das suas cargas de trabalho na nuvem. Ele enfatiza o estabelecimento de expectativas e compromissos claros para o desempenho do serviço, a implementação de monitoramento e alertas robustos, a realização de testes de desempenho e o planejamento proativo para necessidades de capacidade.
Visão geral do princípio
Cada organização pode interpretar a prontidão operacional de uma maneira diferente. A prontidão operacional é como sua organização se prepara para operar cargas de trabalho com sucesso no Google Cloud. A preparação para operar uma carga de trabalho complexa e multicamadas na nuvem requer um planejamento cuidadoso para a entrada em produção e as operações do day-2. Essas operações são chamadas de CloudOps.
Áreas de foco da prontidão operacional
A preparação operacional consiste em quatro áreas de foco. Cada área de foco consiste em um conjunto de atividades e componentes necessários para se preparar para operar um aplicativo ou ambiente complexo no Google Cloud. A tabela a seguir lista os componentes e as atividades de cada área de foco:
| Área de foco da prontidão operacional | Atividades e componentes |
|---|---|
| Funcionários |
|
| Processos |
|
| Ferramentas | Ferramentas necessárias para oferecer suporte aos processos de CloudOps. |
| Governança |
|
Recomendações
Para garantir a prontidão operacional e o desempenho usando o CloudOps, considere as recomendações nas seções a seguir. Cada recomendação neste documento é relevante para uma ou mais das áreas de foco da prontidão operacional.
Definir SLOs e SLAs
Uma das principais responsabilidades da equipe de operações na nuvem é definir objetivos de nível de serviço (SLOs) e contratos de nível de serviço (SLAs) para todas as cargas de trabalho críticas. Essa recomendação é relevante para a governança, que é uma área de foco da prontidão operacional.
Definir SLOs:
Os SLOs precisam ser específicos, mensuráveis, alcançáveis, relevantes e temporais (SMART), além de refletir o nível de serviço e a performance desejados.
- Específico: articula claramente o nível de serviço e o desempenho necessários.
- Mensurável: quantificável e rastreável.
- Alcançável: pode ser atingido dentro dos limites das capacidades e recursos da sua organização.
- Relevante: alinhado com as metas e prioridades de negócios.
- Com prazo definido: tem um período definido para medição e avaliação.
Por exemplo, um SLO para um aplicativo da Web pode ser "disponibilidade de 99,9%" ou "tempo médio de resposta menor que 200 ms". Esses SLOs definem claramente o nível de serviço e o desempenho necessários para o aplicativo da Web, e podem ser medidos e rastreados ao longo do tempo.
Definir SLAs:
Os SLAs descrevem os compromissos com os clientes em relação à disponibilidade, ao desempenho e ao suporte do serviço, incluindo penalidades ou medidas corretivas em caso de não conformidade. Os SLAs precisam incluir detalhes específicos sobre os serviços prestados, o nível de serviço esperado, as responsabilidades do provedor de serviços e do cliente, além de penalidades ou soluções para não conformidade. Os SLAs servem como um contrato entre as duas partes, garantindo que ambas tenham um entendimento claro das expectativas e obrigações associadas ao serviço de nuvem.
Rastrear SLOs:
Use o Cloud Monitoring e os indicadores de nível de serviço (SLIs) para rastrear os SLOs. O Cloud Monitoring oferece recursos abrangentes de monitoramento e observabilidade que permitem à sua organização coletar e analisar métricas relacionadas à disponibilidade, ao desempenho e à latência de aplicativos e serviços baseados na nuvem. Os SLIs são métricas específicas que você pode usar para medir e acompanhar os SLOs ao longo do tempo. Ao usar essas ferramentas, você pode monitorar e gerenciar serviços de nuvem com eficiência e garantir que eles atendam aos SLOs e SLAs.
Definir, comunicar e rastrear claramente os SLOs e SLAs de todos os serviços de nuvem críticos ajuda a garantir a confiabilidade e o desempenho dos aplicativos e serviços implantados.
Implementar a observabilidade abrangente
Para ter visibilidade em tempo real da integridade e da performance do seu ambiente de nuvem, recomendamos usar uma combinação de ferramentas do Google Cloud Observability e soluções de terceiros. Essa recomendação é relevante para as áreas de foco de processos e ferramentas da preparação operacional.
Implementar uma combinação de soluções de observabilidade oferece uma estratégia abrangente que cobre vários aspectos da sua infraestrutura e aplicativos em nuvem. O Google Cloud Observability é uma plataforma unificada para coletar, analisar e visualizar métricas, registros e rastreamentos de váriosGoogle Cloud serviços, aplicativos e fontes externas. Com o Cloud Monitoring, é possível receber insights sobre a utilização de recursos, as características de desempenho e a integridade geral deles.
Para garantir um monitoramento abrangente, monitore métricas importantes que se alinham aos indicadores de integridade do sistema, como utilização da CPU, uso da memória, tráfego de rede, E/S de disco e tempos de resposta do aplicativo. Também é preciso considerar métricas específicas da empresa. Ao rastrear essas métricas, é possível identificar possíveis gargalos, problemas de desempenho e restrições de recursos. Além disso, você pode configurar alertas para notificar proativamente as equipes relevantes sobre possíveis problemas ou anomalias.
Para melhorar ainda mais suas capacidades de monitoramento, é possível integrar soluções de terceiros ao Google Cloud Observability. Essas soluções podem oferecer funcionalidades extras, como análises avançadas, detecção de anomalias com tecnologia de machine learning e recursos de gerenciamento de incidentes. Essa combinação de ferramentas do Google Cloud Observability e soluções de terceiros permite criar um ecossistema de monitoramento robusto e personalizável, adaptado às suas necessidades específicas. Ao usar essa abordagem combinada, é possível identificar e resolver problemas de forma proativa, otimizar a utilização de recursos e garantir a confiabilidade e a disponibilidade geral dos seus aplicativos e serviços de nuvem.
Implementar testes de desempenho e carga
Realizar testes de desempenho regularmente ajuda a garantir que seus aplicativos e infraestrutura baseados na nuvem possam lidar com picos de carga e manter o desempenho ideal. O teste de carga simula padrões de tráfego realistas. O teste de estresse leva o sistema aos limites para identificar possíveis gargalos e limitações de desempenho. Essa recomendação é relevante para as áreas de foco de processos e ferramentas da preparação operacional.
Teste de desempenho: use o Cloud Load Balancing e os serviços de teste de carga para simular padrões de tráfego do mundo real e testar seus aplicativos. Essas ferramentas fornecem insights valiosos sobre o comportamento do sistema em várias condições de carga e ajudam a identificar áreas que precisam de otimização.
Otimizar a performance: com base nos resultados dos testes de performance, você pode tomar decisões para otimizar sua infraestrutura em nuvem e seus aplicativos para ter performance e escalonabilidade ideais. Essa otimização pode envolver o ajuste da alocação de recursos, a otimização de configurações ou a implementação de mecanismos de armazenamento em cache.
Por exemplo, se você perceber que o aplicativo está mais lento durante períodos de tráfego intenso, talvez seja necessário aumentar o número de máquinas virtuais ou contêineres alocados para ele. Como alternativa, talvez seja necessário ajustar a configuração do servidor da Web ou do banco de dados para melhorar o desempenho.
Ao realizar testes de desempenho regularmente e implementar as otimizações necessárias, você garante que seus aplicativos e infraestrutura baseados na nuvem sempre funcionem com desempenho máximo e ofereçam uma experiência perfeita e responsiva para os usuários. Isso pode ajudar você a manter uma vantagem competitiva e conquistar a confiança dos clientes.
Planejar e gerenciar a capacidade
Para manter seus sistemas de nuvem funcionando e escalonando em resposta a mudanças na demanda, é necessário planejar e gerenciar ativamente a capacidade dos recursos de nuvem. Essa recomendação é compatível com as áreas de foco de prontidão operacional (links em inglês) de processos e ferramentas.
Considere os limites de serviço e gerencie as cotas de recursos: para planejar a capacidade dos recursos de nuvem, comece com os limites absolutos (as restrições fixas) dos serviços que você planeja usar.
- Estime os requisitos de cota para computação, armazenamento, limites de API e outros recursos necessários. Solicite os ajustes de cota adequados antes de precisar dos recursos.
- Carregue métricas do Cloud Monitoring no BigQuery e use-as para identificar padrões de tráfego e acompanhar a carga do sistema ao longo do tempo.
- Preveja a demanda de recursos com base nas próximas campanhas de marketing, inscrições de usuários e lançamentos de recursos. Considere também os compromissos de SLA atuais e planejados.
Projete para flexibilidade e eficiência: ao planejar a capacidade das implantações na nuvem, desacople os componentes do aplicativo de tipos de máquinas específicos. Quando você fixa uma carga de trabalho em um único tipo de máquina, não é possível aproveitar o hardware de nuvem mais recente ou as mudanças na capacidade regional.
- Para cargas de trabalho que precisam de hardware especializado, como instâncias de alta memória ou GPUs, verifique se é possível obter recursos quando necessário. Use reservas adiantadas para garantir capacidade para tipos de máquinas críticos com até um ano de antecedência.
- Para cargas de trabalho de treinamento de modelos ou processamento em lote que podem tolerar horários de início variáveis, programe a capacidade dinamicamente usando VMs de início flexível. Essas VMs usam o Programador dinâmico de cargas de trabalho (DWS) para enfileirar solicitações e reduzir os custos de computação.
- Evite reservar famílias de máquinas ou recursos mais antigos para ambientes de desenvolvimento temporários.
- Planeje os recursos em regiões secundárias para fazer failover de maneira eficiente para recuperação de desastres (DR).
Implemente o escalonamento automático: para adaptar dinamicamente seus recursos de nuvem às flutuações de carga de trabalho em tempo real, implemente políticas de escalonamento automático. Os algoritmos de escalonamento automático avaliam métricas como utilização da CPU, pressão de memória e profundidade da fila. Com base na avaliação, os recursos são escalonados horizontalmente durante os períodos de pico de tráfego e verticalmente durante os períodos de baixa utilização, o que ajuda a otimizar o custo dos recursos de nuvem.
- Configure grupos gerenciados de instâncias (MIGs) com modelos de instâncias mistos que combinam gerações atuais e mais recentes de tipos de máquinas.
- Verifique se as configurações do MIG incluem flexibilidade de instância (especificando vários tipos de máquinas compatíveis) e flexibilidade de local (distribuindo destinos em várias zonas de uma região). Dependendo dos requisitos de capacidade atuais, seu sistema provisiona automaticamente o próximo tipo de máquina preferido da sua lista de substituição sem descartar solicitações ou limitar recursos de computação.
Monitorar e otimizar continuamente
Para gerenciar e otimizar cargas de trabalho na nuvem, é necessário estabelecer um processo de monitoramento e análise contínuos das métricas de performance. Essa recomendação é relevante para as áreas de foco de prontidão operacional (links em inglês) de processos e ferramentas.
Acompanhar e coletar dados:
Para estabelecer um processo de monitoramento e análise contínuos, é necessário rastrear, coletar e avaliar dados relacionados a vários aspectos do seu ambiente de nuvem. Ao usar esses dados, é possível identificar de forma proativa áreas de melhoria, otimizar a utilização de recursos e garantir que sua infraestrutura de nuvem atenda ou exceda consistentemente as expectativas de desempenho.
Analise registros e traces:
Os registros fornecem insights valiosos sobre eventos, erros e avisos do sistema. Os traces fornecem informações detalhadas sobre o fluxo de solicitações no seu aplicativo. Ao analisar registros e rastreamentos, é possível identificar problemas em potencial e as causas raiz deles, além de entender melhor como os aplicativos se comportam em diferentes condições. Métricas como o tempo de retorno entre serviços podem ajudar você a identificar e entender gargalos nas suas cargas de trabalho.
Ajustar para performance:
Use técnicas de ajuste de performance para otimizar significativamente os tempos de resposta do aplicativo e a eficiência geral. Confira alguns exemplos de técnicas que você pode usar:
- Cache: armazene dados acessados com frequência na memória para reduzir a necessidade de consultas repetidas de banco de dados ou chamadas de API.
- Otimização do banco de dados: use técnicas como indexação e otimização de consultas para melhorar a performance das operações do banco de dados.
- Criação de perfil de código: identifique áreas do seu código que consomem recursos em excesso ou causam problemas de desempenho.