편집

다음을 통해 공유


자율 주행 시뮬레이션 환경을 위한 구성 요소

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

아래에 설명된 예제 워크로드는 자동으로 실행되는 시뮬레이션을 빌드하고 Azure DevOps 파이프라인을 통해 시뮬레이션된 차량 함수를 평가하는 방법을 설명합니다. 이 파이프라인은 엔지니어가 예제 함수의 소스 코드 또는 시뮬레이션 환경의 새 버전을 검사할 때마다 실행됩니다.

아키텍처

자율 주행 시뮬레이션 환경을 위한 빌딩 블록을 보여 주는 다이어그램.

이 아키텍처의 Visio 파일을 다운로드합니다.

사용자 입력 계층

개발자는 이 계층과만 상호 작용합니다. 여기에는 개발자 워크스테이션(범위 내의 Azure VM) 및 시뮬레이션 환경을 설명하는 사양 파일이 포함되어 있습니다.

오케스트레이션 계층

“오케스트레이션”은 광범위한 의미를 가집니다. 단어에서 설명하는 문제 중 일부는 간단하게 해결됩니다. 다른 항목은 훨씬 더 복잡합니다. 예를 들어 컨테이너 및 VM을 만들고, 모니터링하고, 삭제하는 “오케스트레이션” 문제는 많은 도구로 해결됩니다. Azure API 자체는 이를 위한 충분한 “오케스트레이터”입니다!

워크플로

그러나 “오케스트레이션”의 블랙박스를 더 작은 구성 요소로 나누는 것이 중요합니다.

  • 시뮬레이션 API: 이 API는 사양 파일을 수신하며 오케스트레이션 계층을 사용하여 시뮬레이션 환경 및 시뮬레이션 실행을 제어하기 위한 진입점입니다.

  • 인터프리터: 이 구성 요소는 사양 파일을 시뮬레이션 관리자의 논리적 구조로 해석합니다.

  • 시뮬레이션 관리자: 논리 시뮬레이션 환경 개체를 다른 구성 요소에서 사용할 원하는 상태 및 작업으로 변환하는 상태 시스템입니다. 시뮬레이션의 빌드, 실행 및 해체를 트리거하는 구성 요소입니다. 또한 내부 종속성 및 실패 모드를 관리합니다.

  • Scheduler: 이 구성 요소는 인프라 리소스에 빌딩 블록을 할당하고 여기에서 시작합니다. 하드웨어 및 액세스 요구 사항, 사용 가능한 리소스 및 리소스 제한을 고려합니다.

  • 환경 관리자: 이 구성 요소는 기본 인프라를 감시하고 컨테이너 호스트가 중단되는 경우와 같은 문제에 대응합니다.

  • 네트워크 관리자: 이 구성 요소는 시뮬레이션 환경에 대한 네트워크 및 라우팅을 관리합니다. 각 환경은 상호 작용을 위해 들어오는 연결을 수신하는 격리된 빌딩 블록과 함께 격리된 네트워크 환경에 있어야 합니다. 이 구성 요소는 시뮬레이션 내에서 빌딩 블록을 확인하는 데에도 사용됩니다(예: 내부 DNS를 통해).

  • Access Manager: 이 구성 요소는 Microsoft Entra ID의 권한 부여/인증을 시스템의 나머지 부분에 반영합니다.

  • Configuration Manager: 이 구성 요소는 인프라 및 시뮬레이션 환경의 상태에 대한 영구 스토리지 메커니즘 역할을 합니다.

  • 인프라 추상화: 제네릭 명령을 컨테이너 및 VM에 대한 특정 Azure API 명령으로 변환하는 추상화 계층입니다.

  • 스토리지 관리자: 이 구성 요소는 시뮬레이션 환경(예: VM 루트 디바이스 또는 컨테이너 연결 볼륨)에 대한 스토리지 프로비저닝 및 연결을 관리합니다.

  • 리소스 모니터: 이 구성 요소는 ADP의 핵심 모니터링으로 내보내기 위해 인프라 수준 리소스 사용량을 시계열 데이터베이스로 모니터링합니다.

  • 로그 관리자: 이 구성 요소는 사용자 검사를 위해 빌딩 블록의 로그를 집계합니다. 또한 로그를 ADP 코어 로깅으로 내보냅니다.

오케스트레이션 계층은 이 예제 워크로드의 주요 초점입니다.

시뮬레이션 인프라 계층

이 계층은 실행 중인 모든 시뮬레이션 환경을 나타냅니다.

  • 시뮬레이션 환경: 정의 파일 및 매개 변수로 정의된 빌딩 블록의 조합은 다른 시뮬레이션 환경의 네트워크 격리에서 만들어집니다.

  • 빌딩 블록 계약: 모든 빌딩 블록이 오케스트레이션 계층에 출력, 오류 및 상태를 보내는 방법을 정의하는 서면 표준입니다.

  • 빌딩 블록 파이프라인: 이 영역은 빌딩 블록의 생성 및 스토리지를 관리합니다.

  • 빌딩 블록 리포지토리: 컨테이너 레지스트리 및/또는 Azure 이미지 갤러리와 같은 빌딩 블록 이미지를 위한 스토리지 및 검색 시스템입니다.

  • 빌딩 블록 팩터리: 선언적 구성 언어(예: Chef 또는 Ansible)에서 변경할 수 없는 확인 가능한 구성 요소 패키지(예: dpkg 또는 apt)를 사용하여 빌딩 블록 이미지를 만드는 CI/CD(연속 통합 및 지속적인 배포) 파이프라인입니다.

스토리지 계층

이 계층은 시뮬레이션 결과를 지속적이고 액세스 가능하게 저장합니다. 출력은 해당 팀에서 관리할 수 있어야 하지만 주로 MADP(모바일 애플리케이션 개발 플랫폼) Data Lake 워크스트림의 책임입니다.

  • 스토리지 인터페이스: 사용자가 시뮬레이션 결과 스토리지로 작업할 수 있는 인터페이스입니다. 이는 위의 스토리지 관리자 오케스트레이션 구성 요소와 긴밀하게 함께 작동하거나 이를 대체할 수 있습니다.

  • 스토리지: 시뮬레이션 결과(예: Azure Blob Storage 또는 Azure Disk Storage 리소스)를 저장하는 데 사용되는 스토리지 메커니즘입니다.

구성 요소

Azure Virtual Machines는 실제 하드웨어를 구입하고 유지 관리할 필요 없이 가상화의 유연성을 제공하는 확장성 있는 주문형 컴퓨팅 리소스를 제공합니다.

Azure Virtual Network는 Azure의 프라이빗 네트워크의 기본 구성 요소입니다. Virtual Network를 사용하면 Azure Virtual Machines와 같은 다양한 유형의 Azure 리소스가 서로, 인터넷 및 온-프레미스 네트워크와 안전하게 통신할 수 있습니다.

Azure Container Instances는 어떠한 VM도 관리하지 않고 또 더 높은 수준의 서비스를 채택하지 않고도 Azure에서 컨테이너를 실행하는 가장 빠르고 간단한 방법을 제공합니다.

Azure Container Registry는 Docker Registry 2.0 오픈 소스에 기반한 관리형의 프라이빗 Docker 레지스트리 서비스입니다. 기존 컨테이너 개발 및 배포 파이프라인과 함께 Azure Container Registry를 사용하거나 Azure Container Registry 작업을 사용하여 Azure에서 컨테이너 이미지를 빌드할 수 있습니다. 요청에 따라 빌드하거나 소스 코드 커밋 및 기본 이미지 업데이트와 같은 트리거를 사용하여 빌드를 완전히 자동화합니다.

Azure Pipelines는 Azure DevOps Services의 일부이며 자동화된 빌드, 테스트 및 배포를 실행합니다. Jenkins 같은 타사 CI/CD 솔루션도 사용할 수 있습니다.

Microsoft Entra ID 는 사용자, 서비스 및 애플리케이션을 인증하는 클라우드 기반 ID 및 액세스 관리 서비스입니다.

Azure Storage는 내구성이 뛰어나고 가용성이 높으며 확장성이 뛰어난 클라우드 스토리지 솔루션을 제공합니다. 여기에는 개체, 파일, 디스크, 큐 및 테이블 스토리지 기능이 포함되어 있습니다.

Azure Monitor는 다양한 온-프레미스 및 Azure 소스에서 모니터링 원격 분석을 수집합니다. 이 서비스는 원격 분석을 집계하고 비용 및 성능에 최적화된 로그 데이터 저장소에 저장합니다.

대안

이 아키텍처는 VM 및 컨테이너를 사용하여 다양한 도구와 서비스를 배포합니다. 또는 AKS(Azure Kubernetes Services)를 사용할 수도 있습니다. AKS는 서버리스 Kubernetes, 통합 CI/CD(연속 통합 및 지속적인 업데이트) 환경, 엔터프라이즈급 보안 및 거버넌스를 제공합니다.

이 아키텍처에서 시뮬레이션 결과를 저장하는 데 사용되는 스토리지 메커니즘은 Azure Blob Storage 또는 Azure Disk Storage에 따릅니다. 더 큰 워크로드의 대안으로 데이터를 저장하고 분석하기 위한 Azure의 대규모 데이터 및 분석 솔루션을 살펴볼 수도 있습니다.

또한 Azure Monitor를 사용하여 인프라의 성능을 분석 및 최적화하고 VM에 로그인하지 않고 네트워킹 문제를 모니터링하고 진단하는 것이 좋습니다.

시나리오 정보

AD(자율 주행)를 평가하려면 함수 엔지니어가 AD 기능을 사용하여 차량의 동작을 시뮬레이션해야 합니다. 다음 예제 주행 시나리오를 고려합니다.

테스트 차량은 3차선 고속도로의 오른쪽 차선에서 80mph로 자율 주행하고 있습니다. 같은 차선에서 55mph로 같은 방향으로 600 피트 앞서 주행하는 트럭이 있습니다. 중간 차선에는 근처에 차량이 없습니다. 도로 표지판이 보이고, 태양이 차량에 수직으로 빛나고, 도로는 젖어있지 않습니다.

이와 같은 시나리오를 사용하는 차량의 동작에 대한 유한한 시뮬레이션을 시뮬레이션 실행이라고 합니다. 위의 시나리오에서 시뮬레이션된 차량의 예상 동작은 사고를 일으키지 않고 교통 규칙 위반 없이 트럭을 아무 문제없이 통과하는 것입니다. AD 함수 엔지니어는 함수의 각 새 버전에 대해 시뮬레이션을 실행하여 새 버전이 여전히 예상 동작으로 나타내는지 테스트합니다.

시뮬레이션을 실행하기 위해 AD 함수 엔지니어는 일반적으로 소프트웨어 애플리케이션 집합을 사용합니다. 여기에는 VTD( 가상 시험 사용), TPT(시간 파티션 테스트), ADS2(항공 전자 개발 시스템 2G), 자동차 데이터 및 ADTF(Time-Triggered Framework)가 포함될 수 있으며, 모두 고속도로 파일럿과 같은 지정된 자율 주행 기능을 테스트하기 위한 특정 구성에 따라 서로 통신합니다. 온-프레미스 및/또는 클라우드에서 물리적 및/또는 VM(가상 머신)에 이 소프트웨어 도구 및 해당 구성 집합을 배포하는 것을 시뮬레이션 환경이라고 합니다.

실행하는 모든 시뮬레이션에서 생성된 테스트 결과의 유효성을 확인하려면 시뮬레이션이 초기 상태로 설정된 새 시뮬레이션 환경에서 시작되도록 해야 합니다.

모든 자율 주행 팀은 고유한 구성이 있는 시뮬레이션 환경에서 별도의 애플리케이션 집합이 필요합니다. 또한 많은 팀에는 여러 가지 시뮬레이션 환경이 필요합니다. 예를 들어 LIDAR 센서를 평가하려면 매우 높은 해상도의 개체 시뮬레이션이 필요하지만 다른 드라이버, 도로 표지판 또는 기타 기능은 필요하지 않습니다. 각 환경은 고유하지만 사용되는 애플리케이션은 상당히 겹칩니다. 예를 들어 많은 팀이 여러 시뮬레이션 환경에서 VTD를 사용합니다.

재사용 가능하고 캡슐화되고 독립적으로 평가된 단위로 구성된 시뮬레이션 환경에서 시뮬레이션을 실행할 수 있습니다. 이러한 단위는 Azure 클라우드에서 시뮬레이션 환경을 자동 및 주문형으로 만드는 데 사용할 “빌딩 블록”의 역할을 합니다. 이러한 시뮬레이션 환경을 ADP(자동화된 주행 플랫폼)라고도 합니다.

잠재적인 사용 사례

이 솔루션은 자동차 및 운송 산업에 이상적입니다. 이 워크로드의 일반적인 용도는 다음과 같습니다.

  • 주행 테스트 자동화.

  • 자동차 업계의 제어 시스템 프로토타이핑, 개발, 통합, 테스트, 유효성 검사 및 검증.

  • 시각화를 위한 차량 데이터 기록.

  • 자동차 업계의 복잡한 주행 시나리오 시뮬레이션.

고려 사항

이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.

가용성 및 복원력

계획된 유지 관리 이벤트 및 계획되지 않은 중단으로부터 애플리케이션을 보호하는 데 도움이 되는 가용성 집합 또는 가용성 영역에 VM을 배포하는 것이 좋습니다.

가용성 집합은 중복성과 가용성을 제공하기 위해 Azure에서 애플리케이션이 빌드되는 방식을 이해할 수 있도록 하는 VM의 논리적 그룹입니다.

가용성 영역은 데이터 센터 오류로부터 VM, 애플리케이션, 데이터를 보호하는 데 도움이 되는 Azure 지역 내의 고유한 물리적 위치입니다. 각 영역은 하나 이상의 데이터 센터로 구성됩니다. 단일 데이터 센터에 물리적 오류가 발생하더라도 여러 영역에서 VM과 애플리케이션을 계속 사용할 수 있습니다.

확장성

수동으로 또는 자동 스케일링 기능을 사용하여 Azure VM을 스케일링할 수 있습니다.

컨테이너 배포의 경우 Azure Containers InstancesAzure Kubernetes Services 역시 수동 또는 자동으로 스케일 업 또는 스케일 아웃하도록 설계되었습니다.

보안

우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.

다른 유형의 애플리케이션과 마찬가지로 시뮬레이션 환경은 중요한 데이터를 처리하도록 설계될 수 있습니다. 따라서 로그인하여 사용할 수 있는 사용자를 제한해야 하며, 사용자의 ID 또는 역할에 따라 액세스할 수 있는 데이터도 제한해야 합니다. ID 및 액세스 제어에 Microsoft Entra ID를 사용하고 Azure Key Vault를 사용하여 키와 비밀을 관리합니다.

보안 솔루션 설계에 대한 일반적인 지침은 Azure 보안 설명서를 참조하세요.

DevOps

새로운 시뮬레이션 환경을 배포하는 경우 Azure DevOps 또는 GitHub Actions와 같은 솔루션을 사용하여 CI/CD 프로세스를 사용하는 것이 가장 좋습니다.

비용 최적화

비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.

일반적으로 Azure 가격 계산기를 사용하여 비용을 예측합니다. 필요에 따라, 간소화된 크기 조정과 함께 처음부터 VM의 용량 크기를 조정하는 프로세스를 수행하여 비용을 최적화할 수도 있습니다. 기타 고려 사항은 Microsoft Azure Well-Architected Framework의 비용 섹션에 설명되어 있습니다.

다음 단계

제품 설명서:

Microsoft Learn 학습 경로:

Azure 아키텍처 센터 개요 문서: