Visão geral do App Lifecycle Manager

O App Lifecycle Manager permite armazenar, hospedar, gerenciar e monitorar aplicativos de software como serviço (SaaS) no Google Cloud. O App Lifecycle Manager gerencia implantações do Terraform em escala, permitindo que você gerencie o aplicativo SaaS e a infraestrutura em que ele é executado.

O App Lifecycle Manager pode ser usado de várias maneiras por diferentes partes interessadas no pipeline de SaaS. Se o seu trabalho se identifica com algum desses papéis, talvez você tenha interesse em usar o App Lifecycle Manager:

  • Administrador da plataforma
  • Desenvolvedor de aplicativos
  • Arquiteto
  • Administrador de compliance
  • Engenheiro de plataforma
  • Operações financeiras

O App Lifecycle Manager oferece os seguintes benefícios:

  • Simplifique o gerenciamento de serviços em escala automatizando tarefas de gerenciamento de serviços (como implantação, lançamentos e gerenciamento de flag de recurso) em seus locatários de SaaS.
  • Amplie sua observabilidade e controle ajustando suas atualizações e versões em unidades configuráveis para gerenciar sua oferta de SaaS com precisão em escala.
  • Crie consistência em todo o seu Google Cloud ecossistema gerenciando serviços em vários Google Cloud produtos, incluindo Google Cloud, o Google Distributed Cloud, o Faturamento, a Observabilidade e o Resource Manager.
  • Use uma arquitetura flexível e com modelos que promova atualizações e implantações de grupos baseadas em unidades para melhorar a eficiência e a reutilização.

Como o App Lifecycle Manager funciona?

O App Lifecycle Manager implanta artefatos que definem sua oferta de SaaS. Esses artefatos precisam ter uma configuração do Terraform. A implantação é organizada em unidades distintas que podem ser atualizadas com versões que contêm mudanças na sua oferta por meio de um processo de lançamento configurável.

Para mais informações sobre a nomenclatura do App Lifecycle Manager, consulte o Glossário.

Preparar a carga de trabalho para o App Lifecycle Manager

Antes de implantar sua oferta de SaaS, recomendamos que você determine o arranjo ideal da sua oferta de SaaS no ecossistema do App Lifecycle Manager.

Organize as partes da sua oferta de SaaS que precisam ser atualizadas ou modificadas juntas em configurações distintas do Terraform. Ao planejar sua oferta de SaaS, use tipos de unidade para cada agrupamento da sua oferta de SaaS.

Depois de definir a estrutura ideal para sua carga de trabalho no App Lifecycle Manager, você pode criar sua oferta de SaaS, tipos de unidade e, em seguida, implantar suas unidades usando um lançamento.

Para conferir um exemplo da configuração do App Lifecycle Manager, consulte o guia de início rápido.

Contas de serviço do App Lifecycle Manager

O App Lifecycle Manager usa uma combinação de contas de serviço gerenciadas pelo Google e pelo usuário:

  • Conta de serviço do App Lifecycle Manager (gerenciada pelo Google): essa conta é criada automaticamente após a criação do primeiro recurso de oferta de SaaS. Ela é gerenciada pelo Google. Ela realiza ações em seu nome, como interagir com outros Google Cloud serviços durante o provisionamento de unidades.

  • _Conta de serviço de acionamento (gerenciada pelo usuário)_: você cria e gerencia essa conta de serviço. O App Lifecycle Manager (pelo Infrastructure Manager) usa essa conta para executar as configurações do Terraform ao provisionar ou atualizar unidades. Essa conta atua como a identidade para criar e gerenciar os recursos definidos no Terraform. As permissões da conta de serviço de acionamento estão diretamente vinculadas aos recursos gerenciados pela configuração do Terraform.

    É possível ter várias contas de serviço de acionamento. Recomendamos que você tenha uma conta de serviço de acionamento para cada locatário.

  • Opcional: conta de serviço de criação de artefatos (gerenciada pelo usuário): essa conta de serviço é usada para criar e fazer upload do Terraform empacotado em artefatos OCI. Geralmente, essa é uma conta de serviço do Cloud Build, mas pode ser qualquer conta de serviço com as permissões adequadas para sua oferta de SaaS.

Conta de serviço do App Lifecycle Manager (gerenciada pelo Google)

A conta de serviço do App Lifecycle Manager é um agente de serviço gerenciado pelo Google usado pelo App Lifecycle Manager para realizar operações no seu projeto.

Essa conta de serviço é provisionada automaticamente quando você cria o primeiro recurso do App Lifecycle Manager. A conta de serviço do App Lifecycle Manager é criada usando este formato:

  service-PROJECT_NUMBER@gcp-sa-saasservicemgmt.iam.gserviceaccount.com

Substitua:

  • PROJECT_NUMBER: o número do seu projeto.

Conta de serviço de acionamento (gerenciada pelo usuário)

A conta de serviço de acionamento é uma conta serviço gerenciado pelo usuário que você precisa criar. O App Lifecycle Manager (pelo Infra Manager) usa essa conta de serviço para executar as configurações do Terraform. É a identidade que cria, modifica e exclui os recursos definidos no Terraform.

Você é responsável por criar essa conta de serviço no seu projeto ou no projeto de locatário.

Variáveis de entrada da conta de serviço de acionamento

Ao criar uma unidade, você precisa fornecer a conta de serviço de acionamento como uma variável de entrada de par de chave-valor para a configuração do Terraform:

  • Nome: actuation_sa
  • Tipo de variável: String
  • Valor da variável: endereço de e-mail da conta de serviço de acionamento:

    my-actuation-sa@my-identifier.iam.gserviceaccount.com
    

Permissões exigidas

A conta de serviço de acionamento requer permissões suficientes para gerenciar os recursos definidos na configuração do Terraform. No mínimo, ela precisa de:

  • roles/iam.serviceAccountTokenCreator: permite que a conta de serviço gere tokens para autenticação.
  • roles/config.admin: concede controle total sobre os recursos do Infra Manager.
  • roles/storage.admin: concede controle total do Cloud Storage.

A conta de serviço de acionamento também precisa de permissões para criar e gerenciar os recursos Google Cloud específicos usados pelo aplicativo.

Exemplo:

  • Se o Terraform criar clusters do Google Kubernetes Engine (GKE), a conta de serviço precisará de papéis adequados do GKE (por exemplo, roles/container.admin).
  • Se o Terraform criar instâncias do Compute Engine, a conta de serviço precisará do papel roles/compute.admin.
  • Se o Terraform criar instâncias do Cloud SQL, a conta de serviço precisará dos papéis adequados do Cloud SQL (por exemplo, roles/cloudsql.admin).

Consulte a documentação de cada Google Cloud recurso usado no Terraform para determinar as permissões necessárias. Conceda o privilégio mínimo necessário para que o aplicativo funcione.

Conta de serviço de criação de artefatos (gerenciada pelo usuário)

A conta de serviço de criação de artefatos é uma conta de serviço gerenciado pelo usuário que você cria para usar um sistema de build (como o Cloud Build) para empacotar e fazer upload dos artefatos do Terraform para o Artifact Registry.

Essa conta de serviço é separada das contas de serviço do App Lifecycle Manager e de acionamento, e cria o código do Terraform e envia o artefato resultante para o Artifact Registry. Geralmente, essa é a conta de serviço do Cloud Build.

Criação manual de artefatos

Se você criar e fizer upload dos artefatos do Terraform manualmente (usando o Docker build e o Docker push diretamente, por exemplo), não será necessária uma conta de serviço de criação de artefatos separada.

Em vez disso, você precisa se autenticar usando suas próprias credenciais ou uma conta de serviço com as permissões necessárias do Artifact Registry.

Permissões exigidas

Se você estiver usando o Cloud Build, a conta de serviço do Cloud Build normalmente precisará dos seguintes papéis:

  • roles/artifactregistry.writer: para enviar artefatos ao Artifact Registry.
  • roles/artifactregistry.repoAdmin: para gerenciar o repositório do Artifact Registry.
  • roles/storage.admin: para gerenciar os buckets do Cloud Storage.
  • roles/developerconnect.admin: permissões para usar o Developer Connect.
  • roles/developerconnect.readTokenAccessor: permissões para receber o token de leitura do Developer Connect.
  • roles/logging.logWriter: permissões para gravar registros.
  • Se você estiver implantando a configuração do Terraform usando o Developer Connect: roles/cloudbuild.builds.builder: para executar builds.
  • Quaisquer outras permissões exigidas pelo processo de build (por exemplo, acesso a repositórios de código-fonte).

Estratégias de lançamento

O App Lifecycle Manager emprega várias estratégias de lançamento para gerenciar como as unidades na sua oferta de SaaS são atualizadas. Essas estratégias de lançamento seguem a abordagem do Google CloudGoogle para mudanças, aplicando abordagens consistentes à implantação de mudanças na sua oferta de SaaS.

Use estratégias de lançamento para minimizar os impactos negativos nos clientes e isolar problemas em domínios de falha lógica e física. Defina suas estratégias de lançamento criando um tipo de lançamento que especifique uma das seguintes estratégias:

  • Um local por vez (simples): um local é lançado por vez, sem espera entre os locais. As unidades são selecionadas arbitrariamente em um local, com um máximo de 20% das unidades do local atualizadas por vez.

    Essa estratégia é recomendada para ambientes de desenvolvimento e cenários de emergência.

  • Tudo de uma vez (simples): todos os locais começam a ser lançados ao mesmo tempo.

    Essa estratégia é recomendada para ambientes de desenvolvimento e cenários de emergência.

  • Progressivo (gradual): em cada local, as unidades são lançadas em lotes estáticos baseados em porcentagem (por exemplo, 1%, 10%, 20%, 30%, ~40%) com tempos de imersão entre os lotes. Em todos os locais, o lançamento progride com um aumento exponencial no número de locais simultâneos (por exemplo, um local, depois dois, depois quatro) com tempos de imersão (18 horas, por exemplo) entre as ondas. As unidades em um local são selecionadas aleatoriamente.

    Essa estratégia foi criada para lançamentos seguros e previsíveis em vários locais. Ela começa com uma pequena área de cobertura e se expande gradualmente à medida que a confiança aumenta. Essa estratégia é recomendada em ambientes de produção com mais de um local.

  • Progressivo (local único): as unidades são atualizadas em lotes estáticos baseados em porcentagem (por exemplo, 1%, 10%, 20%, 30%, ~40%) com tempos de imersão mais longos (18 horas, por exemplo) entre os lotes para permitir tempo suficiente para detecção de problemas e limitar o impacto negativo das mudanças de lançamento.

    Essa estratégia é adaptada a ofertas de SaaS que operam em um único local, priorizando a segurança e a cautela. Recomendamos essa estratégia em ambientes de produção com um local.

Para mais informações sobre como criar tipos de lançamento, consulte Criar um tipo de lançamento.

Regionalização do App Lifecycle Manager

Os recursos de oferta de SaaS definem onde as unidades do App Lifecycle Manager podem residir e como os lançamentos são gerenciados. Ao criar uma oferta de SaaS, as regiões selecionadas servem como uma única fonte de verdade para as regiões compatíveis da sua oferta de SaaS. As regiões selecionadas são as regiões disponíveis definidas para sua oferta de SaaS.

Quando você usa o App Lifecycle Manager pelo Google Cloud console, o App Lifecycle Manager automatiza a replicação dos recursos definidos na sua oferta de SaaS em todas as regiões. Isso garante a consistência e a disponibilidade dos recursos do App Lifecycle Manager em todas as regiões disponíveis definidas na sua oferta de SaaS.

O App Lifecycle Manager replica esses recursos:

  • Oferta de SaaS (Saas)
  • Tipo de unidade (UnitKind)
  • Versão (Release)

Usar global como uma região

Incluir global como uma região na sua oferta de SaaS geralmente não é recomendado para destinos de implantação. O App Lifecycle Manager usa a região global para propagar lançamentos regionais. Os lançamentos regionais não podem ser executados na região global.

Regionalização de lançamentos

Os locais compatíveis com lançamentos são determinados pelas regiões de nível superior definidas nas regiões disponíveis da sua oferta de SaaS.

Os lançamentos leem a lista de regiões disponíveis da oferta de SaaS associada.

Replicação de recursos

O App Lifecycle Manager processa a criação e as atualizações de recursos para todas as regiões disponíveis da sua oferta de SaaS.

Quando você atualiza as regiões disponíveis da sua oferta de SaaS, o App Lifecycle Manager processa a replicação:

  • Locais adicionados:os recursos são replicados para os locais recém-adicionados.
  • Locais com cópias antigas:o conteúdo é atualizado.

Locais do Artifact Registry e do Developer Connect

Os locais do repositório do Artifact Registry e da instância do Developer Connect têm requisitos específicos:

  • A região do repositório do Artifact Registry e da instância do Developer Connect pode ser qualquer região válida Google Cloud . Eles não precisam ser incluídos nas regiões disponíveis da sua oferta de SaaS.

  • A região do repositório do Artifact Registry precisa corresponder à região da instância do Developer Connect.

    Isso exige a presença de recursos de oferta de SaaS, versão e tipo de unidade em todas as regiões definidas na sua oferta de SaaS, mesmo que o Artifact Registry e o Developer Connect residam em uma única região (potencialmente diferente).

  • As unidades só podem ser criadas nas regiões especificadas na sua oferta de SaaS.

Exemplo de configuração de regiões do App Lifecycle Manager

Fornecemos este exemplo para demonstrar como a regionalização funciona ao usar o App Lifecycle Manager com replicação de recursos gerenciados.

Por exemplo, se você quiser implantar sua oferta de SaaS em us-central1 e europe-west4, enquanto hospeda o repositório do Artifact Registry e a instância do Developer Connect em us-east1, sua infraestrutura de regiões do App Lifecycle Manager seria algo como:

  • Regiões disponíveis da oferta de SaaS ['us-central1', 'europe-west4']
  • Região do repositório do Artifact Registry: us-east1
  • Região da instância do Developer Connect: us-east1
  • Recursos de tipo de unidade e versão: o App Lifecycle Manager gerencia a criação e as atualizações desses recursos nas regiões global, us-central1 e europe-west4
  • Unidades:as unidades podem ser criadas em us-central1 ou europe-west4

Essa configuração permite gerenciar as implantações em duas regiões, mantendo o gerenciamento de artefatos centralizado em uma terceira região distinta com replicação de recursos automatizada. Considere cuidadosamente os requisitos de latência, compliance e residência de dados ao selecionar as regiões.

A seguir