Este documento ajuda a planear e criar um caminho de migração de implementações manuais para implementações automatizadas e em contentores no Google Cloud, usando ferramentas nativas da nuvem e serviços geridos Google Cloud .
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
- Migre para Google Cloud: migre de implementações manuais para implementações automatizadas em contentores (este documento)
- 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
Este documento é útil se estiver a planear modernizar os seus processos de implementação, se estiver a migrar de processos de implementação manuais e antigos para implementações automatizadas e em contentores, ou se estiver a avaliar a oportunidade de migrar e quiser explorar como poderá ser.
Antes de iniciar esta migração, deve avaliar o âmbito da migração e o estado dos seus processos de implementação atuais, bem como definir as suas expetativas e objetivos. Escolhe o ponto de partida de acordo com a forma como está a implementar atualmente as suas cargas de trabalho:
- Está a implementar as suas cargas de trabalho manualmente.
- Está a implementar as suas cargas de trabalho com ferramentas de gestão de configuração (CM).
É difícil passar de implementações manuais diretamente para implementações totalmente automatizadas e em contentores. Em vez disso, recomendamos os seguintes passos de migração:
Este caminho de migração é o ideal, mas pode parar mais cedo no processo de migração se as vantagens de avançar para o passo seguinte superarem os custos no seu caso específico. Por exemplo, se não planeia implementar automaticamente as suas cargas de trabalho, pode parar depois de as implementar através de ferramentas de orquestração de contentores. Pode voltar a consultar este documento no futuro, quando estiver pronto para continuar a sua jornada.
Quando passa de um passo da migração para outro, existe uma fase de transição em que pode estar a usar processos de implementação diferentes em simultâneo. Na verdade, não tem de escolher apenas uma opção de implementação para todas as suas cargas de trabalho. Por exemplo, pode ter um ambiente híbrido onde implementa determinadas cargas de trabalho com ferramentas de CM, enquanto implementa outras cargas de trabalho com ferramentas de orquestração de contentores.
Para esta migração para Google Cloud, recomendamos que siga a estrutura de migração descrita no artigo Migrar para Google Cloud: introdução.
O diagrama seguinte ilustra o caminho do seu percurso de migração.
Pode migrar do ambiente de origem para o ambiente de destino Google Cloud numa série de iterações. Por exemplo, pode migrar algumas cargas de trabalho primeiro e outras mais tarde. Para cada iteração de migração separada, segue as fases da estrutura de migração geral:
- Avalie e descubra as suas cargas de trabalho e dados.
- Planeie e crie uma base em Google Cloud.
- Migre as suas cargas de trabalho e dados para o Google Cloud.
- Otimize o seu Google Cloud ambiente.
Para mais informações sobre as fases desta estrutura, consulte o artigo Migre para Google Cloud: comece já.
Para criar um plano de migração eficaz, recomendamos que valide cada passo do plano e se certifique de que tem uma estratégia de reversão. Para ajudar a validar o seu plano de migração, consulte o artigo Migre para Google Cloud: práticas recomendadas para validar um plano de migração.
Migre para ferramentas de orquestração de contentores
Um dos primeiros passos para se afastar das implementações manuais é implementar as suas cargas de trabalho com ferramentas de orquestração de contentores. Neste passo, concebe e implementa um processo de implementação para processar cargas de trabalho em contentores através de ferramentas de orquestração de contentores, como o Kubernetes.
Se as suas cargas de trabalho ainda não estiverem em contentores, vai ter de despender um esforço significativo para as colocar em contentores. Nem todas as cargas de trabalho são adequadas para a contentorização. Se estiver a implementar uma carga de trabalho que não esteja pronta para a nuvem ou para a contentorização, pode não valer a pena contentorizar as cargas de trabalho. Algumas cargas de trabalho não podem sequer suportar a contentorização por motivos técnicos ou de licenciamento.
Avalie e descubra as suas cargas de trabalho
Para definir o âmbito da migração, primeiro precisa de um inventário dos artefactos que está a produzir e implementar, juntamente com as respetivas dependências de outros sistemas e artefactos. Para criar este inventário, tem de usar os conhecimentos das equipas que conceberam e implementaram os seus processos atuais de produção e implementação de artefactos. O documento Migrar para Google Cloud: avalie e descubra as suas cargas de trabalho aborda a forma de avaliar o seu ambiente durante uma migração e como criar um inventário de apps.
Para cada artefacto, tem de avaliar a respetiva cobertura de testes. Deve ter uma cobertura de testes adequada para todos os seus artefactos antes de avançar para o passo seguinte. Se tiver de testar e validar manualmente cada artefacto, não beneficia da automatização. Adote uma metodologia que realce a importância dos testes, como o desenvolvimento orientado por testes.
Quando avaliar os seus processos, considere quantas versões diferentes dos seus artefactos pode ter em produção. Por exemplo, se a versão mais recente de um artefacto estiver várias versões à frente das instâncias que tem de suportar, tem de criar um modelo que suporte ambas as versões.
Considere também a estratégia de ramificação que usa para gerir a sua base de código. Uma estratégia de ramificação é apenas parte de um modelo de colaboração que tem de avaliar, e tem de avaliar os processos de colaboração mais amplos dentro e fora das suas equipas. Por exemplo, se adotar uma estratégia de ramificação flexível, mas não a adaptar ao processo de comunicação, a eficiência dessas equipas pode ser reduzida.
Nesta fase de avaliação, também determina como pode tornar os artefactos que está a produzir mais eficientes e adequados para a contentorização do que os seus processos de implementação atuais. Uma forma de melhorar a eficiência é avaliar o seguinte:
- Partes comuns: avalie o que os seus artefactos têm em comum. Por exemplo, se tiver bibliotecas comuns e outras dependências de tempo de execução, considere consolidá-las num ambiente de tempo de execução.
- Requisitos do ambiente de tempo de execução: avalie se pode simplificar os ambientes de tempo de execução para reduzir a respetiva variância. Por exemplo, se estiver a usar diferentes ambientes de tempo de execução para executar todas as suas cargas de trabalho, considere começar a partir de uma base comum para reduzir o encargo de manutenção.
- Componentes desnecessários: avalie se os seus artefactos contêm partes desnecessárias. Por exemplo, pode ter ferramentas de utilidade, como ferramentas de depuração e resolução de problemas, que não são estritamente necessárias.
- Configuração e injeção secreta: avalie como está a configurar os seus artefactos de acordo com os requisitos do seu ambiente de tempo de execução. Por exemplo, o seu sistema de injeção de configuração atual pode não suportar um ambiente contentorizado.
- Requisitos de segurança: avalie se o seu modelo de segurança de contentores cumpre os seus requisitos. Por exemplo, o modelo de segurança de um ambiente em contentores pode entrar em conflito com o requisito de uma carga de trabalho para ter privilégios de superutilizador, acesso direto a recursos do sistema ou arrendamento exclusivo.
- Requisitos da lógica de implementação: avalie se precisa de implementar processos de implementação avançados. Por exemplo, se precisar de implementar um processo de implementação canário, pode determinar se a ferramenta de orquestração de contentores o suporta.
Planeie e construa uma base
Na fase de planeamento e criação, aprovisiona e configura a infraestrutura para fazer o seguinte:
- Suporte as suas cargas de trabalho no seu Google Cloud ambiente.
- Ligue o ambiente de origem e o ambiente Google Cloud para concluir a migração.
A fase de planeamento e criação é composta pelas seguintes tarefas:
- Crie uma hierarquia de recursos.
- Configure Google Cloud's Identity and Access Management (IAM).
- Configure a faturação
- Configure a conetividade de rede.
- Reforce a sua segurança.
- Configure o registo, a monitorização e os alertas.
Para mais informações sobre cada uma destas tarefas, consulte o artigo Migre para o Google Cloud: planeie e crie a sua base.
Para alcançar a flexibilidade necessária para gerir os seus Google Cloud recursos, recomendamos que crie uma Google Cloud hierarquia de recursos que suporte vários ambientes, como cargas de trabalho de desenvolvimento, testes e produção.
Quando estabelece identidades de utilizadores e serviços, para obter o melhor isolamento, precisa de, pelo menos, uma conta de serviço para cada passo do processo de implementação. Por exemplo, se o seu processo executar passos para produzir o artefacto e gerir o armazenamento desse artefacto num repositório, precisa de, pelo menos, duas contas de serviço. Se quiser aprovisionar e configurar ambientes de desenvolvimento e testes para os seus processos de implementação, pode ter de criar mais contas de serviço. Se tiver um conjunto distinto de contas de serviço por ambiente, torna os ambientes independentes uns dos outros. Embora esta configuração aumente a complexidade da sua infraestrutura e coloque mais responsabilidade na sua equipa de operações, dá-lhe a flexibilidade de testar e validar independentemente cada alteração aos processos de implementação.
Também tem de aprovisionar e configurar os serviços e a infraestrutura para suportar as suas cargas de trabalho contentorizadas:
- Configure um registo para armazenar as suas imagens de contentores, como o Artifact Registry, e para isolar este registo e as tarefas de manutenção relacionadas, configure-o num Google Cloud projeto dedicado.
- Aprovisione e configure os clusters Kubernetes de que precisa para suportar as suas cargas de trabalho. Consoante o seu ambiente atual e os seus objetivos, pode usar serviços como o Google Kubernetes Engine (GKE).
- Aprovisione e configure o armazenamento persistente para as suas cargas de trabalho com estado. Para mais informações, consulte o artigo Vista geral do armazenamento do Google Kubernetes Engine.
Ao usar ferramentas de orquestração de contentores, não tem de se preocupar com o aprovisionamento da sua infraestrutura quando implementa novas cargas de trabalho. Por exemplo, pode usar o Autopilot para gerir automaticamente a configuração do cluster do GKE.
Implemente os seus artefactos com ferramentas de orquestração de contentores
Com base nos requisitos que reuniu na fase de avaliação e na fase de base deste passo, faça o seguinte:
- Coloque as suas cargas de trabalho em contentores.
- Implemente processos de implementação para processar as suas cargas de trabalho contentorizadas.
A contentorização das cargas de trabalho é uma tarefa não trivial. Segue-se uma lista generalizada de atividades que tem de adaptar e expandir para colocar as suas cargas de trabalho em contentores. O seu objetivo é cobrir as suas próprias necessidades, como rede e gestão de tráfego, armazenamento persistente, injeção de segredos e configuração, e requisitos de tolerância a falhas. Este documento aborda duas atividades: criar um conjunto de imagens de contentores para usar como base e criar um conjunto de imagens de contentores para as suas cargas de trabalho.
Primeiro, automatiza a produção de artefactos para não ter de produzir manualmente uma nova imagem para cada nova implementação. O processo de compilação de artefactos deve ser acionado automaticamente sempre que o código-fonte for modificado, para que tenha feedback imediato sobre cada alteração.
Executa os seguintes passos para produzir cada imagem:
- Crie a imagem.
- Execute o conjunto de testes.
- Armazenar a imagem num registo.
Por exemplo, pode usar o Cloud Build para criar os seus artefactos, executar os conjuntos de testes em relação aos mesmos e, se os testes forem bem-sucedidos, armazenar os resultados no Artifact Registry.
Também tem de estabelecer regras e convenções para identificar os seus artefactos. Quando produzir as imagens, etiquete cada uma para tornar cada execução dos seus processos repetível. Por exemplo, uma convenção popular é identificar os lançamentos através da versão semântica, em que etiqueta as imagens de contentores quando produz um lançamento. Quando produz imagens que ainda precisam de trabalho antes do lançamento, pode usar um identificador que as associe ao ponto na base de código a partir do qual o seu processo as produziu. Por exemplo, se estiver a usar repositórios Git, pode usar o hash de consolidação como um identificador para a imagem do contentor correspondente que produziu quando enviou uma consolidação para o ramo principal do seu repositório.
Durante a fase de avaliação deste passo, recolheu informações sobre os seus artefactos, as respetivas partes comuns e os requisitos de tempo de execução. Com estas informações, pode conceber e criar um conjunto de imagens de contentores base e outro conjunto de imagens para as suas cargas de trabalho. Usa as imagens base como ponto de partida para criar as imagens para as suas cargas de trabalho. O conjunto de imagens base deve ser rigorosamente controlado e suportado para evitar a proliferação de ambientes de tempo de execução não suportados.
Quando produzir imagens de contentores a partir de imagens de base, lembre-se de expandir os conjuntos de testes para abranger as imagens e não apenas as cargas de trabalho dentro de cada imagem. Pode usar ferramentas como o InSpec para executar conjuntos de testes de conformidade nos seus ambientes de tempo de execução.
Quando terminar de colocar os seus fluxos de trabalho em contentores e implementar processos para produzir automaticamente essas imagens de contentores, implementa os processos de implementação para usar ferramentas de orquestração de contentores. Na fase de avaliação, usa as informações sobre os requisitos da lógica de implementação que recolheu para criar processos de implementação complexos. Ao usar ferramentas de orquestração de contentores, pode concentrar-se na composição da lógica de implementação usando os mecanismos fornecidos, em vez de ter de os implementar manualmente. Por exemplo, pode usar o Cloud Deploy para implementar os seus processos de implementação.
Ao conceber e implementar os processos de implementação, considere como injetar ficheiros de configuração e segredos nas suas cargas de trabalho e como gerir dados para cargas de trabalho com estado. Os ficheiros de configuração e a injeção de segredos são fundamentais para produzir artefactos imutáveis. Ao implementar artefactos imutáveis, pode fazer o seguinte:
- Por exemplo, pode implementar os seus artefactos no ambiente de programação. Em seguida, depois de os testar e validar, move-os para o ambiente de controlo de qualidade. Por fim, move-as para o ambiente de produção.
- Reduz as probabilidades de problemas nos seus ambientes de produção porque o mesmo artefacto passou por várias atividades de teste e validação.
Se as suas cargas de trabalho forem com estado, sugerimos que aprovisione e configure o armazenamento persistente necessário para os seus dados. No Google Cloud, tem diferentes opções:
- Discos persistentes geridos com o GKE
- Serviços de bases de dados totalmente geridos, como o Cloud SQL, Firestore e o Spanner
- Serviços de armazenamento de ficheiros, como o Filestore
- Serviços de armazenamento de objetos, como o Cloud Storage
Otimize o seu ambiente
Após implementar o processo de implementação, pode usar ferramentas de orquestração de contentores para começar a otimizar os processos de implementação. Para mais informações, consulte o artigo Migre para Google Cloud: otimize o seu ambiente.
Os requisitos desta iteração de otimização são os seguintes:
- Expanda o seu sistema de monitorização conforme necessário.
- Ampliar a cobertura de testes.
- Aumentar a segurança do seu ambiente.
Estende o seu sistema de monitorização para abranger a produção de novos artefactos, os processos de implementação e todos os novos ambientes de tempo de execução.
Se quiser monitorizar, automatizar e codificar eficazmente os seus processos o mais possível, recomendamos que aumente a cobertura dos seus testes. Na fase de avaliação, garantiu que tinha, pelo menos, a cobertura mínima de testes completos. Durante a fase de otimização, pode expandir os seus conjuntos de testes para abranger mais exemplos de utilização.
Por último, se quiser aumentar a segurança dos seus ambientes, pode configurar a autorização binária para permitir que apenas um conjunto de imagens assinadas seja implementado nos seus clusters. Também pode ativar a análise de artefactos para verificar vulnerabilidades nas imagens de contentores armazenadas no Artifact Registry.
Migre para a automatização da implementação
Após a migração para ferramentas de orquestração de contentores, pode passar para a automatização da implementação completa e estender os processos de produção e implementação de artefactos para implementar automaticamente as suas cargas de trabalho.
Avalie e descubra as suas cargas de trabalho
Com base na avaliação anterior, agora pode concentrar-se nos requisitos dos seus processos de implementação:
- Passos de aprovação manual: avalie se precisa de suportar passos manuais nos seus processos de implementação.
- Unidades de implementação por período: avalie quantas unidades de implementação por período precisa para oferecer apoio técnico.
- Fatores que causam uma nova implementação: avalie que sistemas externos interagem com os seus processos de implementação.
Se precisar de suportar passos de implementação manual, não significa que o seu processo não possa ser automatizado. Neste caso, automatiza cada passo do processo e coloca os pontos de aprovação manual onde for adequado.
A compatibilidade com várias implementações por dia ou por hora é mais complexa do que a compatibilidade com algumas implementações por mês ou por ano. No entanto, se não fizer a implementação com frequência, a sua agilidade e capacidade de reagir a problemas e enviar novas funcionalidades nas suas cargas de trabalho podem ser reduzidas. Por este motivo, antes de criar e implementar um processo de implementação totalmente automatizado, é recomendável definir as suas expetativas e objetivos.
Avalie também que fatores acionam uma nova implementação nos seus ambientes de tempo de execução. Por exemplo, pode implementar cada novo lançamento no seu ambiente de desenvolvimento, mas implementar o lançamento no seu ambiente de controlo de qualidade apenas se cumprir determinados critérios de qualidade.
Planeie e construa uma base
Para expandir a base criada no passo anterior, aprovisione e configure serviços para suportar os seus processos de implementação automatizados.
Para cada um dos seus ambientes de tempo de execução, configure a infraestrutura necessária para suportar os processos de implementação. Por exemplo, se aprovisionar e configurar os processos de implementação nos ambientes de desenvolvimento, controlo de qualidade, pré-produção e produção, tem a liberdade e a flexibilidade de testar alterações aos seus processos. No entanto, se usar uma única infraestrutura para implementar os seus ambientes de tempo de execução, os ambientes são mais simples de gerir, mas menos flexíveis quando precisa de alterar os seus processos.
Ao aprovisionar as contas de serviço e as funções, considere isolar os seus ambientes e cargas de trabalho uns dos outros criando contas de serviço dedicadas que não partilham responsabilidades. Por exemplo, não volte a usar as mesmas contas de serviço para os diferentes ambientes de tempo de execução.
Implemente os seus artefactos com processos totalmente automatizados
Nesta fase, configura os processos de implementação para implementar os seus artefactos sem intervenções manuais, exceto os passos de aprovação.
Pode usar ferramentas como o Cloud Deploy para implementar os seus processos de implementação automatizados, de acordo com os requisitos que reuniu na fase de avaliação deste passo de migração.
Para qualquer artefacto, cada processo de implementação deve executar as seguintes tarefas:
- Implemente o artefacto no ambiente de tempo de execução de destino.
- Injete os ficheiros de configuração e os Secrets no artefacto implementado.
- Execute o conjunto de testes de conformidade no artefacto recentemente implementado.
- Promova o artefacto para o ambiente de produção.
Certifique-se de que os processos de implementação fornecem interfaces para acionar novas implementações de acordo com os seus requisitos.
A revisão de código é um passo necessário quando implementa processos de implementação automatizados, devido ao curto ciclo de feedback que faz parte destes processos por predefinição. Por exemplo, se implementar alterações no seu ambiente de produção sem qualquer revisão, afeta a estabilidade e a fiabilidade do ambiente de produção. Uma alteração não revista, com formato incorreto ou maliciosa pode causar uma interrupção do serviço.
Otimize o seu ambiente
Depois de automatizar os processos de implementação, pode executar outra iteração de otimização. Os requisitos desta iteração são os seguintes:
- Estenda o seu sistema de monitorização para abranger a infraestrutura que suporta os seus processos de implementação automatizados.
- Implementar padrões de implementação mais avançados.
- Implemente um processo de plano de último recurso.
Um sistema de monitorização eficaz permite-lhe planear mais otimizações para o seu ambiente. Quando mede o comportamento do seu ambiente, pode encontrar quaisquer gargalos que estejam a prejudicar o seu desempenho ou outros problemas, como acessos e explorações não autorizados ou acidentais. Por exemplo, configura o seu ambiente para receber alertas quando o consumo de determinados recursos atinge um limite.
Quando consegue orquestrar contentores de forma eficiente, pode implementar padrões de implementação avançados consoante as suas necessidades. Por exemplo, pode implementar implementações azul/verde para aumentar a fiabilidade do seu ambiente e reduzir o impacto de qualquer problema para os seus utilizadores.
O que se segue?
- Otimize o seu ambiente.
- 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