Neste documento, ajudamos a planejar e projetar a fase de implantação da sua migração para o Google Cloud. Depois de avaliar seu ambiente atual, planejar a migração para o Google Cloud e criar sua base do Google Cloud, será possível implantar suas cargas de trabalho.
Este documento faz parte da série de várias partes a seguir sobre a migração para o Google Cloud:
- Migrar para o Google Cloud: primeiros passos
- Migrar para o Google Cloud: avalie e descubra suas cargas de trabalho
- Migrar para o Google Cloud: planejamento e elaboração da base
- Migrar para o Google Cloud: transferir grandes conjuntos de dados
- Migrar para o Google Cloud: implantar suas cargas de trabalho (este documento)
- Migrar para o Google Cloud: migrar de implantações manuais para implantações automatizadas contentorizadas
- Migrar para o Google Cloud: otimize seu ambiente
- Migração para o Google Cloud: práticas recomendadas para validar um plano de migração
- Migre para o Google Cloud: reduza os custos
No diagrama a seguir, veja o caminho da sua jornada de migração.
A fase de implantação é a terceira fase da migração para o Google Cloud. Nela, você cria um processo de implantação para suas cargas de trabalho.
Este documento é útil se você estiver planejando uma migração de um ambiente local, de um ambiente de hospedagem particular, de outro provedor de nuvem para o Google Cloud ou se estiver avaliando a oportunidade de migrar e quiser explorar as possibilidades.
Seguindo as orientações deste documento, você analisará os diferentes tipos de processos de implantação, em ordem de flexibilidade, automatização e complexidade e os critérios de escolha da abordagem adequada para você:
- Implantar manualmente.
- Implantar com ferramentas de gerenciamento de configuração (CM).
- Implantar usando ferramentas de orquestração de contêineres.
- Implantar automaticamente.
Antes de implantar as cargas de trabalho, faça o planejamento e o projeto da fase de implantação. Avalie primeiramente os diferentes tipos de processos de implantação que você implementará para suas cargas de trabalho. Após essa avaliação, você terá as informações para começar com um processo simples e passar para um mais complexo no futuro. Essa abordagem pode levar a resultados mais rápidos, mas também pode gerar atrito quando você passar para um processo mais avançado, porque é necessário absorver o débito técnico acumulado com o uso do processo mais simples. Por exemplo, se você passar de implantações totalmente manuais para uma solução automatizada, talvez precise gerenciar atualizações para seu pipeline de implantação e aplicativos.
É possível implementar diferentes tipos de processos de implantação, de acordo com as necessidades das cargas de trabalho, mas essa abordagem também pode aumentar a complexidade dessa fase. Se você implementar diferentes tipos de processos de implantação, poderá se beneficiar da flexibilidade adicional, mas talvez precise de conhecimento, ferramentas e recursos personalizados para cada processo, o que se traduz em mais esforços para você.
Implantar manualmente
Uma implantação totalmente manual é apoiada por um processo de provisionamento, configuração e implantação inteiramente não automatizado. É possível que haja especificações e listas de verificação para cada etapa do processo, mas não há verificação ou imposição automática dessas especificações. Um processo manual está propenso a erros humanos, não é passível de repetição e tem desempenho limitado pelo fator humano.
Processos de implantação totalmente manuais podem ser úteis, por exemplo, quando você precisa instrumentar rapidamente uma experiência em um ambiente de área restrita. A configuração de um processo automatizado e estruturado para uma experiência que dura alguns minutos pode diminuir seu ritmo desnecessariamente, especialmente nos estágios iniciais da migração, em que talvez você ainda não tenha o conhecimento necessário sobre as ferramentas e práticas que permitam criar um processo automatizado.
Embora essa limitação não se aplique ao Google Cloud, implantações totalmente manuais podem ser sua única opção de lidar com ambientes bare metal sem as APIs de gerenciamento necessárias. Nesse caso, não é possível implementar um processo automatizado devido à falta das interfaces necessárias. Se você tiver uma infraestrutura virtualizada herdada, que não ofereça suporte a nenhuma automatização, talvez seja forçado a implementar um processo totalmente manual
Recomendamos que você evite fazer uma implantação totalmente manual, a menos que seja inevitável.
É possível implementar provisionamento, configuração e processo de implantação totalmente manuais utilizando ferramentas como o Console do Google Cloud, o Cloud Shell, as APIs do Cloud e a Google Cloud CLI.
Implantar com ferramentas de gerenciamento de configuração
As ferramentas de CM permitem configurar um ambiente de maneira controlada e passível de repetição. Essas ferramentas incluem um conjunto de plug-ins e módulos que já implementam operações de configuração comuns. Com elas, você tem condições se concentrar no estado final que pretende atingir para seu ambiente, em vez de implementar a lógica para atingir esse estado final. Se o conjunto de operações incluído não for suficiente, as ferramentas de CM geralmente apresentam um sistema de extensão que pode ser usado por você para desenvolver seus próprios módulos. Ainda que essas extensões sejam possíveis, tente usar os módulos e plug-ins predefinidos, quando isso for válido, para evitar encargos adicionais de desenvolvimento e manutenção.
Você usa ferramentas de CM quando precisa configurar ambientes. Elas também podem ser usadas para provisionar a infraestrutura e implementar um processo de implantação para as cargas de trabalho. As ferramentas de CM são um processo melhor em comparação com um processo totalmente manual de provisionamento, configuração e implantação, porque é controlado, pode ser auditado, além de ser passível de repetição. No entanto, existem várias desvantagens, porque as ferramentas de CM não são projetadas para tarefas de provisionamento ou implantação. Elas geralmente não têm recursos internos para a implementação de lógica de provisionamento elaborada, como os que detectam e gerenciam diferenças entre o estado real da sua infraestrutura e o estado pretendido, ou processos de implantação avançados, como implantações sem tempo de inatividade ou implantações azul-verde. É possível implementar os recursos que faltam usando os pontos de extensão mencionados anteriormente. Essas extensões podem resultar em um esforço extra e aumentar a complexidade geral do processo de implantação, porque você precisa do conhecimento necessário para projetar, desenvolver e manter uma solução de implantação personalizada.
Esse tipo de processo de provisionamento, configuração e implantação pode ser implementado usando ferramentas como Ansible, Chef, Puppet e SaltStack.
Implantar usando ferramentas de orquestração de contêineres
Se você já investiu ou planeja investir na conteinerização das suas cargas de trabalho, poderá usar uma ferramenta de orquestração de contêineres para a implantação das cargas de trabalho.
Uma ferramenta de orquestração de contêineres cuida do gerenciamento da infraestrutura básica do seu ambiente e suporta uma ampla gama de operações de implantação e elementos essenciais para implementar sua lógica de implantação, que pode ser usada quando as lógicas incorporadas não forem suficientes. Essas ferramentas permitem que você se concentre em compor a lógica de implantação real usando os mecanismos fornecidos, em vez de precisar implementá-los.
As ferramentas de orquestração de contêineres também fornecem abstrações que podem ser usadas para generalizar seus processos de implantação em diferentes ambientes implícitos, para que você não precise projetar e implementar vários processos para cada um desses ambientes. Por exemplo, essas ferramentas geralmente incluem a lógica de escalonamento e atualização das suas implantações, para que você não precise implementá-las sozinho. É possível até começar aproveitando essas ferramentas para implementar os processos de implantação no seu ambiente atual e, em seguida, transferi-los para o ambiente de destino, porque a implementação é basicamente a mesma, por design. Ao adotar essas ferramentas desde o início, você adquire experiência na administração de ambientes em contêineres. Essa experiência é útil para sua migração para o Google Cloud.
Use as ferramentas de orquestração de contêineres se as cargas de trabalho já estiverem em contêineres ou se você puder colocá-las em contêineres no futuro e planeja investir nesse esforço. No último caso, você deve executar uma análise completa de cada carga de trabalho para determinar o seguinte:
- É possível fazer a conteinerização da carga de trabalho.
- Os benefícios em potencial que podem ser alcançados com a conteinerização da carga de trabalho.
Se as armadilhas eventuais superarem os benefícios da conteinerização, você só deve usar uma ferramenta de orquestração de contêineres se sua equipe já estiver comprometida em usá-la e você não quiser gerenciar ambientes heterogêneos.
Por exemplo, as soluções de armazenamento de dados geralmente não são implantadas por meio de ferramentas de orquestração de contêineres, porque não foram projetadas para serem executadas em contêineres efêmeros.
É possível aplicar esse processo de implantação usando o Google Kubernetes Engine (GKE) no Google Cloud. Se você estiver interessado em um ambiente sem servidor, use ferramentas como o Cloud Run.
Implantar automaticamente
Independentemente das ferramentas de provisionamento, configuração, implantação e orquestração usadas no seu ambiente, é possível implementar processos de implantação totalmente automatizados para minimizar erros humanos e consolidar, otimizar e padronizar os processos na organização. As etapas de aprovação manual podem ser inseridas manualmente no processo de implantação, se necessário, mas todas as etapas são automatizadas.
As etapas de um pipeline de implantação de ponta a ponta típico são as seguintes:
- Revisão de código
- Integração contínua (CI, na sigla em inglês)
- Produção de artefatos.
- Implantação contínua (CD, na sigla em inglês), com aprovações manuais aleatórias.
É possível automatizar cada uma dessas etapas independentemente das outras e migrar gradualmente seus processos de implantação atuais para uma solução automatizada ou implementar um novo processo diretamente no ambiente de destino. Para que esse processo seja eficaz, você precisa de procedimentos de teste e validação em cada etapa do pipeline, não apenas durante a etapa de revisão de código ou a etapa de CI.
Para cada alteração na base de código, você deve executar uma revisão completa para avaliar a qualidade da alteração. A maioria das ferramentas de gerenciamento de código-fonte tem suporte de primeira classe para revisões de código. Elas geralmente oferecem suporte à criação e inicialização automática de revisões, observando a área do código-fonte que foi modificada, desde que você tenha configurado as equipes responsáveis individualmente pelas áreas da sua base de código. Em cada revisão, é possível executar verificações automatizadas no código-fonte, como linters e analisadores estáticos, para impor padrões de consistência e qualidade em toda a base de código.
Depois de revisar e integrar uma alteração na base de código, a ferramenta de CI pode executar testes automaticamente, avaliar os resultados e notificar você sobre quaisquer problemas decorrentes da compilação atual. Para agregar valor a essa etapa, siga um processo de desenvolvimento focado em testes, a fim de ter cobertura completa para os recursos de cada carga de trabalho.
Para cada versão bem-sucedida, é possível automatizar a criação de artefatos de implementação. Esses artefatos representam uma versão, pronta para implantar, das suas cargas de trabalho, com as alterações mais recentes. Como parte da etapa de criação do artefato, é possível executar uma validação automatizada do próprio artefato. Por exemplo, você executa uma varredura de vulnerabilidades em relação a problemas conhecidos e aprova o artefato para implantação apenas se nenhuma vulnerabilidade for encontrada.
Por fim, você automatiza a implantação de cada artefato aprovado no ambiente de destino. Se você tiver vários ambientes de execução, também poderá implementar uma lógica de implantação exclusiva para cada um e até incluir etapas de aprovação manual, se necessário. Por exemplo, é possível implantar automaticamente novas versões das suas cargas de trabalho nos ambientes de desenvolvimento, garantia de qualidade e pré-produção e ao mesmo tempo exigir que seja feita revisão e aprovação manuais por parte da sua equipe de controle de produção, para a implantação no seu ambiente de produção.
Ainda que um processo de ponta a ponta totalmente automatizado seja uma das suas melhores opções, se você precisar de um processo automatizado, estruturado, otimizado e que possa ser auditado, a implementação desse processo não é uma tarefa trivial. Antes de escolher esse tipo de processo, você deve ter uma visão clara dos benefícios esperados, dos custos envolvidos e saber se o nível atual de conhecimento e experiência da equipe é suficiente para implementar um processo de implantação totalmente automatizado.
É possível implementar processos de implantação totalmente automatizados com o Cloud Deploy.
A seguir
- Saiba como migrar processos de implantação.
- Saiba como buscar ajuda para suas migrações.
- Confira arquiteturas de referência, diagramas, tutoriais e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.