Este documento pode ajudar a planear e conceber a fase de implementação da sua migração para o Google Cloud. Depois de avaliar o seu ambiente atual, planear a migração para o Google Cloude criar a sua baseGoogle Cloud , pode implementar as suas cargas de trabalho.
Este documento faz parte da seguinte série de várias partes sobre a migração para o Google Cloud:
- Migre para Google Cloud: comece já
 - Migre para Google Cloud: avalie e descubra as suas cargas de trabalho
 - Migre para Google Cloud: planeie e crie a sua base
 - Migre para Google Cloud: transfira os seus grandes conjuntos de dados
 - Migre para Google Cloud: implemente as suas cargas de trabalho (este documento)
 - Migre para Google Cloud: migre de implementações manuais para implementações automatizadas em contentores
 - Migre para Google Cloud: otimize o seu ambiente
 - Migre para Google Cloud: práticas recomendadas para validar um plano de migração
 - Migre para Google Cloud: minimize os custos
 
O diagrama seguinte ilustra o caminho do seu percurso de migração.
 
A fase de implementação é a terceira fase da migração para o Google Cloud Google Cloud, na qual cria um processo de implementação para as suas cargas de trabalho.
Este documento é útil se estiver a planear uma migração de um ambiente no local, de um ambiente de alojamento privado, de outro fornecedor de nuvem para oGoogle Cloudou se estiver a avaliar a oportunidade de migrar e quiser explorar como poderá ser.
Neste documento, reveja os diferentes tipos de processos de implementação, por ordem de flexibilidade, automatização e complexidade, juntamente com os critérios sobre como escolher uma abordagem adequada para si:
- Implemente manualmente.
 - Implemente com ferramentas de gestão de configuração (CM).
 - Implemente-o através de ferramentas de orquestração de contentores.
 - Implementar automaticamente.
 
Antes de implementar as suas cargas de trabalho, planeie e crie a fase de implementação. Primeiro, deve avaliar os diferentes tipos de processos de implementação que implementa para as suas cargas de trabalho. Quando avalia os tipos de processos de implementação, pode decidir começar com um processo segmentado e passar para um mais complexo no futuro. Esta abordagem pode gerar resultados mais rápidos, mas também pode introduzir atrito quando passa para um processo mais avançado, porque tem de absorver a dívida técnica que acumulou enquanto usava o processo segmentado. Por exemplo, se passar de implementações totalmente manuais para uma solução automatizada, pode ter de gerir as atualizações da sua pipeline de implementação e apps.
Embora seja possível implementar diferentes tipos de processos de implementação de acordo com as necessidades das suas cargas de trabalho, esta abordagem também pode aumentar a complexidade desta fase. Se implementar diferentes tipos de processos de implementação, pode beneficiar da flexibilidade adicional, mas pode precisar de conhecimentos especializados, ferramentas e recursos adaptados a cada processo, o que se traduz num maior esforço da sua parte.
Implemente manualmente
Uma implementação totalmente manual é suportada por um processo de aprovisionamento, configuração e implementação completamente não automatizado. Embora possam existir especificações e listas de verificação para cada passo do processo, não existe uma verificação nem uma aplicação automatizada dessas especificações. Um processo manual é suscetível a erros humanos, não é repetível e o respetivo desempenho é limitado pelo fator humano.
Os processos de implementação totalmente manuais podem ser úteis, por exemplo, quando precisa de instrumentar rapidamente uma experiência num ambiente de sandbox. Configurar um processo estruturado e automatizado para uma experiência que dura minutos pode atrasar desnecessariamente o seu ritmo, especialmente nas fases iniciais da migração, quando pode não ter a experiência necessária nas ferramentas e nas práticas que lhe permitem criar um processo automatizado.
Embora esta limitação não se aplique ao Google Cloud, as implementações totalmente manuais podem ser a única opção quando lida com ambientes de hardware simples que não têm as APIs de gestão necessárias. Neste caso, não pode implementar um processo automático devido à falta das interfaces necessárias. Se tiver uma infraestrutura virtualizada antiga que não suporte nenhuma automatização, pode ter de implementar um processo totalmente manual
Recomendamos que evite uma implementação totalmente manual, a menos que não tenha outra opção.
Pode implementar um processo de aprovisionamento, configuração e implementação totalmente manual através de ferramentas como a Google Cloud consola, o Cloud Shell, as APIs Google Cloud e a CLI Google Cloud.
Faça a implementação com ferramentas de gestão de configuração
As ferramentas de CM permitem-lhe configurar um ambiente de forma repetível e controlada. Estas ferramentas incluem um conjunto de plug-ins e módulos que já implementam operações de configuração comuns. Estas ferramentas permitem-lhe focar-se no estado final que quer alcançar para o seu ambiente, em vez de implementar a lógica para alcançar esse estado final. Se o conjunto de operações incluído não for suficiente, as ferramentas de CM incluem frequentemente um sistema de extensão que pode usar para desenvolver os seus próprios módulos. Embora estas extensões sejam possíveis, tente usar os módulos e os plug-ins predefinidos, quando aplicável, para evitar encargos adicionais de desenvolvimento e manutenção.
Usa as ferramentas do CM quando precisa de configurar ambientes. Também pode usá-los para aprovisionar a sua infraestrutura e implementar um processo de implementação para as suas cargas de trabalho. As ferramentas de CM são um processo melhor em comparação com um processo de aprovisionamento, configuração e implementação totalmente manual, porque é repetível, controlado e auditável. No entanto, existem várias desvantagens, uma vez que as ferramentas de CM não foram concebidas para tarefas de aprovisionamento ou implementação. Normalmente, não têm funcionalidades incorporadas para implementar uma lógica de aprovisionamento elaborada, como detetar e gerir diferenças entre o estado real da sua infraestrutura e o estado pretendido, ou processos de implementação complexos, como implementações sem tempo de inatividade ou implementações azul-verde. Pode implementar as funcionalidades em falta através dos pontos de extensão mencionados anteriormente. Estas extensões podem exigir um esforço adicional e aumentar a complexidade geral do processo de implementação, uma vez que precisa dos conhecimentos especializados necessários para conceber, desenvolver e manter uma solução de implementação personalizada.
Pode implementar este tipo de processo de aprovisionamento, configuração e implementação usando ferramentas como o Ansible, o Chef, o Puppet e o SaltStack.
Um processo de implementação básico que usa ferramentas de CM pode preparar ambientes de tempo de execução e implementar cargas de trabalho nesses ambientes. Por exemplo, o seu processo pode criar uma instância do Compute Engine, instalar o software necessário e implementar as suas cargas de trabalho. Demora tempo a configurar um ambiente de tempo de execução que suporte as suas cargas de trabalho. Para reduzir o tempo necessário para configurar um ambiente de execução, pode implementar um processo que execute ferramentas do CM para produzir um modelo, como uma imagem do sistema operativo (SO). Pode usar este modelo para criar instâncias do seu ambiente de tempo de execução que estão prontas para as suas cargas de trabalho. Por exemplo, pode usar o Cloud Build para criar imagens do Compute Engine. Estas imagens são frequentemente denominadas imagens douradas ou imagens prateadas, que são modelos imutáveis, como imagens do SO, que cria para os seus ambientes de tempo de execução. A diferença entre os dois depende da quantidade de trabalho que um processo de implementação tem de concluir antes de as imagens poderem executar uma carga de trabalho:
- Imagem dourada: um modelo que cria para os seus ambientes de tempo de execução ou prepara a partir de um modelo base. As imagens douradas incluem todas as informações de configuração e dados de que os seus ambientes de tempo de execução precisam para realizar as tarefas atribuídas. Pode preparar vários tipos de imagens principais para realizar diferentes tarefas. Os sinónimos para tipos de imagens de referência incluem variantes, variações e arquétipos.
 - Imagem prateada: um modelo que cria para os seus ambientes de tempo de execução aplicando alterações mínimas a uma imagem dourada ou a um modelo base. Os ambientes de tempo de execução que executam uma imagem silver concluem o respetivo aprovisionamento e configuração no primeiro arranque, de acordo com as necessidades dos exemplos de utilização que esses ambientes de tempo de execução têm de suportar.
 
Implemente através de ferramentas de orquestração de contentores
Se já investiu ou planeia investir na contentorização das suas cargas de trabalho, pode usar uma ferramenta de orquestração de contentores para implementar as suas cargas de trabalho.
Uma ferramenta de orquestração de contentores encarrega-se da gestão da infraestrutura que suporta o seu ambiente e suporta uma vasta gama de operações de implementação e blocos de construção para implementar a sua lógica de implementação que pode usar quando os integrados não são suficientes. Ao usar estas ferramentas, pode concentrar-se em compor a lógica de implementação real através dos mecanismos fornecidos, em vez de ter de os implementar.
As ferramentas de orquestração de contentores também oferecem abstrações que pode usar para generalizar os processos de implementação em diferentes ambientes subjacentes, para que não tenha de conceber e implementar vários processos para cada um dos seus ambientes. Por exemplo, estas ferramentas incluem normalmente a lógica para dimensionar e atualizar as suas implementações, para que não tenha de as implementar sozinho. Pode até começar a tirar partido destas ferramentas para implementar os seus processos de implementação no ambiente atual e, em seguida, portá-los para o ambiente de destino, porque a implementação é, em grande medida, a mesma, por predefinição. Ao adotar estas ferramentas antecipadamente, ganha experiência na administração de ambientes contentorizados, e esta experiência é útil para a sua migração para oGoogle Cloud.
Use uma ferramenta de orquestração de contentores se as suas cargas de trabalho já estiverem em contentores ou se puder colocá-las em contentores no futuro e planear investir neste esforço. No último caso, deve executar uma análise detalhada de cada carga de trabalho para determinar o seguinte:
- Certifique-se de que é possível contentorizar a carga de trabalho.
 - Avalie as potenciais vantagens que pode obter ao colocar a carga de trabalho em contentores.
 
Se as potenciais dificuldades superarem as vantagens da contentorização, deve usar uma ferramenta de orquestração de contentores apenas se as suas equipas já se comprometerem a usá-las e se não quiser gerir ambientes heterogéneos.
Por exemplo, as soluções de armazém de dados não são normalmente implementadas com ferramentas de orquestração de contentores, porque não foram concebidas para serem executadas em contentores efémeros.
Pode implementar este processo de implementação através do Google Kubernetes Engine (GKE) em Google Cloud. Se tiver interesse num ambiente sem servidor, pode usar ferramentas como o Cloud Run.
Implemente automaticamente
Independentemente das ferramentas de aprovisionamento, configuração, implementação e orquestração que usa no seu ambiente, pode implementar processos de implementação totalmente automatizados para minimizar os erros humanos e consolidar, simplificar e padronizar os processos em toda a sua organização. Também pode inserir passos de aprovação manual no processo de implementação, se necessário, mas todos os passos são automáticos.
Os passos de um pipeline de implementação integral típico são os seguintes:
- Revisão do código.
 - Integração contínua (IC).
 - Produção de artefactos.
 - Implementação contínua (CD), com aprovações manuais eventuais.
 
Pode automatizar cada um desses passos independentemente dos outros, para poder migrar gradualmente os seus processos de implementação atuais para uma solução automatizada ou pode implementar um novo processo diretamente no ambiente de destino. Para que este processo seja eficaz, precisa de procedimentos de teste e validação em cada passo do pipeline, não apenas durante o passo de revisão do código ou o passo de CI.
Para cada alteração na sua base de código, deve fazer uma revisão exaustiva para avaliar a qualidade da alteração. A maioria das ferramentas de gestão de código-fonte tem um suporte de nível superior para revisões de código. Muitas vezes, também suportam a criação e a inicialização automáticas de revisões, analisando a área do código fonte que foi modificada, desde que tenha configurado as equipas responsáveis por cada área da sua base de código. Em cada revisão, também pode executar verificações automáticas no código fonte, como analisadores de código estático e analisadores estáticos, para aplicar padrões de consistência e qualidade em toda a base de código.
Depois de rever e integrar uma alteração no código base, a ferramenta de CI pode executar automaticamente testes, avaliar os resultados e, em seguida, enviar-lhe uma notificação sobre quaisquer problemas com a compilação atual. Pode adicionar valor a este passo seguindo um processo de desenvolvimento orientado por testes para uma cobertura de testes completa das funcionalidades de cada carga de trabalho.
Para cada compilação bem-sucedida, pode automatizar a criação de artefactos de implementação. Estes artefactos representam uma versão pronta para implementação das suas cargas de trabalho, com as alterações mais recentes. Como parte da etapa de criação do artefacto, também pode fazer uma validação automática do próprio artefacto. Por exemplo, executa uma análise de vulnerabilidades em relação a problemas conhecidos e aprova o artefacto para implementação apenas se não forem encontradas vulnerabilidades. Por exemplo, pode usar o Artifact Registry para analisar os seus artefactos quanto a vulnerabilidades conhecidas.
Por último, pode automatizar a implementação de cada artefacto aprovado no ambiente de destino. Se tiver vários ambientes de tempo de execução, também pode implementar uma lógica de implementação exclusiva para cada um deles, e até adicionar passos de aprovação manual, se necessário. Por exemplo, pode implementar automaticamente novas versões das suas cargas de trabalho nos ambientes de desenvolvimento, controlo de qualidade e pré-produção, ao mesmo tempo que continua a exigir uma revisão e uma aprovação manuais da sua equipa de controlo de produção para a implementação no ambiente de produção.
Embora um processo totalmente automatizado de ponta a ponta seja uma das suas melhores opções se precisar de um processo automatizado, estruturado, simplificado e auditável, a implementação deste processo não é uma tarefa trivial. Antes de escolher este tipo de processo, deve ter uma visão clara das vantagens esperadas, dos custos envolvidos e se o seu nível atual de conhecimento e experiência da equipa é suficiente para implementar um processo de implementação totalmente automatizado.
Pode implementar processos de implementação totalmente automatizados com o Cloud Deploy.
O que se segue?
- Saiba como migrar os seus processos de implementação.
 - Saiba quando encontrar ajuda para as suas migrações.
 - Para ver mais arquiteturas de referência, diagramas e práticas recomendadas, explore o Centro de arquitetura na nuvem.
 
Colaboradores
Autor: Marco Ferrari | Arquiteto de soluções na nuvem