Esse princípio no pilar de excelência operacional do Google Cloud Well-Architected Framework ajuda a garantir a prontidão operacional e o desempenho 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 as necessidades de capacidade.
Visão geral do princípio
Organizações diferentes podem interpretar a prontidão operacional de maneiras distintas. 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 de nuvem complexa e de várias camadas requer um planejamento cuidadoso para as operações de ativação e do day-2. Essas operações são frequentemente chamadas de CloudOps.
Áreas de foco da prontidão operacional
A prontidã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 dar 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 responsabilidade central da equipe de operações de 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 área de foco de governança da prontidão operacional.
Definir SLOs:
Os SLOs precisam ser específicos, mensuráveis, alcançáveis, relevantes e temporais (SMART) e refletir o nível de serviço e desempenho que você quer.
- Específico: articula claramente o nível de serviço e desempenho necessário.
- Mensurável: quantificável e rastreável.
- Alcançável: atingível dentro dos limites das capacidades e dos recursos da sua organização.
- Relevante: alinhada às metas e prioridades de negócios.
- Com prazo: tem um período definido para medição e avaliação.
Por exemplo, um SLO para um aplicativo da Web pode ser "99,9% de disponibilidade" ou "tempo médio de resposta inferior a 200 ms". Esses SLOs definem claramente o nível de serviço e desempenho exigido para o aplicativo da Web, e os SLOs podem ser medidos e monitorados 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 em caso de não conformidade. Os SLAs precisam incluir detalhes específicos sobre os serviços fornecidos, o nível de serviço esperado, as responsabilidades do provedor de serviços e do cliente, além de penalidades ou medidas em caso de não conformidade. Os SLAs servem como um contrato entre as duas partes, garantindo que ambas entendam claramente as 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 acompanhar os SLOs. O Monitoring oferece recursos abrangentes de monitoramento e observabilidade que permitem que sua organização colete e analise 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, é possível monitorar e gerenciar com eficácia os serviços de nuvem e garantir que eles atendam aos SLOs e SLAs.
Definir, comunicar e monitorar claramente os SLOs e SLAs de todos os seus serviços de nuvem críticos ajuda a garantir a confiabilidade e o desempenho dos aplicativos e serviços implantados.
Implementar observabilidade abrangente
Para ter visibilidade em tempo real da integridade e do desempenho do seu ambiente de nuvem, recomendamos que você use 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.
A implementação de uma combinação de soluções de observabilidade oferece uma estratégia abrangente que abrange vários aspectos da infraestrutura e dos aplicativos em nuvem. O Google Cloud Observability é uma plataforma unificada para coletar, analisar e visualizar métricas, registros e traces de vários serviços, aplicativos e fontes externas doGoogle Cloud . Ao usar o Monitoring, você pode receber insights sobre a utilização de recursos, as características de desempenho e a integridade geral dos seus recursos.
Para garantir um monitoramento abrangente, acompanhe métricas importantes que se alinham aos indicadores de integridade do sistema, como uso 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 do negócio. Ao acompanhar essas métricas, é possível identificar possíveis gargalos, problemas de desempenho e restrições de recursos. Além disso, é possível configurar alertas para notificar as equipes relevantes de forma proativa sobre possíveis problemas ou anomalias.
Para melhorar ainda mais os recursos de monitoramento, é possível integrar soluções de terceiros ao Google Cloud Observability. Essas soluções podem oferecer outras funcionalidades, 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 gerais dos aplicativos e serviços em nuvem.
Implementar testes de desempenho e carga
A realização de testes de desempenho regulares ajuda a garantir que seus aplicativos e infraestrutura baseados na nuvem possam lidar com cargas de pico e manter o desempenho ideal. O teste de carga simula padrões de tráfego realistas. O teste de estresse leva o sistema ao limite para identificar possíveis gargalos e limitações de desempenho. Essa recomendação é relevante para as áreas de foco de preparação operacional de processos e ferramentas.
Testar o desempenho: use serviços de teste de carga para simular padrões de tráfego reais e testar o estresse dos aplicativos. Essas ferramentas fornecem insights valiosos sobre como o sistema se comporta em várias condições de carga e podem ajudar a identificar áreas que precisam de otimização.
Otimizar o desempenho: com base nos resultados dos testes de desempenho, é possível tomar decisões para otimizar a infraestrutura em nuvem e os aplicativos para ter o melhor desempenho e escalonabilidade. Essa otimização pode envolver o ajuste da alocação de recursos, o ajuste de configurações ou a implementação de mecanismos de armazenamento em cache.
Por exemplo, se você perceber que o aplicativo está apresentando lentidão durante períodos de tráfego intenso, talvez seja necessário aumentar o número de máquinas virtuais ou contêineres alocados para o aplicativo. 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 o máximo de desempenho e ofereçam uma experiência integrada e responsiva para os usuários. Isso pode ajudar você a manter uma vantagem competitiva e conquistar a confiança dos seus clientes.
Planejar e gerenciar a capacidade
Para manter os sistemas de nuvem em execução e escalonamento em resposta a mudanças na demanda, é preciso planejar e gerenciar ativamente a capacidade dos recursos de nuvem. Essa recomendação é compatível com os processos e as ferramentas, áreas de foco da prontidão operacional.
Considere os limites de serviço e gerencie as cotas de recursos: para planejar a capacidade dos recursos de nuvem, comece com os limites rígidos (as restrições fixas) dos serviços que você planeja usar.
- Estime os requisitos de cota para recursos computacionais, armazenamento, limites da API e outros recursos necessários. Solicite 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.
- Prever a demanda por recursos com base nas próximas campanhas de marketing, nas inscrições de usuários e nos 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 do Cloud Deploy, separe os componentes de aplicativo de tipos de máquina 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 conseguir recursos quando necessário. Use reservas adiantadas para garantir a capacidade de tipos de máquina críticos com até um ano de antecedência.
- Para cargas de trabalho de processamento em lote ou treinamento de modelos que podem tolerar horários de início variáveis, programe a capacidade dinamicamente usando VMs flex-start. Essas VMs usam o Dynamic Workload Scheduler para colocar solicitações em fila 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 recursos em regiões secundárias para que seja possível fazer failover com eficiência para recuperação de desastres (DR).
Implementar 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 uso 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 escalonados verticalmente durante as janelas 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áquina.
- Verifique se as configurações do MIG incluem flexibilidade de instâncias (especificando vários tipos de máquina compatíveis) e flexibilidade de local (distribuindo destinos em várias zonas de uma região). Dependendo dos requisitos de capacidade atuais, o sistema provisiona automaticamente o próximo tipo de máquina preferencial da lista de substituição sem descartar solicitações ou limitar os recursos de computação.
Monitorar e otimizar continuamente
Para gerenciar e otimizar as cargas de trabalho na nuvem, é necessário estabelecer um processo para monitorar e analisar continuamente as métricas de performance. Essa recomendação é relevante para as áreas de foco de processos e ferramentas da prontidão operacional.
Rastrear 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 proativamente áreas de melhoria, otimizar a utilização de recursos e garantir que sua infraestrutura em nuvem atenda ou supere consistentemente suas expectativas de desempenho.
Analisar 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 pelo aplicativo. Ao analisar registros e traces, é possível identificar possíveis problemas, identificar as causas raiz dos problemas e entender melhor como seus aplicativos se comportam em diferentes condições. Métricas como o tempo de retorno entre serviços podem ajudar a identificar e entender gargalos nas cargas de trabalho.
Ajustar para melhorar o desempenho:
Usar técnicas de ajuste de desempenho para otimizar significativamente os tempos de resposta do aplicativo e a eficiência geral. Veja a seguir exemplos de técnicas que podem ser usadas:
- Armazenamento em cache: armazene dados acessados com frequência na memória para reduzir a necessidade de consultas repetidas ao 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 o desempenho das operações do banco de dados.
- Criação de perfil de código: identifique áreas do código que consomem recursos excessivos ou causam problemas de desempenho.