Migrar para o Google Cloud: migrar de implantações manuais para implantações automatizadas e conteinerizadas

Last reviewed 2024-12-08 UTC

Este documento ajuda você a planejar e projetar um caminho de migração de implantações manuais para implantações automatizadas e contêinerizadas no Google Cloud usando ferramentas nativas da nuvem e Google Cloud serviços gerenciados.

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

Este documento é útil se você planeja modernizar seus processos de implantação, se está migrando de processos manuais e legados para implantações automatizadas e contentorizadas ou se está avaliando a oportunidade de migrar e querem explorar a aparência.

Antes de iniciar essa migração, avalie o escopo da migração e o status dos processos de implantação atuais e defina suas expectativas e metas. Escolha o ponto de partida de acordo com a implantação atual das cargas de trabalho:

  • As cargas de trabalho estão sendo implantadas manualmente.
  • As cargas de trabalho estão sendo implantadas com ferramentas de gerenciamento de configuração (CM).

É difícil migrar de implantações manuais diretamente para implantações totalmente automatizadas e contentorizadas. Em vez disso, recomendamos os seguintes passos de migração:

  1. Implantar usando ferramentas de orquestração de contêineres.
  2. Implantar automaticamente.

Esse caminho de migração é ideal, mas é possível interromper antes do processo de migração se os benefícios do próximo passo superarem os custos do seu caso específico. Por exemplo, se não planeja implantar automaticamente suas cargas de trabalho, é possível interromper depois da implantação usando ferramentas de orquestração de contêineres. É possível revisitar este documento no futuro, quando estiver pronto para continuar a jornada.

Ao avançar de um passo da migração para o próximo, há uma fase de transição em que você pode usar diferentes processos de implantação ao mesmo tempo. Na verdade, não é preciso escolher apenas uma opção de implantação para todas as suas cargas de trabalho. Por exemplo, é possível ter um ambiente híbrido em que você implanta certas cargas de trabalho usando ferramentas de CM, enquanto implanta outras cargas de trabalho com ferramentas de orquestração de contêineres.

Para essa migração para Google Cloud, recomendamos que você siga o framework de migração descrito em Migrar para Google Cloud: primeiros passos.

No diagrama a seguir, veja o caminho da sua jornada de migração.

Caminho de migração com quatro fases.

É possível migrar do seu ambiente de origem para o Google Cloud em uma série de iterações. Por exemplo, é possível migrar algumas cargas de trabalho primeiro e outras mais tarde. Para cada iteração de migração separada, siga as fases do framework de migração geral:

  1. Avaliar e descobrir suas cargas de trabalho e seus dados.
  2. Planejar e criar uma base em Google Cloud.
  3. Migre suas cargas de trabalho e seus dados para o Google Cloud.
  4. Otimize o Google Cloud ambiente.

Para mais informações sobre as fases desse framework, consulte Migrar para o Google Cloud: primeiros passos.

Para elaborar um plano de migração eficaz, recomendamos que você valide cada etapa do plano e use uma estratégia de reversão. Para ajudar você a validar o plano de migração, consulte Migrar para o Google Cloud: práticas recomendadas para validar um plano de migração.

Migrar para as ferramentas de orquestração de contêineres

Um dos primeiros passos para migrar de implantações manuais é implantar suas cargas de trabalho com ferramentas de orquestração de contêineres. Neste passo, você criará e implementará um processo de implantação para processar cargas de trabalho em contêiner usando ferramentas de orquestração de contêineres, como o Kubernetes.

Se as cargas de trabalho ainda não estiverem contentorizadas, um esforço significativo será gasto para contentorizá-las. Nem todas as cargas de trabalho são adequadas para serem contentorizadas. Se estiver implantando uma carga de trabalho que não é pronta para a nuvem ou para contentorização, talvez não valha a pena contentorizar essas cargas de trabalho. Algumas cargas de trabalho não são compatíveis com contentorização por motivos técnicos ou de licenciamento.

Avaliar e descobrir as cargas de trabalho

Para definir o escopo da migração, primeiro é preciso um inventário dos artefatos que estão sendo produzidos e implantados com as dependências deles em outros sistemas e artefatos. Para criar esse inventário, é preciso usar a experiência das equipes que projetaram e implementaram seus processos atuais de produção e implantação de artefatos. O documento Migrar para o Google Cloud: avaliar e descobrir as cargas de trabalho discute como avaliar o ambiente durante uma migração e como criar um inventário de apps.

Para cada artefato, é preciso avaliar a cobertura do teste. É preciso ter uma cobertura de teste adequada para todos os artefatos antes de passar para o próximo passo. Se for preciso testar e validar manualmente cada artefato, a automação não trará benefícios. Adote uma metodologia que destaque a importância dos testes, como o desenvolvimento orientado a testes.

Ao avaliar seus processos, pense em quantas versões diferentes dos artefatos você pode ter em produção. Por exemplo, se a versão mais recente de um artefato for várias versões antes das instâncias compatíveis, será necessário projetar um modelo compatível com as duas versões.

Considere também a estratégia de ramificação usada para gerenciar sua codebase. Uma estratégia de ramificação é apenas parte de um modelo de colaboração que é preciso avaliar, além de avaliar os processos de colaboração mais amplos dentro e fora das suas equipes. Por exemplo, se você adotar uma estratégia de ramificação flexível, mas não a adaptar ao processo de comunicação, a eficiência dessas equipes poderá ser reduzida.

Nesta fase de avaliação, também é possível determinar como tornar os artefatos que está produzindo mais eficientes e adequados para a conteinerização do que os processos de implantação atuais. Uma maneira de melhorar a eficiência é avaliar o seguinte:

  • Partes comuns: avaliar o que seus artefatos têm em comum. Por exemplo, se você tiver bibliotecas comuns e outras dependências de tempo de execução, pense em consolidá-las em um único ambiente de execução.
  • Requisitos do ambiente de execução: avaliar se é possível simplificar os ambientes de execução para reduzir a variação. Por exemplo, se estiver usando diferentes ambientes de execução para executar todas as cargas de trabalho, considere começar a partir de uma base comum para reduzir a carga de manutenção.
  • Componentes desnecessários: avaliar se os artefatos contêm partes desnecessárias. Por exemplo, é possível ter ferramentas utilitárias, como ferramentas de depuração e solução de problemas, que não são estritamente necessárias.
  • Configuração e injeção secreta: avaliar como você está configurando seus artefatos de acordo com os requisitos do ambiente de execução. Por exemplo, seu sistema de injeção de configuração atual pode não ser compatível com um ambiente em contêiner.
  • Requisitos de segurança: avaliar se o modelo de segurança do contêiner atende aos seus requisitos. Por exemplo, o modelo de segurança de um ambiente contentorizado pode entrar em conflito com o requisito de uma carga de trabalho para ter privilégios de superusuário, acesso direto aos recursos do sistema ou locatário único.
  • Requisitos de lógica de implantação: avalie se você precisa implementar processos avançados de implantação. Por exemplo, se for preciso implementar um processo de implantação canário, é possível determinar se a ferramenta de orquestração de contêineres é compatível.

Planejar e construir uma base

Na fase de planejamento e criação, você provisiona e configura a infraestrutura para fazer o seguinte:

  • Ofereça suporte às cargas de trabalho no Google Cloud ambiente.
  • Conecte o ambiente de origem e o Google Cloud para concluir a migração.

A fase de criação e planejamento é composta pelas seguintes tarefas:

  1. Crie uma hierarquia de recursos.
  2. Configure o Identity and Access Management (IAM) do Google Cloud.
  3. Configure o faturamento.
  4. Configurar a conectividade de rede.
  5. Aumentar sua segurança.
  6. Configurar a geração de registros, o monitoramento e os alertas.

Para mais informações sobre cada uma dessas tarefas, consulte Migrar para o Google Cloud: planeje e crie sua base.

Para ter a flexibilidade necessária para gerenciar seus recursos Google Cloud , recomendamos criar uma hierarquia de recursosGoogle Cloud que ofereça suporte a vários ambientes, como desenvolvimento, teste e cargas de trabalho de produção.

Ao estabelecer identidades de usuário e serviço, para ter o melhor isolamento, é preciso ter pelo menos uma conta de serviço para cada passo do processo de implantação. Por exemplo, se o processo executar os passos para produzir o artefato e gerenciar o armazenamento desse artefato em um repositório, será preciso de pelo menos duas contas de serviço. Se quiser provisionar e configurar ambientes de desenvolvimento e teste para os processos de implantação, talvez seja preciso criar mais contas de serviço. Se tiver um conjunto distinto de contas de serviço por ambiente, os ambientes serão independentes entre si. Embora essa configuração aumente a complexidade da sua infraestrutura e sobrecarregue sua equipe de operações, ela oferece a flexibilidade de testar e validar cada alteração nos processos de implantação.

Também é preciso provisionar e configurar os serviços e a infraestrutura para oferecer suporte às suas cargas de trabalho em contêiner:

Ao usar ferramentas de orquestração de contêineres, não é preciso se preocupar com o provisionamento da infraestrutura ao implantar novas cargas de trabalho. Por exemplo, é possível usar o Autopilot para gerenciar automaticamente a configuração do cluster do GKE.

Implantar os artefatos com ferramentas de orquestração de contêineres

Com base nos requisitos que você reuniu na fase de avaliação e na fase básica deste passo, faça o seguinte:

  • Contentorize suas cargas de trabalho em um contêiner.
  • Implemente processos de implantação para processar cargas de trabalho conteinerizadas.

A contentorização de cargas de trabalho não é uma tarefa comum. Consulte a seguir uma lista geral de atividades necessárias para adaptar e estender para contentorizar suas cargas de trabalho. Sua meta é atender às suas próprias necessidades, como gerenciamento de tráfego e rede, armazenamento permanente, injeção de secrets e configuração e requisitos de tolerância a falhas. Neste documento, abordamos duas atividades: criar um conjunto de imagens de contêineres para usar como base e criar um conjunto de imagens de contêiner para suas cargas de trabalho.

Primeiro, automatize a produção de artefatos para não precisar produzir manualmente uma nova imagem para cada nova implantação. O processo de criação do artefato precisa ser acionado automaticamente sempre que o código-fonte for modificado para que você tenha feedback imediato sobre cada alteração.

Siga os seguintes passos para produzir cada imagem:

  1. Crie a imagem.
  2. Execute o conjunto de testes.
  3. Armazene a imagem em um registro.

Por exemplo, é possível usar o Cloud Build para criar seus artefatos, executar os conjuntos de testes neles e, se os testes forem bem-sucedidos, armazenar os resultados no Artifact Registry.

Também é preciso estabelecer regras e convenções para identificar seus artefatos. Ao produzir suas imagens, rotule cada uma delas para tornar cada execução dos processos repetível. Por exemplo, uma convenção estabelecida é identificar versões usando o controle de versão semântico, em que você marca as imagens de contêiner ao produzir uma versão. Ao produzir imagens que ainda precisam ser trabalhadas antes do lançamento, é possível usar um identificador que as vincule ao ponto da base do código de quando ocorreu o processo de produção delas. Por exemplo, se você estiver usando repositórios Git, é possível usar o hash de confirmação como um identificador para a imagem de contêiner correspondente que você produziu ao enviar uma confirmação para a ramificação principal do repositório.

Durante a fase de avaliação deste passo, foram coletadas informações sobre seus artefatos, as partes comuns e os requisitos de ambiente de execução deles. Com essas informações, é possível projetar e criar um conjunto de imagens de contêineres de base e outro conjunto de imagens para suas cargas de trabalho. Use as imagens de base como ponto de partida para criar as imagens para suas cargas de trabalho. O conjunto de imagens de base precisa ser bem controlado e suportado para evitar a propagação de ambientes de execução incompatíveis.

Ao produzir imagens de contêineres a partir de imagens de base, lembre-se de estender seus conjuntos de testes para cobrir as imagens, não apenas as cargas de trabalho dentro de cada imagem. Use ferramentas como InSpec para executar conjuntos de testes de compliance nos ambientes de execução.

Ao terminar de contentorizar as cargas de trabalho e implementar os processos para produzir automaticamente essas imagens de contêiner, implemente os processos de implantação para usar as ferramentas de orquestração de contêineres. Na fase de avaliação, use as informações sobre os requisitos de lógica de implantação que coletou para criar processos de implantação avançados. Ao usar ferramentas de orquestração de contêineres, é possível se concentrar em compor a lógica de implantação usando os mecanismos fornecidos, em vez de precisar implementá-los manualmente. Por exemplo, é possível usar o Cloud Deploy para implementar seus processos de implantação.

Ao projetar e implementar os processos de implantação, pense em como injetar arquivos de configuração e segredos nas cargas de trabalho e como gerenciar dados para cargas de trabalho com estado. Os arquivos de configuração e a injeção de secret são fundamentais para produzir artefatos imutáveis. Ao implantar artefatos imutáveis, é possível fazer o seguinte:

  • Por exemplo, é possível implantar seus artefatos no ambiente de desenvolvimento. Em seguida, depois de testar e validá-los, mova-os para seu ambiente de controle de qualidade. Por fim, mova-os para o ambiente de produção.
  • Assim, as chances de ter problemas nos seus ambientes de produção são reduzidas, porque o mesmo artefato passou por várias atividades de teste e validação.

Se as cargas de trabalho forem com estado, sugerimos provisionar e configurar o armazenamento permanente necessário para seus dados. No Google Cloud, você tem diferentes opções:

Otimizar o ambiente

Depois de implementar o processo de implantação, é possível usar ferramentas de orquestração de contêineres para começar a otimizar os processos de implantação. Para mais informações, consulte Migrar para o Google Cloud: otimizar o ambiente.

Os requisitos dessa iteração de otimização são os seguintes:

  • Estender o sistema de monitoramento conforme necessário.
  • Estender a cobertura do teste.
  • Aumentar a segurança do ambiente.

Estender o sistema de monitoramento para abranger a produção de artefatos, os processos de implantação e todos os novos ambientes de execução.

Se quiser monitorar, automatizar e codificar seus processos o máximo possível, recomendamos aumentar a cobertura dos testes. Na fase de avaliação, você garantiu pelo menos uma cobertura de teste de ponta a ponta. Durante a fase de otimização, é possível expandir seus conjuntos de testes para abranger mais casos de uso.

Por fim, se quiser aumentar a segurança dos seus ambientes, configure a autorização binária para permitir que apenas um conjunto de imagens assinadas seja implantado nos clusters. Também é possível ativar o Artifact Analysis para verificar se há vulnerabilidades em imagens de contêiner armazenadas no Artifact Registry.

Migrar para a automação de implantação

Depois de migrar para as ferramentas de orquestração de contêineres, é possível migrar para a automação de implantação completa e estender os processos de produção e implantação de artefatos para implantar automaticamente suas cargas de trabalho.

Avaliar e descobrir as cargas de trabalho

Com base na avaliação anterior, agora é possível se concentrar nos requisitos dos processos de implantação:

  • Etapas de aprovação manual: avalie se é preciso oferecer suporte aos passos manuais nos processos de implantação.
  • Unidades de implantação por tempo: avalie quantas implantações por unidade de tempo são necessárias para oferecer suporte.
  • Fatores que causam uma nova implantação: avalie quais sistemas externos interagem com os processos de implantação.

Se for preciso oferecer suporte aos passos de implantação manual, isso não significa que seu processo não pode ser automatizado. Nesse caso, automatize cada etapa do processo e posicione os portões de aprovação manual quando apropriado.

O suporte a várias implantações por dia ou por hora é mais complexo do que oferecer algumas implantações por mês ou por ano. No entanto, se não implantar com frequência, sua agilidade e sua capacidade de reagir a problemas e enviar novos recursos em suas cargas de trabalho poderão ser reduzidas. Por isso, antes de projetar e implementar um processo de implantação totalmente automatizado, é uma boa ideia definir suas expectativas e metas.

Avalie também quais fatores acionam uma nova implantação nos seus ambientes de execução. Por exemplo, é possível implantar cada nova versão no ambiente de desenvolvimento, mas implantá-la no ambiente de controle de qualidade somente se atender a certos critérios de qualidade.

Planejar e construir uma base

Para estender a base criada na etapa anterior, provisione e configure serviços para dar suporte aos processos de implantação automatizada.

Para cada um dos ambientes de execução, configure a infraestrutura necessária para dar suporte aos processos de implantação. Por exemplo, se você provisionar e configurar os processos de implantação nos ambientes de desenvolvimento, controle de qualidade, pré-produção e produção, terá a liberdade e a flexibilidade para testar mudanças nos processos. No entanto, se uma única infraestrutura for usada para implantar os ambientes de execução, os ambientes serão mais simples de gerenciar, mas menos flexíveis quando precisar alterar os processos.

Ao provisionar as contas de serviço e os papéis, considere isolar os ambientes e as cargas de trabalho criando contas de serviço dedicadas que não compartilham responsabilidades. Por exemplo, não reutilize as mesmas contas de serviço para os diferentes ambientes de execução.

Implantar os artefatos com processos totalmente automatizados

Nesta fase, configure os processos de implantação para implantar os artefatos sem qualquer interferência manual, exceto os passos de aprovação.

Use ferramentas como o Cloud Deploy para implementar os processos de implantação automatizada, de acordo com os requisitos reunidos na fase de avaliação desta etapa de migração.

Para qualquer artefato, cada processo de implantação precisa executar as seguintes tarefas:

  1. Implante o artefato no ambiente de execução de destino.
  2. Insira os arquivos de configuração e os secrets no artefato implantado.
  3. Execute o conjunto de testes de conformidade no artefato recém-implantado.
  4. Promover o artefato para o ambiente de produção.

Verifique se os processos de implantação fornecem interfaces para acionar novas implantações de acordo com seus requisitos.

A revisão de código é uma etapa necessária ao implementar processos de implantação automatizados, devido ao curto ciclo de feedback que faz parte desses processos por padrão. Por exemplo, se implantar alterações no ambiente de produção sem qualquer revisão, isso afetará a estabilidade e a confiabilidade do ambiente de produção. Uma alteração não analisada, incorreta ou mal-intencionada pode causar uma interrupção do serviço.

Otimizar o ambiente

Depois de automatizar os processos de implantação, é possível executar outra iteração de otimização. Os requisitos dessa iteração são os seguintes:

  • Estenda seu sistema de monitoramento para abranger a infraestrutura de suporte aos processos de implantação automatizada.
  • Implemente padrões de implantação mais avançados.
  • Implemente um processo de acesso imediato.

Um sistema de monitoramento eficaz permite que você planeje outras otimizações para seu ambiente. Ao medir o comportamento do seu ambiente, é possível encontrar gargalos que estão prejudicando seu desempenho ou outros problemas, como acessos e explorações não autorizados ou acidentais. Por exemplo, configure o ambiente para receber alertas quando o consumo de determinados recursos atingir um limite.

Quando conseguir orquestrar contêineres com eficiência, será possível implementar padrões avançados de implantação, dependendo das suas necessidades. Por exemplo, é possível implementar implantações azul-verde para aumentar a confiabilidade do ambiente e reduzir o impacto de qualquer problema para os usuários.

A seguir

Colaboradores

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