Migre para Google Cloud: otimize o seu ambiente

Last reviewed 2024-12-07 UTC

Este documento ajuda a planear e criar a fase de otimização da sua migração para o Google Cloud. Depois de implementar as suas cargas de trabalho no Google Cloud, pode começar a otimizar o seu ambiente.

Este documento faz parte da seguinte série de várias partes sobre a migração para o Google Cloud:

O diagrama seguinte ilustra o caminho do seu percurso de migração.

Caminho de migração com quatro fases.

Na fase de otimização, refina o seu ambiente para o tornar mais eficiente do que a implementação inicial.

Este documento é útil se estiver a planear otimizar um ambiente existente após a migração para o Google Cloudou se estiver a avaliar a oportunidade de otimizar e quiser explorar o aspeto que pode ter.

A estrutura da fase de otimização segue a estrutura de migração descrita nesta série: avaliação, planeamento, implementação e otimização. Pode usar esta estrutura versátil para planear toda a migração e dividir as ações independentes em cada fase. Quando concluir o último passo da fase de otimização, pode reiniciar esta fase e encontrar novos alvos de otimização. A fase de otimização é definida como um ciclo de otimização. Uma execução do ciclo é definida como uma iteração de otimização.

A otimização é uma tarefa contínua e permanente. Otimiza constantemente o seu ambiente à medida que evolui. Para evitar esforços descontrolados e duplicados, pode definir objetivos de otimização mensuráveis e parar quando os atingir. Depois disso, pode sempre definir objetivos novos e mais ambiciosos, mas tenha em atenção que a otimização tem um custo em termos de recursos, tempo, esforço e competências.

O diagrama seguinte mostra o ciclo de otimização.

Árvore de decisões de otimização. Para ver uma imagem maior deste diagrama, consulte o artigo Árvore de decisão de otimização.

Neste documento, vai realizar os seguintes passos repetíveis do ciclo de otimização:

  1. Avalie o seu ambiente, as equipas e o ciclo de otimização que está a seguir.
  2. Estabeleça requisitos e objetivos de otimização.
  3. Otimize o seu ambiente e forme as suas equipas.
  4. Ajuste o ciclo de otimização.

Este documento aborda alguns dos princípios e conceitos da engenharia de fiabilidade de sites (EFS). A Google desenvolveu a disciplina de SRE para executar de forma eficiente e fiável uma infraestrutura global que serve milhares de milhões de utilizadores. A adoção da disciplina de SRE completa na sua organização pode ser impraticável se precisar de modificar muitos dos seus processos empresariais e de colaboração. Pode ser mais simples aplicar um subconjunto da disciplina de SRE que melhor se adequa à sua organização.

Avalie o seu ambiente, equipas e ciclo de otimização

Antes de iniciar qualquer tarefa de otimização, tem de avaliar o seu ambiente. Também tem de avaliar as competências das suas equipas, porque a otimização do seu ambiente pode exigir competências que as suas equipas podem não ter. Por último, tem de avaliar o ciclo de otimização. O ciclo é um recurso que pode otimizar como qualquer outro recurso.

Avalie o seu ambiente

Precisa de uma compreensão profunda do seu ambiente. Para qualquer otimização bem-sucedida, tem de compreender como o seu ambiente funciona e identificar potenciais áreas de melhoria. Esta avaliação estabelece uma base de referência para que possa comparar a sua avaliação com a fase de otimização e as iterações de otimização seguintes.

Migre para Google Cloud: avalie e descubra as suas cargas de trabalho contém orientações detalhadas sobre a avaliação das suas cargas de trabalho e a avaliação dos seus ambientes. Se concluiu recentemente uma migração para o Google Cloud, já tem informações detalhadas sobre como o seu ambiente é configurado, gerido e mantido. Caso contrário, use essas orientações para avaliar o seu ambiente.

Avalie as suas equipas

Quando tiver uma compreensão clara do seu ambiente, avalie as suas equipas para compreender as respetivas competências. Comece por listar todas as competências, o nível de experiência para cada competência e que membros da equipa têm mais conhecimentos para cada competência. Use esta avaliação na fase seguinte para descobrir competências em falta de que precisa para atingir os seus objetivos de otimização. Por exemplo, se começar a usar um serviço gerido, precisa das competências para aprovisionar, configurar e interagir com esse serviço. Se quiser adicionar uma camada de colocação em cache a uma aplicação no seu ambiente através do Memorystore, precisa de conhecimentos especializados para usar esse serviço.

Tenha em conta que a otimização do seu ambiente pode afetar os processos de colaboração e de negócios. Por exemplo, se começar a usar um serviço totalmente gerido em vez de um autogerido, pode dar aos seus operadores mais tempo para eliminar o trabalho repetitivo.

Avalie o seu ciclo de otimização

O ciclo de otimização também é um recurso que pode otimizar. Use os dados recolhidos nesta avaliação para obter estatísticas claras sobre o desempenho das suas equipas durante a última iteração de otimização. Por exemplo, se quiser encurtar a duração da iteração, precisa de dados sobre a sua última iteração, incluindo a respetiva complexidade e os objetivos que estava a perseguir. Também precisa de informações sobre todos os bloqueadores que encontrou durante a última iteração para garantir que tem uma estratégia de mitigação se esses bloqueadores voltarem a ocorrer.

Se esta iteração de otimização for a primeira, pode não ter dados suficientes para estabelecer uma base de referência para comparar o seu desempenho. Elabore um conjunto de hipóteses sobre o desempenho esperado das suas equipas durante a primeira iteração. Após a primeira iteração de otimização, avalie o ciclo e o desempenho das suas equipas, e compare-o com as hipóteses.

Estabeleça os seus requisitos e objetivos de otimização

Antes de iniciar qualquer tarefa de otimização, crie um conjunto de objetivos claramente mensuráveis para a iteração.

Neste passo, realiza as seguintes atividades:

  1. Defina os requisitos de otimização.
  2. Defina objetivos de otimização mensuráveis de acordo com os seus requisitos de otimização.

Defina os seus requisitos de otimização

Indica os seus requisitos para a fase de otimização. Um requisito expressa uma necessidade de melhoria e não tem necessariamente de ser mensurável.

Partindo de um conjunto de características de qualidade para as suas cargas de trabalho, o seu ambiente e o seu próprio ciclo de otimização, pode criar um questionário para ajudar a definir os seus requisitos. O questionário abrange as características que considera valiosas para o seu ambiente, processos e cargas de trabalho.

Existem muitas fontes que lhe podem dar orientações na definição das caraterísticas de qualidade. Por exemplo, a norma ISO/IEC 25010 define as caraterísticas de qualidade de um produto de software, ou pode rever a Google Cloud lista de verificação de configuração.

Por exemplo, o questionário pode fazer as seguintes perguntas:

  • A sua infraestrutura e os respetivos componentes podem ser dimensionados verticalmente ou horizontalmente?
  • A sua infraestrutura suporta a reversão de alterações sem intervenção manual?
  • Já tem um sistema de monitorização que abrange a sua infraestrutura e cargas de trabalho?
  • Tem um sistema de gestão de incidentes para a sua infraestrutura?
  • Quanto tempo e esforço são necessários para implementar as otimizações planeadas?
  • Conseguiu alcançar todos os objetivos nas iterações anteriores?

Com base nas respostas ao questionário, elabora a lista de requisitos para esta iteração de otimização. Por exemplo, os seus requisitos podem ser os seguintes:

  • Aumentar o desempenho de uma aplicação.
  • Aumentar a disponibilidade de um componente do seu ambiente.
  • Aumentar a fiabilidade de um componente do seu ambiente.
  • Reduzir os custos operacionais do seu ambiente.
  • Reduza a duração da iteração de otimização para diminuir os riscos inerentes.
  • Aumentar a velocidade de desenvolvimento e reduzir o tempo de lançamento no mercado.

Quando tiver a lista de áreas de melhoria, avalie os requisitos na lista. Nesta avaliação, analisa os requisitos de otimização, procura conflitos e dá prioridade aos requisitos na lista. Por exemplo, aumentar o desempenho de uma aplicação pode entrar em conflito com a redução dos custos operacionais.

Defina objetivos mensuráveis

Depois de finalizar a lista de requisitos, defina objetivos mensuráveis para cada requisito. Um objetivo pode contribuir para mais do que um requisito. Se tiver alguma área de incerteza ou se não conseguir definir todos os objetivos que precisa para abranger os seus requisitos, volte à fase de avaliação desta iteração para recolher as informações em falta e, em seguida, refinar os seus requisitos.

Para obter ajuda na definição destes objetivos, pode seguir uma das disciplinas de SRE, a definição de indicadores do nível de serviço (INSs) e objetivos ao nível do serviço (SLOs):

  • Os INSs são medidas quantitativas do nível de serviço que oferece. Por exemplo, um SLI fundamental pode ser a latência média dos pedidos, a taxa de erro ou o débito do sistema.
  • Os SLOs são valores alvo ou intervalos de valores para um nível de serviço que é medido por um INS. Por exemplo, um SLO pode ser que a latência média dos pedidos seja inferior a 100 milissegundos.

Depois de definir os SLIs e os SLOs, pode perceber que não está a recolher todas as métricas necessárias para medir os SLIs. Esta recolha de métricas é o primeiro objetivo de otimização que pode abordar. Define os objetivos relacionados com a extensão do seu sistema de monitorização para recolher todas as métricas de que precisa para os seus SLIs.

Otimize o seu ambiente e as suas equipas

Depois de avaliar o seu ambiente, equipas e ciclo de otimização, bem como estabelecer requisitos e objetivos para esta iteração, tem tudo a postos para executar o passo de otimização.

Neste passo, realiza as seguintes atividades:

  1. Meça o seu ambiente, equipas e ciclo de otimização.
  2. Analise os dados provenientes destas medições.
  3. Realize as atividades de otimização.
  4. Meça e analise novamente.

Meça o seu ambiente, equipas e ciclo de otimização

Estende o seu sistema de monitorização para recolher dados sobre o comportamento do seu ambiente, equipas e ciclo de otimização para estabelecer uma base de referência com a qual pode comparar após a otimização.

Esta atividade baseia-se e expande o que fez na fase de avaliação. Depois de estabelecer os seus requisitos e objetivos, sabe que métricas recolher para que as suas medições sejam relevantes para os seus objetivos de otimização. Por exemplo, se definiu SLOs e os SLIs correspondentes para reduzir a latência de resposta de uma das cargas de trabalho no seu ambiente, tem de recolher dados para medir essa métrica.

A compreensão destas métricas também se aplica às suas equipas e ao ciclo de otimização. Pode expandir o seu sistema de monitorização para recolher dados de forma a medir as métricas relevantes para as suas equipas e o ciclo de otimização. Por exemplo, se tiver SLOs e SLIs para reduzir a duração da iteração de otimização, tem de recolher dados para medir essa métrica.

Quando conceber as métricas de que precisa para expandir o sistema de monitorização, tenha em conta que a recolha de dados pode afetar o desempenho do seu ambiente e dos seus processos. Avalie as métricas que tem de implementar para as suas medições e os respetivos intervalos de amostragem para compreender se podem afetar o desempenho. Por exemplo, uma métrica com uma frequência de amostragem elevada pode degradar o desempenho, pelo que tem de fazer mais otimizações.

No Google Cloud, pode usar o Cloud Monitoring para implementar as métricas de que precisa para recolher dados. Para implementar métricas personalizadas diretamente nas suas cargas de trabalho, pode usar as bibliotecas de cliente do Google Cloud para o Cloud Monitoring, ou o OpenTelemetry. Se estiver a usar o Google Kubernetes Engine (GKE), pode usar a medição de utilização do GKE para recolher informações sobre a utilização de recursos, como a utilização da CPU, da GPU e da TPU, e dividir a utilização de recursos por espaço de nomes ou etiqueta.

Por último, pode usar o Centro de arquitetura na nuvem e os Google Cloud Livros brancos como pontos de partida para encontrar novas competências que as suas equipas podem precisar para otimizar o seu ambiente.

Analise dados

Depois de recolher os dados, analise-os e avalie-os para compreender o desempenho do seu ambiente, equipas e ciclo de otimização em relação aos requisitos e objetivos de otimização.

Em particular, avalia o seu ambiente em função do seguinte:

  • SLOs.
  • Práticas recomendadas da indústria.
  • Um ambiente sem dívida técnica.

Os SLOs que estabeleceu de acordo com os seus objetivos de otimização podem ajudar a compreender se está a cumprir as suas expetativas. Se não estiver a cumprir os seus SLOs, tem de melhorar as suas equipas ou o ciclo de otimização. Por exemplo, se estabeleceu um SLO para que a latência de resposta de uma carga de trabalho esteja num determinado percentil e essa carga de trabalho não estiver a atingir esse valor, isso é um sinal de que tem de otimizar essa parte da carga de trabalho.

Além disso, pode comparar a sua situação com um conjunto de práticas recomendadas reconhecidas na indústria. Por exemplo, a Google Cloud lista de verificação de configuração ajuda a configurar um ambiente pronto para produção para cargas de trabalho empresariais.

Depois de recolher dados, pode considerar como otimizar o seu ambiente para o tornar mais rentável. Pode exportar dados de faturação do Google Cloud para o BigQuery e analisar dados com o Looker Studio para compreender quantos recursos está a usar e extrair qualquer padrão de gastos.

Por último, compare o seu ambiente com um em que não tem nenhuma dívida técnica, para ver se está a atingir os seus objetivos a longo prazo e se a dívida técnica está a aumentar. Por exemplo, pode estabelecer um SLO para o número de recursos no seu ambiente que está a monitorizar em comparação com o número de recursos que aprovisionou desde a última iteração. Se não tiver expandido o sistema de monitorização para abranger esses novos recursos, a sua dívida técnica aumentou. Ao analisar as alterações na dívida técnica, considere também os fatores que levaram a essas alterações. Por exemplo, uma necessidade empresarial pode exigir um aumento da dívida técnica ou pode ser inesperada. Conhecer os fatores que causaram uma alteração na dívida técnica dá-lhe estatísticas para futuros objetivos de otimização.

Para monitorizar o seu ambiente no Google Cloud, pode usar a monitorização para criar gráficos, painéis de controlo, e alertas. Em seguida, pode encaminhar dados do Cloud Logging para uma análise mais detalhada e um período de retenção prolongado. Por exemplo, pode criar destinos agregados e usar o Cloud Storage, o Pub/Sub ou o BigQuery como destinos. Se exportar dados para o BigQuery, pode, em seguida, usar o Looker Studio para visualizar dados, de modo a identificar tendências e fazer previsões. Também pode usar ferramentas de avaliação, como o Recommender e o Security Command Center para analisar automaticamente o seu ambiente e processos, procurando objetivos de otimização.

Depois de analisar todos os dados de medição, tem de responder a duas perguntas:

  1. Está a cumprir os seus objetivos de otimização?

    Se respondeu sim, esta iteração de otimização está concluída e pode iniciar uma nova. Se respondeu não, pode avançar para a segunda pergunta.

  2. Tendo em conta os recursos que orçamentou, consegue alcançar os objetivos de otimização que definiu para esta iteração?

Para responder a esta pergunta, considere todos os recursos de que precisa, como tempo, dinheiro e conhecimentos especializados. Se respondeu sim, pode avançar para a secção seguinte. Caso contrário, refine os seus objetivos de otimização, tendo em conta os recursos que pode usar para esta iteração. Por exemplo, se tiver um horário fixo, pode ter de agendar alguns objetivos de otimização para a próxima iteração.

Otimize as suas equipas

A otimização do ambiente é um desafio contínuo e pode exigir competências que as suas equipas podem não ter, o que descobriu durante a avaliação e a análise. Por este motivo, a otimização das suas equipas através da aquisição de novas competências e da maior eficiência dos seus processos é crucial para o sucesso das suas atividades de otimização.

Para otimizar as suas equipas, tem de fazer o seguinte:

  • Crie e implemente um programa de formação.
  • Otimize a estrutura e a cultura da sua equipa.

Para que as suas equipas adquiram as competências que lhes faltam, tem de criar e implementar um programa de preparação ou escolher um que tenha sido preparado por formadores profissionais.Google Cloud Para mais informações, consulte o artigo Migre para o Google Cloud: avalie e descubra as suas cargas de trabalho.

Ao otimizar as suas equipas, pode descobrir que há espaço para melhorar a estrutura e a cultura. É difícil prescrever uma situação ideal antecipadamente, porque cada empresa tem a sua própria história e idiossincrasias que contribuíram para a evolução da estrutura e cultura das suas equipas.

A liderança transformacional é um bom ponto de partida para aprender frameworks gerais para executar e medir alterações organizacionais destinadas a adotar práticas de DevOps. Para obter orientação prática sobre como implementar uma cultura de DevOps eficaz na sua organização, consulte o artigo Engenharia de fiabilidade do site, uma descrição abrangente da metodologia de SRE. O Site Reliability Workbook, o complemento do livro, usa exemplos concretos para mostrar como aplicar os princípios e as práticas de EFS.

Otimize o seu ambiente

Depois de medir e analisar os dados das métricas, sabe que áreas tem de otimizar.

Esta secção aborda técnicas de otimização gerais para o seu ambienteGoogle Cloud . Também pode realizar qualquer atividade de otimização específica da sua infraestrutura e dos serviços que está a usar.

Codifique tudo

Uma das maiores vantagens da adoção de um ambiente de nuvem pública, como o Google Cloud, é que pode usar interfaces bem definidas, como as APIs Cloud para aprovisionar, configurar e gerir recursos. Pode usar as suas próprias ferramentas para definir o processo de infraestrutura como código (IaC) e os seus próprios sistemas de controlo de versões.

Pode usar ferramentas como o Terraform para aprovisionar os seus Google Cloud recursos e, em seguida, ferramentas como o Ansible, Chef> ou Puppet para configurar estes recursos. Um processo de IaC ajuda a implementar uma estratégia de reversão eficaz para as suas tarefas de otimização. Pode reverter qualquer alteração que tenha aplicado ao código que descreve a sua infraestrutura. Além disso, pode evitar falhas inesperadas ao atualizar a sua infraestrutura testando as alterações.

Além disso, pode aplicar processos semelhantes para codificar outros aspetos do seu ambiente, como políticas como código, através de ferramentas como o Open Policy Agent e operações como código, como o GitOps.

Por conseguinte, se adotar um processo de IaC nas primeiras iterações de otimização, pode definir mais atividades de otimização como código. Também pode adotar o processo gradualmente para poder avaliar se é adequado ao seu ambiente.

Automatize tudo

Para otimizar completamente todo o seu ambiente, tem de usar os recursos de forma eficiente. Isto significa que tem de eliminar o trabalho excessivo para poupar recursos e reinvestir em tarefas mais importantes que geram valor, como atividades de otimização.

De acordo com a recomendação da SRE, a forma de eliminar o trabalho repetitivo é aumentar a automatização. Nem todas as tarefas de automatização requerem competências de engenharia de software altamente especializadas ou grandes esforços. Por vezes, um pequeno script executável executado periodicamente pode poupar várias horas por dia. Google Cloud fornece ferramentas como a CLI do Google Cloud e serviços geridos, como as APIs Cloud, o Cloud Scheduler, o Cloud Composer e o Cloud Run, que as suas equipas podem usar para automatizar tarefas repetitivas.

Monitorize tudo

Se não conseguir reunir medidas detalhadas sobre o seu ambiente, não pode melhorá-lo, porque não tem dados que sustentem as suas suposições. Isto significa que não sabe o que fazer para atingir os seus objetivos de otimização.

Um sistema de monitorização abrangente é um componente necessário para o seu ambiente. O sistema monitoriza todas as métricas essenciais que tem de avaliar para os seus objetivos de otimização. Quando cria o seu sistema de monitorização, planeie monitorizar, no mínimo, os quatro sinais fundamentais.

Pode usar serviços geridos, como a monitorização e o registo, para monitorizar o seu ambiente sem ter de configurar uma solução de monitorização complicada.

Pode ter de implementar um sistema de monitorização que possa monitorizar ambientes híbridos e multicloud para cumprir as políticas de restrição de dados que obrigam a armazenar dados apenas em determinadas localizações físicas ou serviços que usam vários ambientes de nuvem em simultâneo.

Adote uma abordagem preparada para a nuvem

A expressão "pronto para a nuvem" descreve um paradigma que representa uma forma eficiente de conceber e executar uma aplicação na nuvem. A Cloud Native Computing Foundation (CNCF) define uma aplicação nativa da nuvem como uma aplicação escalável, resiliente, gerível e observável por tecnologias como contentores, malhas de serviços, microsserviços, infraestrutura imutável e APIs declarativas. Google Cloud oferece serviços geridos, como o GKE, o Cloud Run, a malha de serviços na nuvem, o registo e a monitorização para permitir que os utilizadores criem e executem aplicações prontas para a nuvem.

Saiba mais sobre as tecnologias prontas para a nuvem a partir do CNCF Trail Map e do CNCF Cloud Native Interactive Landscape.

Gestão de custos

Devido aos diferentes modelos de faturação e custos, a otimização dos custos de um ambiente de nuvem pública, como o Google Cloud , é diferente da otimização de um ambiente no local.

Para mais informações, consulte o artigo Migre para Google Cloud: minimize os custos.

Meça e analise novamente

Quando concluir as atividades de otimização desta iteração, repete as medições e a análise para verificar se atingiu os seus objetivos. Responda à seguinte pergunta:

Ajuste o ciclo de otimização

Nesta secção, atualiza e modifica o ciclo de otimização que seguiu nesta iteração para se adequar melhor à estrutura e ao ambiente da sua equipa.

Codifique o ciclo de otimização

Para otimizar o ciclo de otimização de forma eficiente, tem de documentar e definir o ciclo num formato padronizado, simples e gerível, que permita fazer alterações. Pode usar um serviço totalmente gerido, como o Cloud Composer para criar, agendar, monitorizar e gerir os seus fluxos de trabalho. Também pode primeiro representar os seus processos com uma linguagem como o modelo de processo empresarial e notação (BPMN). Depois disso, pode codificar estes processos com uma linguagem padronizada, como a linguagem de execução de processos empresariais (BPEL). Após a adoção da IaC, a descrição dos seus processos com código permite geri-los como faz com o resto do seu ambiente.

Automatize o ciclo de otimização

Depois de codificar o ciclo de otimização, pode automatizar tarefas repetitivas para eliminar o trabalho excessivo, poupar tempo e tornar o ciclo de otimização mais eficiente. Pode começar a automatizar todas as tarefas em que não é necessária uma decisão humana, como medir dados e produzir relatórios agregados para as suas equipas analisarem. Por exemplo, pode automatizar a análise de dados com o Cloud Monitoring para verificar se o seu ambiente cumpre os SLOs que definiu. Uma vez que a otimização é uma tarefa contínua e que itera no ciclo de otimização, mesmo as automatizações pequenas podem aumentar significativamente a eficiência.

Monitorize o ciclo de otimização

Tal como fez para todos os recursos no seu ambiente, tem de monitorizar o ciclo de otimização para verificar se está a funcionar como esperado e também procurar gargalos e objetivos de otimização futuros. Pode começar a monitorizá-lo acompanhando o tempo e os recursos que as suas equipas gastaram em cada passo de otimização. Por exemplo, pode usar um sistema de acompanhamento de problemas e uma ferramenta de gestão de projetos para monitorizar os seus processos e extrair estatísticas relevantes sobre métricas como o tempo de resolução de problemas e o tempo de conclusão.

O que se segue?

Colaboradores

Autor: Marco Ferrari | Arquiteto de soluções na nuvem