Editar

Compartilhar via


Blocos de construção para ambientes de simulação de condução autônoma

Instâncias de Contêiner do Azure
Microsoft Entra ID
Rede Virtual do Azure
Máquinas Virtuais do Azure
Azure Pipelines

A carga de trabalho de exemplo discutida abaixo descreve a criação de uma simulação que é executada automaticamente e avalia a função simulada do veículo por meio de um pipeline do Azure DevOps. Esse pipeline é executado sempre que um engenheiro verifica uma nova versão do código-fonte da função de exemplo ou seu ambiente de simulação.

Arquitetura

Diagrama que mostra os blocos de construção para ambientes de simulação de direção autônoma.

Baixe um Arquivo Visio dessa arquitetura.

Camada de entrada de usuário

O desenvolvedor só interagirá com essa camada. Ela contém a estação de trabalho do desenvolvedor (uma VM do Azure em nosso escopo) e o arquivo de especificação que descreve o ambiente de simulação.

Camada de orquestração

"Orquestração" tem um significado amplo: alguns dos problemas descritos pela palavra são trivialmente resolvidos, outros, são muito mais complexos. Por exemplo, o problema de "orquestração" de criar, monitorar e destruir contêineres e VMs é resolvido por muitas ferramentas. A própria API do Azure é um "orquestrador" suficiente para isso!

Workflow

No entanto, é importante dividir a caixa preta da "orquestração" em componentes menores.

  • API de simulação: Essa API recebe um arquivo de especificação e é o ponto de entrada para controlar ambientes de simulação e executar a simulação com a camada de orquestração.

  • Interpretador: Esse componente interpreta o arquivo de especificação em uma estrutura lógica para o gerenciador de simulação.

  • Gerenciador de simulação: É a máquina de estado que converte o objeto do ambiente de simulação lógica em estados desejados e ações a serem usadas por outros componentes. Esse é o componente que aciona a compilação, execução e desmontagem da simulação. Ele também gerencia dependências internas e modos de falha.

  • Agendador: esse componente atribui blocos de compilação aos recursos de infraestrutura e os inicia lá. Ele responde por requisitos de hardware e de acesso, recursos disponíveis e limites de recursos.

  • Gerenciador de ambiente: esse componente observa a infraestrutura subjacente e responde a problemas, como quando um host de contêiner fica inativo.

  • Gerenciador de rede: Esse componente gerencia as redes e o roteamento para ambientes de simulação. Cada ambiente deve estar em um ambiente de rede isolado, com blocos de compilação isolados recebendo conexões de entrada para interatividade. Esse componente também será usado para resolver blocos de construção dentro de uma simulação (por exemplo, por meio de um DNS interno).

  • Gerenciador de acesso: Esse componente reflete a autorização/autenticação do Microsoft Entra ID no resto do sistema.

  • Gerenciador de configuração: Esse componente atua como um mecanismo de armazenamento persistente para o estado da infraestrutura e dos ambientes de simulação.

  • Abstração de infraestrutura: Essa é uma camada de abstração que converte comandos genéricos em comandos específicos da API do Azure para contêineres versus VMs.

  • Gerenciador de armazenamento: Esse componente gerencia o provisionamento e a conexão de armazenamento para ambientes de simulação (por exemplo, dispositivos raiz de VM ou volumes conectados a contêineres).

  • Monitor de Recursos: Esse componente monitora o uso de recursos em nível de infraestrutura em um banco de dados de série temporal, para exportação para o monitoramento principal do ADP.

  • Gerenciador de logs: esse componente agrega logs de blocos de compilação para inspeção do usuário. Também exporta logs para o log principal do ADP.

A camada de orquestração é o foco principal dessa carga de trabalho de exemplo.

Camada de infraestrutura de simulação

Essa camada representa todos os ambientes de simulação em execução.

  • Ambiente de simulação: A combinação de blocos de compilação definidos pelo arquivo de definição e de parâmetros são criados aqui, em isolamento de rede de todos os outros ambientes de simulação.

  • Contrato de bloco de compilação: o padrão escrito que define como todos os blocos de compilação enviam resultados, erros e status para a camada de orquestração.

  • Pipeline de blocos de compilação: Essa área gerencia a criação e o armazenamento de blocos de compilação.

  • Repositório de blocos de compilação: Esse é o sistema de armazenamento e de recuperação de imagens de blocos de compilação, como um registro de contêiner e/ou uma galeria de imagens do Azure.

  • Fábrica de blocos de compilação: O pipeline de CI/CD (Integração contínua e de implantação contínua) que cria imagens de blocos de compilação usando pacotes de componentes imutáveis e verificáveis (por exemplo, dpkg ou apt) em uma linguagem de configuração declarativa (por exemplo, Chef ou Ansible).

Camada de armazenamento

Essa camada armazena de forma durável e acessível os resultados da simulação. É principalmente responsabilidade do fluxo de trabalho do Data Lake da MADP (Plataforma de desenvolvimento de aplicativos móveis), embora seu resultado precise ser gerenciável por essa equipe.

  • Interface de armazenamento: A interface que permite aos usuários trabalhar com armazenamento de resultados de simulação. Isso funciona em estreita sintonia com, ou poderia ser suplantado por, o componente de orquestração do Gerenciador de armazenamento acima.

  • Armazenamento: o mecanismo de armazenamento usado para salvar os resultados da simulação (por exemplo, recursos do armazenamento de blobs do Azure ou do armazenamento em disco do Azure).

Componentes

As Máquinas Virtuais do Azure oferecem recursos de computação escalonáveis sob demanda que oferecem a flexibilidade da virtualização, sem a necessidade de compra e manutenção do hardware físico.

A Rede Virtual do Microsoft Azure é o bloco de construção fundamental de sua rede privada no Azure. A rede virtual do Azure permite vários tipos de recursos do Azure, como máquinas virtuais do Azure, para se comunicar de forma segura com a Internet e com as redes locais.

As Instâncias de Contêiner do Azure oferecem a maneira mais rápida e simples de executar um contêiner no Azure, sem a necessidade de gerenciar nenhuma VM nem adotar um serviço de nível superior.

O Registro de Contêiner do Azure é um serviço gerenciado do Registro do Docker privado baseado no Registro do Docker 2.0 de código aberto. Você pode usar registros de contêiner do Azure com seus pipelines existentes de desenvolvimento e implantação de contêiner ou usar as Tarefas do Registro de Contêiner do Azure para criar imagens de contêiner no Azure. Faça builds sob demanda ou automatize-os por completo com gatilhos, como commits de código-fonte e atualizações da imagem base.

Pipelines do Azure fazem parte dos serviços do Azure DevOps e executam compilações, testes e implantações automáticos. Você também pode usar soluções de CI/CD de terceiros, como o Jenkins.

Microsoft Entra ID é o serviço de gerenciamento de acesso e identidades baseado em nuvem que autentica usuários, serviços e aplicativos.

O Armazenamento do Azure oferece uma solução de armazenamento em nuvem durável, altamente disponível e amplamente escalonável. Inclui funcionalidades de armazenamento de objetos, de arquivos, de discos, de filas e de tabelas.

O Azure Monitor coleta telemetria de monitoramento de diversas fontes locais e do Azure. O serviço agrega e armazena telemetria em um armazenamento de dados de log otimizado para custo e desempenho.

Alternativas

Essa arquitetura usa VMs e contêineres para implantar as diferentes ferramentas e serviços. Como alternativa, você também pode usar os AKSs (Serviços de Kubernetes do Azure). O AKS oferece Kubernetes sem servidor, uma experiência integrada de CI/CD e segurança e governança de nível empresarial.

O mecanismo de armazenamento usado para salvar os resultados da simulação nessa arquitetura é baseado no armazenamento de blobs do Azure ou no armazenamento em disco do Azure. Como alternativa para cargas de trabalho maiores, você também pode examinar as soluções de análise e de dados em grande escala do Azure para armazenar e analisar dados.

Considere também usar o Azure Monitor para analisar e otimizar o desempenho de sua infraestrutura e monitorar e diagnosticar problemas de rede sem fazer logon nas VMs.

Detalhes do cenário

Para avaliar a AD (direção autônoma), os engenheiros de função precisam simular o comportamento de veículos com recursos de AD. Considere o seguinte cenário de condução de exemplo:

Um veículo de teste está dirigindo de forma autônoma a 129 km/h na faixa da direita em uma rodovia de 3 faixas. Há um caminhão 182 metros à frente dirigindo na mesma faixa e na mesma direção a 88 km/h. Não há nenhum veículo próximo na faixa do meio. Os marcadores da estrada estão visíveis, o sol está brilhando perpendicularmente ao veículo, e a estrada está seca.

Uma simulação finita do comportamento de um veículo usando um cenário como este é chamada de corrida de simulação. No cenário acima, o comportamento esperado do veículo simulado é passar confortavelmente pelo caminhão sem causar acidente e sem violar nenhuma regra de trânsito. Ao executar uma simulação para cada nova versão de uma função, os engenheiros de função da AD testam se a nova versão ainda exibe o comportamento esperado.

Para executar uma simulação, os engenheiros de função da AD geralmente usam um conjunto de aplicativos de software. Eles podem incluir VTD (teste virtual de direção), TPT (Teste de partição do tempo), ADS2 (Sistema de desenvolvimento de aviônica 2G) e ADTF (Estrutura acionada por dados e pelo tempo), sendo que todos se comunicam entre si de acordo com suas configurações específicas para testar uma determinada função de direção autônoma, como o Highway Pilot. Uma implantação desse conjunto de ferramentas de software e suas configurações em máquinas físicas e/ou virtuais (VMs) no local e/ou na nuvem é chamada de ambiente de simulação.

Para garantir a validade dos resultados dos testes gerados por cada simulação executada, você deve garantir que a simulação comece em um novo ambiente de simulação definido para seu estado inicial.

Cada equipe de direção autônoma precisa de um conjunto separado de aplicativos em seu ambiente de simulação, com uma configuração exclusiva. Muitas equipes também precisarão de vários ambientes de simulação diferentes. Por exemplo, para avaliar um sensor LIDAR, você precisará de simulação de objeto resolução muito alta, mas nenhum outro motorista, marcações de estrada nem outros recursos. Embora cada ambiente seja exclusivo, há uma sobreposição significativa nos aplicativos usados. Por exemplo, muitas equipes usam VTD em vários ambientes de simulação.

É possível executar uma simulação em um ambiente de simulação composto por unidades reutilizáveis, encapsuladas e avaliadas independentemente. Essas unidades servem como os "blocos de compilação" que você usará para a criação automática e sob demanda de ambientes de simulação na nuvem do Azure. Esses ambientes de simulação também são chamados de ADP (Plataformas de direção autônoma).

Possíveis casos de uso

Essa solução é ideal para os setores automotivo e de transporte. Usos típicos dessa arquitetura incluem:

  • Automatização de testes de condução.

  • Prototipagem, desenvolvimento, integração, testes, validação e verificação de sistemas de controle na indústria automotiva.

  • Registro de dados do veículo para visualização.

  • Simulando cenários complexos de condução na indústria automotiva.

Considerações

Estas considerações implementam os pilares do Azure Well-Architected Framework, que é um conjunto de princípios de orientação que podem ser usados para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, consulte Microsoft Azure Well-Architected Framework.

Disponibilidade e resiliência

Considere a implantação de VMs em conjuntos de disponibilidade ou em zonas de disponibilidade, o que ajuda a proteger os aplicativos contra eventos de manutenção planejada e paralisações não planejadas.

Um conjunto de disponibilidade é um agrupamento lógico de VMs que permite que o Azure entenda como o seu aplicativo foi criado para fornecer redundância e disponibilidade.

As zonas de disponibilidade são locais físicos exclusivos em regiões do Azure que ajudam a proteger VMs, aplicativos e dados de falhas do datacenter. Cada zona é composta por um ou mais datacenters. Os aplicativos e as VMs em zonas podem permanecer disponíveis, mesmo se houver uma falha física em um único datacenter.

Escalabilidade

Você pode dimensionar VMs do Azure manualmente ou usando recursos de dimensionamento automático.

Para implantações de contêiner, as instâncias de contêineres do Azure e os serviços kubernetes do Azure também são criados para aumentar ou reduzir manual ou automaticamente.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

Assim como acontece com qualquer outro tipo de aplicativo, o ambiente de simulação pode ser projetado para lidar com dados confidenciais. Portanto, você deve restringir quem pode entrar e usá-lo, e também deve limitar quais dados podem ser acessados, com base na identidade ou na função do usuário. Use o controle de acesso e de identidade do Microsoft Entra ID e use o Azure Key Vault para gerenciar chaves e segredos.

Confira orientações gerais sobre como criar soluções seguras na Documentação de segurança do Azure.

DevOps

Para implantar novos ambientes de simulação, é melhor usar processos de CI/CD com uma solução como o Azure DevOps ou o GitHub Actions.

Otimização de custo

A otimização de custos é a análise de maneiras de reduzir as despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, consulte Visão geral do pilar de otimização de custo.

Em geral, use a calculadora de preços do Azure para estimar os custos. Você também pode otimizar seus custos seguindo o processo para escolher o tamanho correto da capacidade de suas VMs, desde o início, juntamente com o redimensionamento simplificado, conforme necessário. Outras considerações são descritas na seção Custo em Microsoft Azure Well-Architected Framework.

Próximas etapas

Documentação do produto:

Roteiros de aprendizagem da Microsoft:

Artigos de visão geral do Centro de Arquitetura do Azure: