Bouwstenen voor autonome simulatieomgevingen

Azure Container Instances
Microsoft Entra ID
Azure Virtual Network
Azure Virtual Machines
Azure Pipelines

In de onderstaande voorbeeldworkload wordt beschreven hoe u een simulatie bouwt die automatisch wordt uitgevoerd en de gesimuleerde voertuigfunctie evalueert via een Azure DevOps-pijplijn. Deze pijplijn wordt telkens uitgevoerd wanneer een technicus een nieuwe versie van de broncode of de simulatieomgeving van de voorbeeldfunctie controleert.

Architectuur

Diagram met bouwstenen voor autonome simulatieomgevingen.

Een Visio-bestand van deze architectuur downloaden.

Gebruikersinvoerlaag

De ontwikkelaar communiceert alleen met deze laag. Het bevat het werkstation voor ontwikkelaars (een Azure-VM in ons bereik) en het specificatiebestand waarin de simulatieomgeving wordt beschreven.

Indelingslaag

"Indeling" heeft een brede betekenis: sommige van de problemen die door het woord worden beschreven, worden triviaal opgelost; anderen zijn veel complexer. Het probleem 'orchestration' van het maken, bewaken en vernietigen van containers en VM's wordt bijvoorbeeld opgelost door veel hulpprogramma's: de Azure-API zelf is hiervoor voldoende 'orchestrator'.

Workflow

Het is echter belangrijk om het zwarte vak 'orchestration' op te splitsen in kleinere onderdelen.

  • Simulatie-API: Deze API ontvangt een specificatiebestand en is het toegangspunt voor het beheren van simulatieomgevingen en simulatieuitvoeringen met de Orchestration Layer.

  • Interpreter: Dit onderdeel interpreteert het specificatiebestand in een logische structuur voor Simulatiebeheer.

  • Simulatiebeheer: dit is de statusmachine die het logische simulatieomgevingsobject converteert naar de gewenste statussen en acties die door andere onderdelen moeten worden gebruikt. Dit is het onderdeel dat het bouwen, uitvoeren en afbreken van de simulatie activeert. Het beheert ook interne afhankelijkheden en foutmodi.

  • Scheduler: Dit onderdeel wijst bouwstenen toe aan infrastructuurbronnen en start ze daar. Het account maakt gebruik van hardware- en toegangsvereisten, beschikbare resources en resourcelimieten.

  • Omgevingsbeheer: Dit onderdeel kijkt naar de onderliggende infrastructuur en reageert op problemen, zoals wanneer een containerhost uitvalt.

  • Netwerkbeheerder: Dit onderdeel beheert de netwerken en routering voor simulatieomgevingen. Elke omgeving moet zich in een geïsoleerde netwerkomgeving bevinden, met geïsoleerde bouwstenen die binnenkomende verbindingen ontvangen voor interactiviteit. Dit onderdeel wordt ook gebruikt om bouwstenen binnen een simulatie op te lossen (bijvoorbeeld via een interne DNS).

  • Access Manager: dit onderdeel weerspiegelt autorisatie/verificatie van Microsoft Entra ID in de rest van het systeem.

  • Configuration Manager: dit onderdeel fungeert als een permanent opslagmechanisme voor de status van de infrastructuur- en simulatieomgevingen.

  • Infrastructuurabstractie: dit is een abstractielaag die algemene opdrachten vertaalt in specifieke Azure API-opdrachten voor containers versus VM's.

  • Opslagbeheer: dit onderdeel beheert het inrichten en koppelen van opslag voor simulatieomgevingen (bijvoorbeeld VM-hoofdapparaten of aan containers gekoppelde volumes).

  • Resourcemonitor: Dit onderdeel bewaakt het resourcegebruik op infrastructuurniveau in een tijdreeksdatabase voor export naar de kernbewaking van de ADP.

  • Log Manager: met dit onderdeel worden logboeken samengevoegd uit bouwstenen voor gebruikersinspectie. Ook worden logboeken geëxporteerd naar ADP-kernlogboekregistratie.

De indelingslaag is de primaire focus van deze voorbeeldworkload.

Simulatieinfrastructuurlaag

Deze laag vertegenwoordigt alle actieve simulatieomgevingen.

  • Simulatieomgeving: De combinatie van bouwstenen die zijn gedefinieerd door het definitiebestand en parameters worden hier gemaakt, in netwerkisolatie van andere simulatieomgevingen.

  • Bouwsteencontract: de geschreven standaard waarmee wordt gedefinieerd hoe alle bouwstenen uitvoer, fouten en status naar de indelingslaag verzenden.

  • Bouwsteenpijplijn: Dit gebied beheert het maken en opslaan van bouwstenen.

  • Opslagplaats voor bouwstenen: dit is het opslag- en ophaalsysteem voor bouwsteeninstallatiekopieën, zoals een containerregister en/of een Azure-installatiekopiegalerie.

  • Bouwsteenfactory: De pijplijn voor continue integratie en continue implementatie (CI/CD) waarmee bouwsteeninstallatiekopieën worden gemaakt met onveranderbare, verifieerbare onderdeelpakketten (bijvoorbeeld dpkg of apt) in een declaratieve configuratietaal (bijvoorbeeld Chef of Ansible).

Opslaglaag

In deze laag worden de resultaten van de simulatie duurzaam en toegankelijk opgeslagen. Het is voornamelijk de verantwoordelijkheid van het MADP Data Lake-werkstroom (Mobile Application Development Platform), hoewel uw uitvoer door dat team beheerbaar moet zijn.

  • Opslaginterface: de interface waarmee gebruikers kunnen werken met simulatieresultatenopslag. Dit werkt nauw samen met, of kan worden vervangen door het bovenstaande opslagbeheerindelingsonderdeel.

  • Opslag: het opslagmechanisme dat wordt gebruikt voor het opslaan van simulatieresultaten (bijvoorbeeld Azure Blob Storage of Azure Disk Storage-resources).

Onderdelen

Azure Virtual Machines biedt on-demand, schaalbare computingresources die u de flexibiliteit van virtualisatie bieden, zonder dat u de fysieke hardware hoeft te kopen en te onderhouden.

Azure Virtual Network is de fundamentele bouwsteen voor uw privénetwerk in Azure. Met Azure Virtual Network kunnen veel soorten Azure-resources, zoals Azure Virtual Machines, veilig met elkaar communiceren, internet en on-premises netwerken.

Azure Container Instances biedt de snelste en eenvoudigste manier om een container in Azure uit te voeren, zonder virtuele machines te hoeven beheren en zonder een service op een hoger niveau te hoeven gebruiken.

Azure Container Registry is een beheerde, persoonlijke Docker-registerservice op basis van de opensource Docker Registry 2.0. U kunt Azure-containerregisters gebruiken met uw bestaande pijplijnen voor containerontwikkeling en -implementatie, of Azure Container Registry Tasks gebruiken om containerinstallatiekopieën te bouwen in Azure. Bouw op aanvraag of automatiseer builds volledig met triggers, zoals doorvoeringen van broncode en updates van basisinstallatiekopieën.

Azure Pipelines maken deel uit van de Azure DevOps Services en voeren geautomatiseerde builds, tests en implementaties uit. U kunt ook CI/CD-oplossingen van derden gebruiken, zoals Jenkins.

Microsoft Entra ID is de cloudservice voor identiteits- en toegangsbeheer waarmee gebruikers, services en toepassingen worden geverifieerd.

Azure Storage biedt een duurzame, maximaal beschikbare en zeer schaalbare cloudopslagoplossing. Het bevat mogelijkheden voor object-, bestands-, schijf-, wachtrij- en tabelopslag.

Azure Monitor verzamelt bewakingstelemetrie van verschillende on-premises en Azure-bronnen. Met deze service worden telemetriegegevens samengevoegd en opgeslagen in een logboekgegevensarchief dat is geoptimaliseerd voor kosten en prestaties.

Alternatieven

Deze architectuur maakt gebruik van VM's en containers voor het implementeren van de verschillende hulpprogramma's en services. Als alternatief kunt u ook Azure Kubernetes Services (AKS) gebruiken. AKS biedt serverloze Kubernetes, een geïntegreerde CI/CD-ervaring en beveiliging en governance op bedrijfsniveau.

Het opslagmechanisme dat wordt gebruikt voor het opslaan van simulatieresultaten in deze architectuur is gebaseerd op Azure Blob Storage of Azure Disk Storage. Als alternatief voor grotere workloads kunt u ook de grootschalige oplossingen voor gegevens en analyses van Azure bekijken voor het opslaan en analyseren van gegevens.

Overweeg ook om Azure Monitor te gebruiken om de prestaties van uw infrastructuur te analyseren en te optimaliseren, en om netwerkproblemen te bewaken en diagnosticeren zonder u aan te melden bij uw VM's.

Scenariodetails

Om autonoom rijden (AD) te evalueren, moeten functietechnici het gedrag van voertuigen met AD-mogelijkheden simuleren. Bekijk het volgende voorbeeld van een rijscenario:

Een testvoertuig rijdt autonoom op 80 mph in de rechterbaan op een snelweg met 3 banen. Er is een vrachtwagen 600 ft voor rijden in dezelfde rijbaan en in dezelfde richting op 55 mph. Er is geen voertuig in de buurt in de middelste rijbaan. De wegmarkeringen zijn zichtbaar, de zon schijnt loodrecht op het voertuig en de weg is droog.

Een eindige simulatie van het gedrag van een voertuig met behulp van een scenario zoals dit wordt een simulatieuitvoering genoemd. In het bovenstaande scenario is het verwachte gedrag van uw gesimuleerde voertuig om de vrachtwagen comfortabel door te geven zonder een ongeluk te veroorzaken en zonder verkeersregels te schenden. Door een simulatie uit te voeren voor elke nieuwe versie van een functie, testen AD-functietechnici of de nieuwe versie nog steeds het verwachte gedrag vertoont.

Om een simulatie uit te voeren, gebruiken AD-functietechnici vaak een set softwaretoepassingen. Dit kunnen onder andere Virtual Test Drive (VTD), Time Partition Testing (TPT), Avionics Development System 2G (ADS2) en Automotive Data and Time-Triggered Framework (ADTF) zijn, die allemaal met elkaar communiceren volgens hun specifieke configuraties voor het testen van een bepaalde autonome rijfunctie zoals de Highway Pilot. Een implementatie van deze set softwarehulpprogramma's en hun configuraties voor on-premises en/of virtuele machines (VM's) on-premises en/of in de cloud wordt een simulatieomgeving genoemd.

Om ervoor te zorgen dat de geldigheid van de testresultaten die worden gegenereerd door elke simulatie die u uitvoert, moet u ervoor zorgen dat de simulatie wordt gestart in een nieuwe simulatieomgeving die is ingesteld op de oorspronkelijke status.

Elk autonoom rijdend team heeft een afzonderlijke set toepassingen in hun simulatieomgeving nodig, met een unieke configuratie. Veel teams hebben ook meerdere verschillende simulatieomgevingen nodig. Als u bijvoorbeeld een LIDAR-sensor wilt evalueren, hebt u zeer hoge resolutie objectsimulatie nodig, maar geen andere stuurprogramma's, wegmarkeringen of andere functies. Hoewel elke omgeving uniek is, is er sprake van aanzienlijke overlapping in de toepassingen die worden gebruikt. Veel teams gebruiken bijvoorbeeld VTD in meerdere simulatieomgevingen.

Het is mogelijk om een simulatie uit te voeren in een simulatieomgeving die bestaat uit herbruikbare, ingekapselde en onafhankelijk geëvalueerde eenheden. Deze eenheden fungeren als de 'bouwstenen' die u gaat gebruiken voor het automatisch en on-demand maken van simulatieomgevingen in de Azure-cloud. Deze simulatieomgevingen worden ook wel geautomatiseerde rijplatforms (ADP) genoemd.

Potentiële gebruikscases

Deze oplossing is ideaal voor de automobiel- en transportindustrie. Typische toepassingen voor deze workload zijn:

  • Autotests automatiseren.

  • Prototypen, ontwikkeling, integratie, testen, validatie en verificatie van controlesystemen in de automobielindustrie.

  • Het vastleggen van voertuiggegevens voor visualisatie.

  • Het simuleren van complexe rijscenario's in de automobielindustrie.

Overwegingen

Met deze overwegingen worden de pijlers van het Azure Well-Architected Framework geïmplementeerd. Dit is een set richtlijnen die kunnen worden gebruikt om de kwaliteit van een workload te verbeteren. Zie Microsoft Azure Well-Architected Framework voor meer informatie.

Beschikbaarheid en tolerantie

Overweeg vm's te implementeren in beschikbaarheidssets of beschikbaarheidszones, waarmee u toepassingen kunt beschermen tegen geplande onderhoudsgebeurtenissen en ongeplande storingen.

Een beschikbaarheidsset is een logische groepering van virtuele machines waaruit Azure kan begrijpen hoe uw toepassing is ontworpen, om zo redundantie en beschikbaarheid te kunnen bieden.

Beschikbaarheidszones zijn unieke fysieke locaties binnen Azure-regio's waarmee VM's, toepassingen en gegevens worden beschermd tegen storingen in datacenters. Elke zone bestaat uit een of meer datacenters. VM's en toepassingen in zones kunnen beschikbaar blijven, zelfs als er sprake is van een fysieke storing in één datacenter.

Schaalbaarheid

U kunt virtuele Azure-machines handmatig schalen of met behulp van functies voor automatisch schalen.

Voor containerimplementaties zijn Azure Containers Instances en Azure Kubernetes Services ook ontworpen om handmatig of automatisch omhoog of uit te schalen.

Beveiliging

Beveiliging biedt garanties tegen opzettelijke aanvallen en misbruik van uw waardevolle gegevens en systemen. Zie Overzicht van de beveiligingspijler voor meer informatie.

Net als bij elk ander type toepassing kan de simulatieomgeving worden ontworpen om gevoelige gegevens te verwerken. Daarom moet u beperken wie zich kan aanmelden en gebruiken, en u moet ook beperken welke gegevens kunnen worden geopend op basis van de identiteit of rol van de gebruiker. Gebruik Microsoft Entra ID voor identiteits- en toegangsbeheer en gebruik Azure Key Vault om sleutels en geheimen te beheren.

Zie de Documentatie voor Azure-beveiliging voor algemene richtlijnen over het ontwerpen van beveiligde oplossingen.

DevOps

Voor het implementeren van nieuwe simulatieomgevingen kunt u het beste CI/CD-processen gebruiken met behulp van een oplossing zoals Azure DevOps of GitHub Actions.

Kostenoptimalisatie

Kostenoptimalisatie gaat over manieren om onnodige uitgaven te verminderen en operationele efficiëntie te verbeteren. Zie Overzicht van de pijler kostenoptimalisatie voor meer informatie.

Gebruik in ieder geval de prijscalculator om een schatting van de kosten te maken. U kunt uw kosten ook optimaliseren door het proces te volgen om de capaciteit van uw VM's vanaf het begin te wijzigen, samen met een vereenvoudigde grootte. Andere overwegingen worden beschreven in de sectie Kosten in Microsoft Azure Well-Architected Framework.

Volgende stappen

Productdocumentatie:

Microsoft-leertrajecten:

Overzichtsartikelen van Azure Architecture Center:

Relevante architecturen: