Migrar ambientes do IoT Core

Last reviewed 2023-02-01 UTC

O Google anunciou a descontinuação do IoT Core. Este documento tem como objetivo ajudar você a traçar e implementar um plano de migração de um ambiente baseado no IoT Core para um novo ambiente que não depende do IoT Core para nenhum dos seguintes casos:

  • Autenticação de dispositivos de borda
  • Gerenciamento de dispositivos de borda
  • Comunicação entre seus dispositivos de borda e o Google Cloud

O documento também fornece orientações para avaliar a oportunidade de migrar após a descontinuação do IoT Core e se você quiser conhecer a migração.

Este documento faz parte de uma série de documentos que fornecem informações sobre arquiteturas de IoT no Google Cloud e como migrar do IoT Core. Os outros documentos desta série incluem:

A carga de trabalho a ser migrada

Neste documento, pressupomos que as cargas de trabalho que você quer migrar do IoT Core tenham as seguintes partes:

  • Uma parte executada em dispositivos de borda (implantada nas bordas do ambiente e ao lado dos dados que você quer processar)
  • Um back-end executado no Google Cloud

Confira no diagrama a seguir a arquitetura de uma carga de trabalho típica que usa o IoT Core. Nesta arquitetura, o Cloud IoT integra dispositivos de borda que têm um back-end executado no Google Cloud.

Fluxo de eventos de dispositivos de borda para o Cloud IoT (resumidos no texto a seguir).

O diagrama anterior pode ser resumido da seguinte forma:

Para planejar sua migração com eficiência, recomendamos que você faça uma avaliação para entender completamente a arquitetura do ambiente de origem. Nesse caso, o ambiente de origem é o ambiente atual baseado no IoT Core.

Neste documento, pressupomos que você possa atualizar a configuração e os componentes de software em execução nos dispositivos de borda para sua migração. Em alguns casos, essa abordagem pode ser inviável. Por exemplo, seus dispositivos de borda ou seus processos de implantação podem não ser compatíveis com esse caso de uso. Nesse caso, recomendamos que você planeje a desativação dos dispositivos de borda que não são compatíveis com atualizações. Para mais informações sobre como projetar e implementar processos automatizados de provisionamento e configuração para dispositivos de borda, consulte Práticas recomendadas para provisionar e configurar automaticamente sistemas e servidores de borda e bare metal.

Projetar a migração

Para migrar o ambiente baseado em IoT Core, recomendamos que você siga o framework de migração descrito em Migração para o Google Cloud.

No diagrama a seguir, descrevemos o caminho da sua jornada de migração:

Caminho de migração com quatro fases.

Como mostrado no diagrama anterior, a jornada tem quatro fases:

  1. Avaliar: nesta fase, você avalia o ambiente de origem e as cargas de trabalho e os dispositivos de borda que quer migrar do Cloud IoT Core.
  2. Planejar: nesta fase, você cria a infraestrutura básica no Google Cloud, como o provisionamento da hierarquia de recursos e a configuração do acesso à rede.
  3. Implantar: nesta fase, você implanta a nova solução em vez do IoT Core e migra os dispositivos de borda para a nova solução.
  4. Otimização: nesta fase, você otimiza o ambiente de destino. Nesse caso, o ambiente de destino se refere ao ambiente para o qual você está migrando que não é baseado no IoT Core.

Avaliar o ambiente de origem e as cargas de trabalho

Na fase de avaliação, você coleta informações sobre o ambiente de origem, os dispositivos de borda e o uso do IoT Core na sua organização. Essas informações ajudam a projetar um plano de migração e garantir que você tenha os recursos necessários para a migração e seu ambiente de destino.

Na fase de avaliação, faça o seguinte:

  1. Crie um inventário dos dispositivos de borda registrados para o Cloud IoT Core.
  2. Crie um inventário das cargas de trabalho de back-end que se integram ao Cloud IoT Core.
  3. Categorize seus dispositivos de borda e cargas de trabalho de back-end.
  4. Testar e projetar provas de conceito
  5. Calcular o custo total de propriedade
  6. Projete a arquitetura do ambiente de destino.
  7. Escolha os dispositivos de borda e as cargas de trabalho de back-end para migrar primeiro.

No final da fase de avaliação, você tem dois inventários: um para os dispositivos de borda e outro para as cargas de trabalho de back-end.

Para evitar inconsistências, recomendamos pausar a implantação de novos dispositivos de borda e cargas de trabalho de back-end antes de criar esses inventários. Também recomendamos que você não implante novos dispositivos de borda e cargas de trabalho em segundo plano depois de criar os inventários.

Criar um inventário dos seus dispositivos de borda

Para definir o escopo da migração e projetar o plano de migração, é preciso saber quantos dispositivos de borda existem no ambiente de origem. Você também precisa entender como os dispositivos interagem com o IoT Core e se é possível categorizá-los por características comuns, por comportamento, por finalidade ou por dependências.

Cada dispositivo de borda que você registra no IoT Core pertence a um registro do IoT Core. A primeira etapa para criar o inventário dos dispositivos de borda é listar os registros do IoT Core criados. Em seguida, colete informações sobre os dispositivos de borda registrados em cada registro.

Para criar o inventário dos dispositivos de borda, considere as seguintes informações para cada dispositivo de borda e como o dispositivo se integra ao IoT Core:

  • Identificadores: colete as seguintes informações sobre os identificadores do IoT Core do dispositivo de borda:

    • O identificador definido pelo usuário
    • O ID não editável definido pelo servidor que o IoT Core gera automaticamente quando você registra um dispositivo de borda no IoT Core
    • O nome do recurso que identifica exclusivamente o dispositivo de borda usando o identificador do registro do IoT Core em que você registrou o dispositivo de borda.
  • Estado de implantação: avalia o estado atual da implantação do dispositivo de borda. Por exemplo, o dispositivo de borda pode estar em um dos seguintes estados:

    • Ainda não foi fabricado ou está em andamento
    • Pronto para ser implantado, mas ainda não está registrado no IoT Core
    • Já implantado no site de destino e registrado no IoT Core
  • Tipo de dispositivo do IoT Core: avalie o tipo de dispositivo do IoT Core. Cada dispositivo de borda que você registra no IoT Core pode funcionar de duas maneiras. Pode ser um cliente que se conecta diretamente ao IoT Core. Ou pode ser um gateway para os clientes que você não consegue ou não quer conectar diretamente ao IoT Core.

  • Protocolo de comunicação: o IoT Core é compatível com dois protocolos para comunicação com dispositivos de borda: HTTP e MQTT. Avalie qual protocolo seus dispositivos de borda usam para se comunicar com o IoT Core. Para o protocolo MQTT, também é preciso determinar a Qualidade do Serviço em que os dispositivos de borda e as cargas de trabalho de back-end dependem.

  • Credenciais: o IoT Core autentica os dispositivos de borda usando um par de chaves e tokens de curta duração gerados com esse par de chaves. Se quiser, verifique a assinatura da parte pública do par de chaves usando um método de verificação baseado em certificado. Avalie como a autenticação do dispositivo de borda está configurada. Verifique se você está usando o mecanismo de verificação baseado em certificado do registro do IoT Core a que o dispositivo pertence.

  • Metadados do dispositivo: no IoT Core, é possível definir metadados para cada dispositivo de borda, na forma de pares de chave-valor. Por exemplo, é possível definir uma impressão digital de hardware, um número de série, informações do fabricante ou qualquer outro atributo relevante para um dispositivo de borda. É possível definir metadados ao adicionar um dispositivo de borda a um registro do IoT Core ou editar um dispositivo de borda que já esteja em um registro. Os metadados nunca são enviados de/para um dispositivo de borda pelo IoT Core. Reúna informações sobre os metadados que você definiu para o dispositivo de borda.

  • Estado do dispositivo: no IoT Core, cada dispositivo de borda pode relatar informações sobre o estado como dados estruturados ou não estruturados arbitrários. Por exemplo, um dispositivo de borda pode informar a versão do firmware em execução. Ou ele pode relatar informações sobre a integridade dele, de acordo com métricas específicas. O IoT Core publica as informações recebidas sobre o estado do dispositivo como mensagens em um tópico do Pub/Sub configurado. Avalie como seu dispositivo de borda reporta informações sobre o estado dele e em quais tópicos do Pub/Sub o IoT Core publica essas mensagens. Determine quais componentes da arquitetura dependem de informações sobre o estado do dispositivo de borda.

  • Eventos de telemetria: cada dispositivo de borda adicionado a um registro do IoT Core pode enviar eventos de telemetria como dados estruturados ou não estruturados arbitrários para o IoT Core. O IoT Core publica os eventos de telemetria recebidos como mensagens em um tópico do Pub/Sub que você configurou. Avalie como seu dispositivo de borda informa eventos de telemetria e em quais tópicos do Pub/Sub o IoT Core publica essas mensagens. Determine quais componentes da sua arquitetura dependem de eventos de telemetria informados pelo dispositivo de borda.

  • Configuração do dispositivo: no IoT Core, é possível definir a configuração de um dispositivo de borda como dados estruturados ou não estruturados arbitrários. O IoT Core também permite definir atualizações na configuração de um dispositivo como novas versões dela, que serão enviadas para o dispositivo de borda. Avalie se o dispositivo de borda recebe configurações do Cloud IoT Core e colete informações sobre todas as versões de configuração definidas.

  • Comandos: no IoT Core, os dispositivos de borda podem receber comandos do IoT Core e reagir de acordo com esses comandos. Avalie se os dispositivos de borda são compatíveis com a reação a comandos provenientes do IoT Core.

  • Atualizações de software e configuração: durante a migração, talvez seja necessário atualizar os componentes de software em execução no dispositivo de borda ou a configuração desses componentes. Avalie os mecanismos de atualização compatíveis com seu dispositivo de borda. Determina se o dispositivo também é compatível com um mecanismo de reversão para voltar a um estado conhecido se houver problemas durante essas atualizações.

  • Inatividade: durante a migração, as cargas de trabalho de back-end ou outras partes do ambiente de origem podem ficar indisponíveis. Avalie se o dispositivo de borda é compatível com a inatividade, os mecanismos substitutos e como ele se recupera após a inatividade.

Crie um inventário das cargas de trabalho de back-end que se integram ao IoT Core

Depois de criar o inventário dos dispositivos de borda, você coleta informações sobre as cargas de trabalho de back-end no ambiente de origem que se integram ao Cloud IoT Core. Uma carga de trabalho de back-end pode ser integrada ao IoT Core das seguintes maneiras:

  • Enviando comandos para dispositivos de borda e atualizando a configuração dos dispositivos de borda usando o IoT Core.
  • Se inscrevendo nos tópicos do Pub/Sub em que o IoT Core publica mensagens sobre eventos de telemetria e estado do dispositivo de borda.
  • Integrando com as APIs do IoT Core diretamente ou usando uma ferramenta de provisionamento de infraestrutura. Por exemplo, é possível usar o Terraform para provisionar registros e dispositivos do IoT Core.

Para criar o inventário das cargas de trabalho de back-end que se integram ao Cloud IoT Core, considere o seguinte para cada carga de trabalho de back-end:

  • Comandos e configuração do dispositivo: avalie se a carga de trabalho de back-end envia comandos a dispositivos de borda e se ela atualiza a configuração do dispositivo. As duas ações exigem uma integração com as APIs IoT Core.
  • Eventos de telemetria e estado do dispositivo: avalie se a carga de trabalho de back-end se inscreve nos tópicos do Pub/Sub em que o IoT Core publica mensagens sobre eventos de telemetria e estado do dispositivo.
  • Integração com outras APIs do IoT Core: avalie se a carga de trabalho de back-end interage com outras APIs IoT Core, além daquelas para enviar comandos e atualizar as configurações do dispositivo. Por exemplo, a carga de trabalho de back-end pode depender das APIs IoT Core para fazer o seguinte:

    • Criar registros do IoT Core e atualizar a configuração deles.
    • Criar dispositivos IoT Core e atualizar a configuração deles.
    • Coletar informações sobre registros e dispositivos IoT Core.
    • Usar as métricas de registro do IoT Core e os registros de atividade do dispositivo.

Categorize seus dispositivos de borda e cargas de trabalho de back-end

Depois de criar os inventários dos dispositivos de borda e da carga de trabalho de back-end, classifique os itens em cada inventário com base nas características deles. Essa categorização ajuda a criar um rascunho do plano de migração e escolher quais dispositivos de borda e cargas de trabalho de back-end migrar primeiro.

Para categorizar seus dispositivos de borda, recomendamos uma categorização com base nos tipos de interações que podem acontecer entre dispositivos de borda e cargas de trabalho de back-end. Considere os seguintes tipos de interação:

  • Quando um dispositivo de borda envia dados para cargas de trabalho de back-end usando eventos de telemetria ou informações sobre o estado do dispositivo.
  • Quando as cargas de trabalho de back-end enviam diretivas para dispositivos de borda usando comandos ou atualizações de configuração do dispositivo.

Para cada um dos tipos de interação anteriores, os tipos de mensagens trocados durante as interações desse tipo são diferentes. No entanto, as mensagens têm finalidades semelhantes. Alguns dispositivos enviam dados de um dispositivo de borda para cargas de trabalho de back-end, como eventos de telemetria e informações sobre o estado do dispositivo. Alguns dispositivos enviam diretivas de cargas de trabalho de back-end para dispositivos de borda, como comandos e atualizações de configuração do dispositivo.

Com base nos tipos propostos de interações, recomendamos as seguintes categorias para seus dispositivos de borda:

  • Somente transmissão: dispositivos de borda que enviam eventos de telemetria ou informações sobre o estado do dispositivo, mas não recebem comandos ou atualizações de configuração de dispositivos de cargas de trabalho de back-end.
  • Somente recebimento: dispositivos de borda que não enviam eventos de telemetria ou informações sobre o estado do dispositivo, mas recebem comandos ou atualizações de configuração de dispositivos de cargas de trabalho de back-end.
  • Recebimento e transmissão: dispositivos de borda que enviam eventos de telemetria e informações sobre o estado do dispositivo e recebem comandos ou atualizações de configuração do dispositivo de cargas de trabalho de back-end.

Para categorizar as cargas de trabalho de back-end, siga uma abordagem semelhante à usada para categorizar dispositivos de borda. Com base nos tipos de interações propostos, recomendamos as seguintes categorias para suas cargas de trabalho de back-end:

  • Somente recebimento: cargas de trabalho de back-end que recebem eventos de telemetria ou informações sobre o estado do dispositivo dos dispositivos de borda, mas não enviam comandos ou atualizações de configuração.
  • Somente envio: cargas de trabalho de back-end que não recebem eventos de telemetria ou informações sobre o estado do dispositivo, mas enviam comandos ou atualizações