이 문서에서는 자동화된 주행 시스템을 위한 오프라인 데이터 작업 및 데이터 관리(DataOps)를 개발하기 위한 솔루션과 지침을 제공합니다. DataOps 솔루션은 AVOps(자율 주행 차량 운영) 디자인 가이드에 설명된 프레임워크를 기반으로 합니다. DataOps는 AVOps의 구성 요소 중 하나입니다. 다른 구성 요소로는 MLOps(기계 학습 작업), ValOps(유효성 검사 작업), DevOps 및 중앙 집중식 AVOps 함수가 있습니다.
Apache®, Apache Spark 및 Apache Parquet은 미국 및/또는 기타 국가에서 Apache Software Foundation의 등록 상표 또는 상표입니다. 이러한 상표를 사용했다고 해서 Apache Software Foundation가 이를 보증하는 것은 아닙니다.
아키텍처
이 문서의 아키텍처 다이어그램이 포함된 Visio 파일을 다운로드합니다.
데이터 흐름
측정 데이터는 차량의 데이터 스트림에서 발생합니다. 원본에는 카메라, 차량 원격 분석 및 레이더, 초음파 및 lidar 센서가 포함됩니다. 차량의 데이터 로거는 로거 스토리지 디바이스에 측정 데이터를 저장합니다. 로거 스토리지 데이터는 방문 데이터 레이크에 업로드됩니다. Azure Data Box 또는 Azure Stack Edge와 같은 서비스 또는 Azure ExpressRoute와 같은 전용 연결은 데이터를 Azure에 수집합니다. 다음 형식의 측정 데이터는 Azure Data Lake Storage: 측정 데이터 형식 버전 4(MDF4), TDMS(기술 데이터 관리 시스템) 및 rosbag에 있습니다. 업로드된 데이터는 데이터를 받고 유효성을 검사하기 위해 지정된 Landing이라는 전용 스토리지 계정을 입력합니다.
Azure Data Factory 파이프라인은 방문 스토리지 계정의 데이터를 처리하기 위해 예약된 간격으로 트리거됩니다. 파이프라인은 다음 단계를 처리합니다.
- 체크섬과 같은 데이터 품질 검사를 수행합니다. 이 단계에서는 고품질 데이터만 다음 단계로 전달되도록 낮은 품질의 데이터를 제거합니다. Azure 앱 서비스는 품질 검사 코드를 실행하는 데 사용됩니다. 불완전하다고 간주되는 데이터는 향후 처리를 위해 보관됩니다.
- 계보 추적의 경우 App Service를 사용하여 메타데이터 API를 호출합니다. 이 단계에서는 Azure Cosmos DB에 저장된 메타데이터를 업데이트하여 새 데이터 스트림을 만듭니다. 각 측정값에는 원시 데이터 스트림이 있습니다.
- Data Lake Storage의 Raw라는 스토리지 계정에 데이터를 복사합니다.
- 메타데이터 API를 호출하여 다른 구성 요소 및 서비스에서 데이터 스트림을 사용할 수 있도록 데이터 스트림을 완료로 표시합니다.
- 측정값을 보관하고 방문 스토리지 계정에서 제거합니다.
Data Factory 및 Azure Batch는 원시 영역의 데이터를 처리하여 다운스트림 시스템에서 사용할 수 있는 정보를 추출합니다.
- Batch는 원시 파일의 토픽에서 데이터를 읽고 해당 폴더의 선택한 토픽으로 데이터를 출력합니다.
- 원시 영역의 파일 크기는 각각 2GB를 초과할 수 있으므로 병렬 처리 추출 함수는 각 파일에서 실행됩니다. 이러한 함수는 이미지 처리, lidar, 레이더 및 GPS 데이터를 추출합니다. 메타데이터 처리도 수행합니다. Data Factory 및 Batch는 확장 가능한 방식으로 병렬 처리를 수행하는 방법을 제공합니다.
- 레이블을 지정하고 주석을 달아야 하는 데이터의 양을 줄이기 위해 데이터가 다운샘플링됩니다.
차량 로거의 데이터가 다양한 센서에서 동기화되지 않으면 데이터를 동기화하여 유효한 데이터 세트를 만드는 Data Factory 파이프라인이 트리거됩니다. 동기화 알고리즘은 Batch에서 실행됩니다.
데이터 팩터리 파이프라인은 데이터를 보강하기 위해 실행됩니다. 향상된 기능의 예로는 원격 분석, 차량 로거 데이터 및 날씨, 지도 또는 개체 데이터와 같은 기타 데이터가 있습니다. 보강된 데이터는 데이터 과학자가 알고리즘 개발에 사용할 수 있는 인사이트를 제공하는 데 도움이 됩니다. 생성된 데이터는 동기화된 데이터와 호환되는 Apache Parquet 파일에 보관됩니다. 보강된 데이터에 대한 메타데이터는 Azure Cosmos DB의 메타데이터 저장소에 저장됩니다.
타사 파트너는 수동 또는 자동 레이블 지정을 수행합니다. 데이터는 Azure Data Share를 통해 타사 파트너와 공유되며 Microsoft Purview에 통합됩니다. Data Share는 Data Lake Storage에서 Labeled라는 전용 스토리지 계정을 사용하여 레이블이 지정된 데이터를 조직에 반환합니다.
Data Factory 파이프라인은 장면 검색을 수행합니다. 장면 메타데이터는 메타데이터 저장소에 유지됩니다. 장면 데이터는 Parquet 또는 Delta 파일에 개체로 저장됩니다.
보강 데이터 및 검색된 장면에 대한 메타데이터 외에도 Azure Cosmos DB의 메타데이터 저장소는 드라이브 데이터와 같은 측정값에 대한 메타데이터를 저장합니다. 이 저장소에는 추출, 다운샘플링, 동기화, 보강 및 장면 검색 프로세스를 거치면서 데이터의 계보에 대한 메타데이터도 포함됩니다. 메타데이터 API는 측정값, 계보 및 장면 데이터에 액세스하고 데이터가 저장되는 위치를 조회하는 데 사용됩니다. 따라서 메타데이터 API는 스토리지 계층 관리자 역할을 합니다. 스토리지 계정에 데이터를 분산합니다. 또한 개발자에게 메타데이터 기반 검색을 사용하여 데이터 위치를 가져오는 방법을 제공합니다. 이러한 이유로 메타데이터 저장소는 솔루션의 데이터 흐름에서 추적 가능성 및 계보를 제공하는 중앙 집중식 구성 요소입니다.
Azure Databricks 및 Azure Synapse Analytics는 메타데이터 API에 연결하고 Data Lake Storage에 액세스하고 데이터에 대한 연구를 수행하는 데 사용됩니다.
구성 요소
- Data Box 는 빠르고 저렴하며 신뢰할 수 있는 방식으로 테라바이트 단위의 데이터를 Azure로 보내고 나가는 방법을 제공합니다. 이 솔루션에서 Data Box는 지역 운송업체를 통해 수집된 차량 데이터를 Azure로 전송하는 데 사용됩니다.
- Azure Stack Edge 디바이스는 에지 위치에서 Azure 기능을 제공합니다. Azure 기능의 예로는 컴퓨팅, 스토리지, 네트워킹 및 하드웨어 가속 기계 학습이 있습니다.
- ExpressRoute 는 프라이빗 연결을 통해 온-프레미스 네트워크를 Microsoft 클라우드로 확장합니다.
- Data Lake Storage는 대량의 데이터를 기본 원시 형식으로 저장합니다. 이 경우 Data Lake Storage는 원시 또는 추출된 단계와 같은 단계에 따라 데이터를 저장합니다.
- Data Factory 는 ETL(추출, 변환, 로드) 및 ELT(추출, 로드, 변환) 워크플로를 만들고 예약하기 위한 완전 관리형 서버리스 솔루션입니다. 여기서 Data Factory는 일괄 처리 컴퓨팅을 통해 ETL을 수행하고 데이터 이동을 오케스트레이션하고 데이터를 변환하기 위한 데이터 기반 워크플로를 만듭니다.
- Batch 는 Azure에서 대규모 병렬 및 HPC(고성능 컴퓨팅) 일괄 처리 작업을 효율적으로 실행합니다. 이 솔루션은 Batch를 사용하여 데이터 랭글링, 데이터 필터링 및 준비 및 메타데이터 추출과 같은 작업에 대해 대규모 애플리케이션을 실행합니다.
- Azure Cosmos DB 는 전역적으로 분산된 다중 모델 데이터베이스입니다. 여기서는 저장된 측정값과 같은 메타데이터 결과를 저장합니다.
- Data Share 는 보안이 강화된 파트너 조직과 데이터를 공유합니다. 데이터 공급자는 현재 위치 공유를 사용하여 데이터를 복사하거나 스냅샷을 작성하지 않고도 데이터가 있는 위치를 공유할 수 있습니다. 이 솔루션에서 Data Share는 레이블 지정 회사와 데이터를 공유합니다.
- Azure Databricks 는 엔터프라이즈급 데이터 솔루션을 대규모로 유지 관리하기 위한 도구 집합을 제공합니다. 대량의 차량 데이터에 대한 장기 실행 작업에 필요합니다. 데이터 엔지니어는 Azure Databricks를 분석 워크벤치로 사용합니다.
- Azure Synapse Analytics 는 데이터 웨어하우스 및 빅 데이터 시스템 전반에서 인사이트에 대한 시간을 줄입니다.
- Azure Cognitive Search 는 데이터 카탈로그 검색 서비스를 제공합니다.
- App Service 는 서버리스 기반 웹앱 서비스를 제공합니다. 이 경우 App Service는 메타데이터 API를 호스트합니다.
- Microsoft Purview 는 조직 전체에서 데이터 거버넌스를 제공합니다.
- Azure Container Registry 는 컨테이너 이미지의 관리되는 레지스트리를 만드는 서비스입니다. 이 솔루션은 컨테이너 레지스트리를 사용하여 토픽 처리를 위한 컨테이너를 저장합니다.
- Application Insights는 애플리케이션 성능 관리를 제공하는 Azure Monitor의 확장입니다. 이 시나리오에서 Application Insights는 측정 추출에 대한 가시성을 구축하는 데 도움이 됩니다. 솔루션이 추출을 위해 각 측정을 처리하는 동안 Application Insights를 사용하여 사용자 지정 이벤트, 사용자 지정 메트릭 및 기타 정보를 기록할 수 있습니다. Log Analytics에서 쿼리를 작성하여 각 측정값에 대한 자세한 정보를 가져올 수도 있습니다.
시나리오 정보
자율 주행 차량을 위한 강력한 DataOps 프레임워크를 설계하는 것은 데이터를 사용하고 계보를 추적하며 조직 전체에서 사용할 수 있도록 하는 데 중요합니다. 잘 설계된 DataOps 프로세스가 없으면 자율 주행 차량이 생성하는 방대한 양의 데이터가 빠르게 압도적이고 관리하기 어려워질 수 있습니다.
효과적인 DataOps 전략을 구현하면 데이터가 제대로 저장되고 쉽게 액세스할 수 있으며 명확한 계보가 있는지 확인하는 데 도움이 됩니다. 또한 데이터를 쉽게 관리하고 분석할 수 있으므로 더 많은 정보에 입각한 의사 결정과 차량 성능이 향상됩니다.
효율적인 DataOps 프로세스는 조직 전체에 데이터를 쉽게 배포할 수 있는 방법을 제공합니다. 그러면 다양한 팀이 작업을 최적화하는 데 필요한 정보에 액세스할 수 있습니다. DataOps를 사용하면 쉽게 공동 작업하고 인사이트를 공유할 수 있으므로 조직의 전반적인 효율성을 개선하는 데 도움이 됩니다.
자율 주행 차량의 컨텍스트에서 데이터 작업에 대한 일반적인 과제는 다음과 같습니다.
- 연구 개발 차량에서 측정 데이터의 일일 테라바이트 규모 또는 페타바이트 규모 볼륨을 관리합니다.
- 레이블 지정, 주석 및 품질 검사를 위해 여러 팀 및 파트너 간에 데이터 공유 및 공동 작업을 수행합니다.
- 측정 데이터의 버전 관리 및 계보를 캡처하는 안전에 중요한 인식 스택의 추적 가능성 및 계보입니다.
- 의미 체계 구분, 이미지 분류 및 개체 검색 모델을 개선하기 위한 메타데이터 및 데이터 검색입니다.
이 AVOps DataOps 솔루션은 이러한 문제를 해결하는 방법에 대한 지침을 제공합니다.
잠재적인 사용 사례
이 솔루션은 자동 운전 솔루션을 개발하는 자동차 OEM(원래 장비 제조업체), 계층 1 공급업체 및 ISV(독립 소프트웨어 공급업체)에게 혜택을 줍니다.
페더레이션된 데이터 작업
AVOps를 구현하는 조직에서는 AVOps에 필요한 복잡성으로 인해 여러 팀이 DataOps에 기여합니다. 예를 들어 한 팀이 데이터 수집 및 데이터 수집을 담당할 수 있습니다. 다른 팀은 lidar 데이터의 데이터 품질 관리를 담당할 수 있습니다. 이러한 이유로 DataOps에 대해 고려해야 할 데이터 메시 아키텍처의 다음 원칙은 중요합니다.
- 데이터 소유권 및 아키텍처의 도메인 기반 탈중앙화입니다. 한 전용 팀은 해당 도메인에 대한 데이터 제품(예: 레이블이 지정된 데이터 세트)을 제공하는 하나의 데이터 도메인을 담당합니다.
- 제품으로서의 데이터입니다. 각 데이터 도메인에는 데이터 레이크 구현 스토리지 컨테이너에 대한 다양한 영역이 있습니다. 내부 사용에 대한 영역이 있습니다. 데이터 중복을 방지하기 위해 다른 데이터 도메인 또는 외부 사용량에 대해 게시된 데이터 제품이 포함된 영역도 있습니다.
- 자율적인 도메인 지향 데이터 팀을 가능하게 하는 플랫폼으로 데이터를 셀프 서비스합니다.
- 중앙 집중식 메타데이터 저장소와 데이터 카탈로그가 필요한 AVOps 데이터 도메인 간의 상호 운용성과 액세스를 가능하게 하는 페더레이션된 거버넌스입니다. 예를 들어 레이블 지정 데이터 도메인은 데이터 수집 도메인에 액세스해야 할 수 있습니다.
데이터 메시 구현에 대한 자세한 내용은 클라우드 규모 분석을 참조 하세요.
AVOps 데이터 도메인에 대한 예제 구조
다음 표에서는 AVOps 데이터 도메인을 구조화하기 위한 몇 가지 아이디어를 제공합니다.
데이터 도메인 | 게시된 데이터 제품 | 솔루션 단계 |
---|---|---|
데이터 수집 | 측정 파일 업로드 및 유효성 검사 | 방문 및 원시 |
추출된 이미지 | 선택 및 추출된 이미지 또는 프레임, lidar 및 방사형 데이터 | 추출 |
추출된 레이더 또는 리다르 | 선택 및 추출된 lidar 및 방사형 데이터 | 추출 |
추출된 원격 분석 | 자동차 원격 분석 데이터 선택 및 추출 | 추출 |
레이블 지정됨 | 레이블이 지정된 데이터 세트 | 레이블 지정됨 |
다시 계산 | 반복되는 시뮬레이션 실행을 기반으로 KPI(핵심 성과 지표) 생성 | 다시 계산 |
각 AVOps 데이터 도메인은 청사진 구조에 따라 설정됩니다. 이 구조에는 Azure Databricks 또는 Azure Synapse Analytics를 통한 Data Factory, Data Lake Storage, 데이터베이스, Batch 및 Apache Spark 런타임이 포함됩니다.
메타데이터 및 데이터 검색
각 데이터 도메인은 분산되고 해당 AVOps 데이터 제품을 개별적으로 관리합니다. 중앙 데이터 검색 및 데이터 제품의 위치를 파악하려면 다음 두 가지 구성 요소가 필요합니다.
- 비디오 시퀀스와 같은 처리된 측정 파일 및 데이터 스트림에 대한 메타데이터를 유지하는 메타데이터 저장소입니다. 이 구성 요소는 레이블이 지정되지 않은 파일의 메타데이터 검색과 같이 인덱싱해야 하는 주석을 사용하여 데이터를 검색하고 추적할 수 있도록 합니다. 예를 들어 메타데이터 저장소가 보행자 또는 기타 보강 기반 개체가 있는 특정 VIN(차량 식별 번호) 또는 프레임에 대한 모든 프레임을 반환하도록 할 수 있습니다.
- 계보, AVOps 데이터 도메인 간의 종속성 및 AVOps 데이터 루프에 관련된 데이터 저장소를 보여 주는 데이터 카탈로그입니다. 데이터 카탈로그의 예로 Microsoft Purview가 있습니다.
Azure Data Explorer 또는 Azure Cognitive Search를 사용하여 Azure Cosmos DB를 기반으로 하는 메타데이터 저장소를 확장할 수 있습니다. 선택 항목은 데이터 검색에 필요한 최종 시나리오에 따라 달라집니다. 의미 체계 검색 기능에 Azure Cognitive Search를 사용합니다.
다음 메타데이터 모델 다이어그램은 여러 AVOps 데이터 루프 기둥에서 사용되는 일반적인 통합 메타데이터 모델을 보여 줍니다.
데이터 공유
데이터 공유는 AVOps 데이터 루프의 일반적인 시나리오입니다. 예를 들어 데이터 도메인과 외부 공유 간의 데이터 공유를 사용하여 레이블 지정 파트너를 통합합니다. Microsoft Purview는 데이터 루프에서 효율적인 데이터 공유를 위해 다음과 같은 기능을 제공합니다.
레이블 데이터 교환에 권장되는 형식에는 COCO(컨텍스트) 데이터 세트의 공통 개체와 ASAM(Automation and Measuring Systems) OpenLABEL 데이터 세트의 표준화 협회가 포함됩니다.
이 솔루션에서 레이블이 지정된 데이터 세트는 MLOps 프로세스에서 인식 및 센서 융합 모델과 같은 특수 알고리즘을 만드는 데 사용됩니다. 알고리즘은 차선 변경, 차단된 도로, 보행자 교통, 신호등 및 신호등과 같은 환경에서 장면과 개체를 감지할 수 있습니다.
데이터 파이프라인
이 DataOps 솔루션에서는 데이터 파이프라인의 여러 단계 간에 데이터 이동이 자동화됩니다. 이 방법을 통해 프로세스는 효율성, 확장성, 일관성, 재현성, 적응성 및 오류 처리 이점을 제공합니다. 전체 개발 프로세스를 향상시키고, 진행을 가속화하며, 자율 주행 기술의 안전하고 효과적인 배포를 지원합니다.
다음 섹션에서는 단계 간에 데이터 이동을 구현하는 방법과 스토리지 계정을 구성하는 방법에 대해 설명합니다.
계층적 폴더 구조
잘 구성된 폴더 구조는 자율 주행 개발에서 데이터 파이프라인의 중요한 구성 요소입니다. 이러한 구조는 데이터 파일의 체계적이고 쉽게 탐색 가능한 배열을 제공하여 효율적인 데이터 관리 및 검색을 용이하게 합니다.
이 솔루션에서 원시 폴더의 데이터에는 다음과 같은 계층 구조가 있습니다.
region/raw/<measurement-ID>/<data-stream-ID>/YYYY/MM/DD
추출된 영역 스토리지 계정의 데이터는 유사한 계층 구조를 사용합니다.
region/extracted/<measurement-ID>/<data-stream-ID>/YYYY/MM/DD
유사한 계층 구조를 사용하면 Data Lake Storage의 계층 구조 네임스페이스 기능을 활용할 수 있습니다. 계층 구조는 확장 가능하고 비용 효율적인 개체 스토리지를 만드는 데 도움이 될 수 있습니다. 이러한 구조는 개체 검색 및 검색의 효율성도 향상시킵니다. 연도별 분할 및 VIN을 사용하면 특정 차량에서 관련 이미지를 쉽게 검색할 수 있습니다. 데이터 레이크에서는 카메라, GPS 장치 또는 라이다 또는 레이더 센서와 같은 각 센서에 대한 스토리지 컨테이너가 만들어집니다.
스토리지 계정을 원시 스토리지 계정에 방문
Data Factory 파이프라인은 일정에 따라 트리거됩니다. 파이프라인이 트리거되면 데이터가 Landing Storage 계정에서 원시 스토리지 계정으로 복사됩니다.
파이프라인은 모든 측정 폴더를 검색하고 이를 반복합니다. 각 측정을 통해 솔루션은 다음 작업을 수행합니다.
함수는 측정값의 유효성을 검사합니다. 함수는 측정 매니페스트에서 매니페스트 파일을 검색합니다. 그런 다음 함수는 현재 측정값에 대한 모든 MDF4, TDMS 및 rosbag 측정 파일이 측정 폴더에 있는지 확인합니다. 유효성 검사에 성공하면 함수는 다음 작업으로 진행됩니다. 유효성 검사에 실패하면 함수는 현재 측정값을 건너뛰고 다음 측정 폴더로 이동합니다.
측정을 만드는 API에 대한 웹 API 호출이 이루어지고 측정 매니페스트 JSON 파일의 JSON 페이로드가 API에 전달됩니다. 호출이 성공하면 응답이 구문 분석되어 측정 ID를 검색합니다. 호출이 실패하면 측정값이 오류 처리를 위해 오류 발생 시 작업으로 이동됩니다.
참고 항목
이 DataOps 솔루션은 앱 서비스에 대한 요청 수를 제한한다는 가정 하에 작성되었습니다. 솔루션이 확정되지 않은 요청 수를 만들 수 있는 경우 속도 제한 패턴을 고려합니다.
필요한 JSON 페이로드를 만들어 데이터 스트림을 만드는 API에 대한 웹 API 호출이 이루어집니다. 호출이 성공하면 응답이 구문 분석되어 데이터 스트림 ID 및 데이터 스트림 위치를 검색합니다. 호출이 실패하면 측정값이 오류 발생 작업으로 이동됩니다.
데이터 스트림
Start Copy
의 상태를 .로 업데이트하기 위해 웹 API 호출이 이루어집니다. 호출이 성공하면 복사 작업은 측정 파일을 데이터 스트림 위치에 복사합니다. 호출이 실패하면 측정값이 오류 발생 작업으로 이동됩니다.Data Factory 파이프라인은 Batch를 호출하여 방문 스토리지 계정에서 원시 스토리지 계정으로 측정 파일을 복사합니다. 오케스트레이터 앱의 복사 모듈은 각 측정에 대해 다음 작업을 사용하여 작업을 만듭니다.
- 측정값 파일을 원시 스토리지 계정에 복사합니다.
- 측정 파일을 보관 스토리지 계정에 복사합니다.
- 방문 스토리지 계정에서 측정 파일을 제거합니다.
참고 항목
이러한 작업에서 Batch는 오케스트레이터 풀 및 AzCopy 도구를 사용하여 데이터를 복사하고 제거합니다. AzCopy는 SAS 토큰을 사용하여 복사 또는 제거 작업을 수행합니다. SAS 토큰은 키 자격 증명 모음에 저장되며 용어
landingsaskey
archivesaskey
및rawsaskey
.데이터 스트림
Copy Complete
의 상태를 .로 업데이트하기 위해 웹 API 호출이 이루어집니다. 호출이 성공하면 시퀀스가 다음 작업으로 진행됩니다. 호출이 실패하면 측정값이 오류 발생 작업으로 이동됩니다.측정 파일은 방문 스토리지 계정에서 방문 보관 파일로 이동됩니다. 이 작업은 하이드레이트 복사 파이프라인을 통해 Landing Storage 계정으로 다시 이동하여 특정 측정값을 다시 실행할 수 있습니다. 이 영역의 측정값이 자동으로 삭제되거나 보관되도록 이 영역에 대해 수명 주기 관리가 설정됩니다.
측정에서 오류가 발생하면 측정값이 오류 영역으로 이동됩니다. 여기에서 다시 실행할 방문 스토리지 계정으로 이동할 수 있습니다. 또는 수명 주기 관리를 통해 측정값을 자동으로 삭제하거나 보관할 수 있습니다.
다음 사항에 유의하세요.
- 이러한 파이프라인은 일정에 따라 트리거됩니다. 이 방법은 파이프라인 실행의 추적 가능성을 개선하고 불필요한 실행을 방지하는 데 도움이 됩니다.
- 각 파이프라인은 다음 예약된 실행이 시작되기 전에 이전 실행이 완료되도록 1의 동시성 값으로 구성됩니다.
- 각 파이프라인은 측정값을 병렬로 복사하도록 구성됩니다. 예를 들어 예약된 실행이 복사할 10개의 측정값을 선택하는 경우 파이프라인 단계는 10개 측정값 모두에 대해 동시에 실행될 수 있습니다.
- 각 파이프라인은 파이프라인이 완료될 것으로 예상되는 시간보다 오래 걸리는 경우 Monitor에서 경고를 생성하도록 구성됩니다.
- 오류 발생 작업은 이후의 관찰 사례에서 구현됩니다.
- 수명 주기 관리는 부분 측정값(예: 누락된 rosbag 파일이 있는 측정값)을 자동으로 삭제합니다.
일괄 처리 디자인
모든 추출 논리는 각 추출 프로세스에 대해 하나의 컨테이너를 사용하여 서로 다른 컨테이너 이미지에 패키지됩니다. Batch는 측정 파일에서 정보를 추출할 때 컨테이너 워크로드를 병렬로 실행합니다.
Batch는 오케스트레이터 풀 및 실행 풀을 사용하여 워크로드를 처리합니다.
- 오케스트레이터 풀에는 컨테이너 런타임 지원 없이 Linux 노드가 있습니다. 풀은 Batch API를 사용하여 실행 풀에 대한 작업 및 태스크를 만드는 Python 코드를 실행합니다. 이 풀은 이러한 작업도 모니터링합니다. Data Factory는 데이터를 추출하는 컨테이너 워크로드를 오케스트레이션하는 오케스트레이터 풀을 호출합니다.
- 실행 풀에는 컨테이너 워크로드 실행을 지원하기 위해 컨테이너 런타임이 있는 Linux 노드가 있습니다. 이 풀의 경우 작업 및 작업은 오케스트레이터 풀을 통해 예약됩니다. 실행 풀에서 처리하는 데 필요한 모든 컨테이너 이미지는 JFrog를 사용하여 컨테이너 레지스트리로 푸시됩니다. 실행 풀은 이 레지스트리에 연결하고 필요한 이미지를 끌어오도록 구성됩니다.
데이터를 읽고 쓸 스토리지 계정은 일괄 처리 노드 및 노드에서 실행되는 컨테이너에서 NFS 3.0을 통해 탑재됩니다. 이 방법은 일괄 처리 노드 및 컨테이너가 일괄 처리 노드에 로컬로 데이터 파일을 다운로드할 필요 없이 데이터를 신속하게 처리하는 데 도움이 됩니다.
참고 항목
배치 및 스토리지 계정은 탑재를 위해 동일한 가상 네트워크에 있어야 합니다.
Data Factory에서 Batch 호출
추출 파이프라인에서 트리거는 메타데이터 파일의 경로와 파이프라인 매개 변수의 원시 데이터 스트림 경로를 전달합니다. Data Factory는 조회 작업을 사용하여 매니페스트 파일에서 JSON을 구문 분석합니다. 원시 데이터 스트림 ID는 파이프라인 변수를 구문 분석하여 원시 데이터 스트림 경로에서 추출할 수 있습니다.
Data Factory는 API를 호출하여 데이터 스트림을 만듭니다. API는 추출된 데이터 스트림의 경로를 반환합니다. 추출된 경로는 현재 개체에 추가되고 Data Factory는 추출된 데이터 스트림 경로를 추가한 후 현재 개체를 전달하여 사용자 지정 작업을 통해 Batch를 호출합니다.
{
"measurementId":"210b1ba7-9184-4840-a1c8-eb£397b7c686",
"rawDataStreamPath":"raw/2022/09/30/KA123456/210b1ba7-9184-4840-
alc8-ebf39767c68b/57472a44-0886-475-865a-ca32{c851207",
"extractedDatastreamPath":"extracted/2022/09/30/KA123456
/210bIba7-9184-4840-a1c8-ebf39767c68b/87404c9-0549-4a18-93ff-d1cc55£d8b78",
"extractedDataStreamId":"87404bc9-0549-4a18-93ff-d1cc55fd8b78"
}
단계별 추출 프로세스
Data Factory는 오케스트레이터 풀이 추출을 위한 측정값을 처리하기 위해 하나의 작업으로 작업을 예약합니다. Data Factory는 오케스트레이터 풀에 다음 정보를 전달합니다.
- 측정 ID
- 추출해야 하는 MDF4, TDMS 또는 rosbag 형식의 측정 파일 위치
- 추출된 콘텐츠의 스토리지 위치 대상 경로
- 추출된 데이터 스트림 ID
오케스트레이터 풀은 API를 호출하여 데이터 스트림을 업데이트하고 상태를
Processing
.로 설정합니다.오케스트레이터 풀은 측정의 일부인 각 측정 파일에 대한 작업을 만듭니다. 각 작업에는 다음 작업이 포함됩니다.
작업 목적 참고 항목 유효성 검사 측정 파일에서 데이터를 추출할 수 있도록 유효성을 검사합니다. 다른 모든 작업은 이 작업에 따라 달라집니다. 메타데이터 처리 측정 파일에서 메타데이터를 파생시키고 API를 사용하여 파일의 메타데이터를 업데이트하여 파일의 메타데이터를 보강합니다. 프로세스 StructuredTopics
지정된 측정 파일에서 구조화된 데이터를 추출합니다. 구조화된 데이터를 추출할 항목 목록은 구성 개체로 전달됩니다. 프로세스 CameraTopics
지정된 측정 파일에서 이미지 데이터를 추출합니다. 이미지를 추출할 항목 목록은 구성 개체로 전달됩니다. 프로세스 LidarTopics
지정된 측정 파일에서 lidar 데이터를 추출합니다. lidar 데이터를 추출할 항목 목록은 구성 개체로 전달됩니다. 프로세스 CANTopics
지정된 측정 파일에서 CAN(컨트롤러 영역 네트워크) 데이터를 추출합니다. 데이터를 추출할 항목 목록은 구성 개체로 전달됩니다. 오케스트레이터 풀은 각 작업의 진행률을 모니터링합니다. 모든 측정 파일에 대한 모든 작업이 완료되면 풀은 API를 호출하여 데이터 스트림을 업데이트하고 상태를
Completed
설정합니다.오케스트레이터는 정상적으로 종료됩니다.
참고 항목
각 작업은 용도에 맞게 적절하게 정의된 논리가 있는 별도의 컨테이너 이미지입니다. 태스크는 구성 개체를 입력으로 허용합니다. 예를 들어 입력은 출력을 쓸 위치와 처리할 측정 파일을 지정합니다. 토픽 형식의 배열(예:
sensor_msgs/Image
)은 입력의 또 다른 예입니다. 다른 모든 작업은 유효성 검사 태스크에 따라 달라지므로 종속 작업이 만들어집니다. 다른 모든 작업은 독립적으로 처리할 수 있으며 병렬로 실행할 수 있습니다.
고려 사항
이러한 고려 사항은 워크로드의 품질을 향상시키는 데 사용할 수 있는 일단의 지침 원칙인 Azure Well-Architected Framework의 핵심 요소를 구현합니다. 자세한 내용은 Microsoft Azure Well-Architected Framework를 참조하세요.
안정성
안정성은 애플리케이션이 고객에 대한 약속을 충족할 수 있도록 합니다. 자세한 내용은 안정성 핵심 요소 개요를 참조하세요.
- 솔루션에서 동일한 Azure 지역 내의 고유한 물리적 위치인 Azure 가용성 영역을 사용하는 것이 좋습니다.
- 재해 복구 및 계정 장애 조치(failover)를 계획합니다.
보안
우수한 보안은 중요한 데이터 및 시스템에 대한 고의적인 공격과 악용을 방어합니다. 자세한 내용은 보안 요소의 개요를 참조하세요.
자동차 OEM과 Microsoft 간의 책임 나누기를 이해하는 것이 중요합니다. 차량에서 OEM은 전체 스택을 소유하지만 데이터가 클라우드로 이동함에 따라 일부 책임은 Microsoft로 이전됩니다. Azure PaaS(Platform as a Service) 계층은 운영 체제를 포함하여 물리적 스택에 기본 제공 보안을 제공합니다. 기존 인프라 보안 구성 요소에 다음 기능을 추가할 수 있습니다.
- Microsoft Entra ID 및 Microsoft Entra 조건부 액세스 정책을 사용하는 ID 및 액세스 관리입니다.
- Azure Policy를 사용하는 인프라 거버넌스.
- Microsoft Purview를 사용하는 데이터 거버넌스.
- 네이티브 Azure Storage 및 데이터베이스 서비스를 사용하는 미사용 데이터 암호화 자세한 내용은 데이터 보호 고려 사항을 참조 하세요.
- 암호화 키 및 비밀 보호. 이 목적을 위해 Azure Key Vault를 사용합니다.
비용 최적화
비용 최적화는 불필요한 비용을 줄이고 운영 효율성을 높이는 방법을 찾는 것입니다. 자세한 내용은 비용 최적화 핵심 요소 개요를 참조하세요.
자동 차량용 DataOps를 운영하는 OEM 및 계층 1 공급업체의 주요 관심사는 운영 비용입니다. 이 솔루션은 다음 사례를 사용하여 비용을 최적화합니다.
- Azure에서 애플리케이션 코드를 호스팅하기 위해 제공하는 다양한 옵션을 활용합니다. 이 솔루션은 App Service 및 Batch를 사용합니다. 배포에 적합한 서비스를 선택하는 방법에 대한 지침은 Azure 컴퓨팅 서비스 선택을 참조하세요.
- Azure Storage 현재 위치 데이터 공유 사용
- 수명 주기 관리를 사용하여 비용 최적화
- 예약 인스턴스를 사용하여 App Service에 대한 비용 절감
참가자
Microsoft에서 이 문서를 유지 관리합니다. 원래 다음 기여자가 작성했습니다.
주요 작성자:
- Ryan Matsumura | 선임 프로그램 관리자
- Jochen Schroeer | 수석 설계자(서비스 라인 이동성)
- Brij Singh | 주요 소프트웨어 엔지니어
- 지네트 벨레라 | 선임 소프트웨어 엔지니어링 책임자
LinkedIn 비공개 프로필을 보려면, LinkedIn에 로그인하세요.
다음 단계
- Azure Batch란?
- Azure Data Factory란?
- Azure Data Lake Storage Gen2 소개
- Azure Cosmos DB 시작
- App Service 개요
- Azure Data Share란?
- Azure Data Box란?
- Azure Stack Edge 설명서
- Azure ExpressRoute란?
- Azure Machine Learning이란 무엇인가요?
- Azure Databricks란?
- Azure Synapse Analytics란?
- Azure Monitor 개요
- ROS 로그 파일(rosbags)
- 자율 주행 차량을 위한 대규모 데이터 운영 플랫폼
관련 참고 자료
자율 주행 시스템용 ValOps를 개발하는 방법에 대한 자세한 내용은 다음을 참조하세요.
다음 관련 문서를 참조할 수도 있습니다.