논리적 아키텍처

AAOS SDV는 서비스 지향적이고 데이터 중심적인 아키텍처를 제공합니다. 사용자는 차량 서비스 인터페이스 정의 언어 (VSIDL)의 지원을 받아 미들웨어 클라이언트 라이브러리를 통해 시스템과 상호작용합니다. 이렇게 하면 하위 수준 인프라 세부정보가 숨겨지므로 개발자는 상위 수준 통신 및 배포 엔티티에 집중할 수 있습니다.

커뮤니케이션 모델

SDV의 논리적 통신은 주제와 채널로 정의됩니다.

주제

주제는 데이터 중심 통신 (게시/구독)에 사용됩니다. 사용자는 특정 게시자를 검색하는 대신 이름이 지정된 주제에 게시된 메시지와 상호작용합니다.

  • 식별자: 주제는 고유한 문자열로 식별됩니다.
  • 데이터 유형: 주제에 게시된 메시지는 protobuf를 사용하여 정의됩니다.
  • 분리: 구독자는 메시지 유형과 주제 이름에 관심이 있으며 게시자의 ID나 위치에는 관심이 없습니다. 여러 게시자가 동일한 주제에 게시할 수 있으므로 다대다 통신이 가능합니다.

채널

채널은 원격 프로시져 콜 (RPC)에 기반한 통신에 사용됩니다. 사용자는 요청을 처리하는 서버를 알지 않아도 특정 채널에서 서비스 메서드를 호출합니다.

  • 식별자: 채널은 고유한 이름 (예: main-control)으로 식별됩니다.
  • 서비스 유형: RPC 서비스는 정규화된 protobuf 서비스 이름으로 식별됩니다.
  • 추상화: 미들웨어는 지정된 서비스와 채널에 적합한 서버 인스턴스를 찾는 작업을 처리합니다.

배포 및 수명 주기

이 섹션의 항목은 SDV 환경 내에서 소프트웨어가 패키징되고, 승인되고, 인스턴스화되는 방식을 정의합니다.

서비스 번들

서비스 번들은 두 가지 기본 역할을 수행하는 관련 비즈니스 로직 그룹입니다.

  1. 배포 단위: 서비스 번들은 APEX 파일이자 소프트웨어 업데이트 가능성의 최소 단위인 SDV 패키지의 일부로 배포됩니다.
    • 각 서비스 번들은 런타임에 SDV VM의 단일 Linux 프로세스에 고유하게 매핑되며 서비스 번들 인스턴스라고 합니다.
    • 서비스 번들은 이름과 승인 정책을 포함한 메타데이터가 포함된 SDV 패키지 매니페스트에서 참조됩니다.
  2. 승인 단위: 권한은 전체 서비스 번들에 부여됩니다. 서비스 번들은 다음을 수행할 수 있습니다.
    • 특정 주제를 게시하거나 구독합니다 (특정 메시지 유형의 경우).
    • 특정 채널을 제공하거나 호출합니다 (특정 서비스 유형의 경우).

서비스 번들 인스턴스

서비스 번들 인스턴스는 런타임에 로드된 서비스 번들의 인스턴스입니다.

  • 각 서비스 번들 인스턴스는 SDV 수명 주기 관리자 (LCM)에 의해 개별적으로 추적되고 식별됩니다.
  • 서비스 번들 인스턴스 시작은 SDV 오케스트레이터에 의해 트리거되고 SDV LCM에 의해 시작되고 추적됩니다.

SDV 패키지

SDV 패키지는 소프트웨어 업데이트 가능성의 가장 작은 단위이며 다음을 충족합니다.

  • Android Pony EXpress (APEX) 파일
  • 하나 이상의 서비스 번들을 포함합니다.
  • 한 번에 모두 업데이트됩니다. 즉, SDV 패키지의 모든 서비스 번들이 한 번에 모두 업데이트됩니다.

SDV 패키지의 모든 코드는 동일한 신뢰 소스 (동일한 소프트웨어 게시자)에서 가져옵니다.

동일한 SDV 패키지의 여러 버전이 서로 다른 SDV VM에 있을 수 있습니다.

구현 세부정보

다음 섹션에서는 SDV 전송 계층의 구현 세부정보를 설명합니다.

배경: 서비스 단위

개발자는 주로 주제 및 채널과 상호작용하지만 서비스 단위는 SDV 통신 스택 내에서 등록 및 검색을 위한 기본 메커니즘으로 유지됩니다.

서비스 단위는 RPC 서버나 게시자와 같은 단일 엔드포인트를 나타냅니다. 미들웨어 클라이언트 라이브러리 (mw::clientlib)는 이러한 서비스 단위의 등록 및 검색을 내부적으로 처리합니다.