차량용 고성능 컴퓨팅(HPC)의 장점 중 하나는 기능을 단일 ECU에 통합하고 기능의 독립성을 보장하면서도 이를 통해 발생하는 시너지 효과를 활용한다는 것이다. 이 글에서는 런타임 환경을 격리하고 간섭 위험 없이 타사(Third-party) 소프트웨어를 원활하게 통합할 수 있는 개념인 리눅스 컨테이너의 강력한 기능에 대해 알아본다.
글 | 마커스 셰퍼(Marcus Schafer), Automotive OS소프트웨어 엔지니어, 일렉트로비트(Elektrobit)
마커스 셰퍼
그는 모든 사람의 경험과 지식을 바탕으로 배우고 혁신할 수 있는 기회를 제공하는 FOSS 모델에 대한 강한 신념으로 인해 개방형 소프트웨어에 대한 열정을 가지고 있다. 그는 소프트웨어 개발에서 서버, 클라우드, 가상화 수준에 초점을 맞추고 있다. 현재 진행 중인 프로젝트에는 자동차 장치에 초점을 맞춘 임베디드 리눅스 배포판 구현이 포함되어 있다.
연관기사: EB, SDV 차별성 지원하는 종합 솔루션 기업 (autoelectronics.co.kr)
차에 탑승해 시동을 걸 때, 보통 우리는 운전자를 지원하는 다양한 애플리케이션의 시작을 예상한다. 운영체제(Operating System, OS) 계층은 차량 서비스 기능에서 중요하지 않은 요인이어야 한다. 과거에는 한 기능이 다른 기능을 방해할 수 없도록 여러 (간단한) 전자제어장치(ECU)에 기능을 분리했다. 차량용 고성능 컴퓨팅(HPC)의 장점 중 하나는 기능을 단일 ECU에 통합하고, 기능의 독립성을 보장하면서도 이를 통해 발생하는 시너지 효과를 활용한다는 것이다. 확실한 솔루션은 엔터프라이즈 및 클라우드 컴퓨팅에서 잘 확립된 일련의 기능을 활용하는 것이며, 이를 통칭해 ‘컨테이너(Container)’라고 한다. 이익을 극대화하려면 모든 주요 구현에서 사용되는 널리 확립된 오픈 컨테이너 이니셔티브(Open Container Initiative, OCI) 산업 표준을 준수하는 것이 필수적이다. 많은 애플리케이션에서 가장 많이 이용하는 구현 중 하나는 리눅스를 기반으로 한다.
리눅스의 컨테이너는 소프트웨어 통합자가 호스트 운영체제에서 런타임 환경(Runtime Environment, RTE)을 분리할 수 있도록 하는 개념이다. 이는 주로 폐쇄적인 환경 내에서 소프트웨어를 실행하는 데 사용되었다. 여러 회사가 최종 제품의 부품을 제공하는 자동차 산업에서, 이러한 개념은 시스템의 다른 구성 요소에 영향을 미치거나 부정적인 영향을 미칠 위험 없이 타사 소프트웨어를 통합하는 데 도움이 된다. 소프트웨어 회사는 개별 개발 환경 내에서 애플리케이션을 컨테이너로 구현 및 테스트하며, 불일치나 원치 않는 부작용의 위험 없이 시스템 통합 업체에 컨테이너를 넘길 수 있다. 이러한 프로세스가 대규모로 시행될 수 있도록 하는 기반은 OCI에서 정의한 업계 표준의 존재이다(https://opencontainers.org 참조).
자동차 산업에서 운영체제를 구매하도록 하는 요소는 ‘타사 애플리케이션을 얼마나 간단하고 비용 효율적으로 통합할 수 있는가’라는 질문에 대한 답변과 밀접하게 연결되어 있다. 앞서 설명한 바와 같이, 컨테이너도 하나의 솔루션이지만 여기에는 타사 제공업체가 이 개념을 도입하도록 유도하는 방법에 대한 문제가 수반된다. 일렉트로비트는 기술적인 솔루션 외에도 우분투 기반 EB corbos Linux라는 운영체제를 기반으로 구축하려는 고객 및 파트너를 설득하기 위한 도구 및 컨설팅 서비스에도 초점을 맞추고 있다.
일렉트로비트는 다음과 같은 구성 요소와 서비스로 구성된 컨테이너 시스템을 제공한다.
OCI 컨테이너 빌드 시스템은 오픈 빌드 서비스(Open Build Service, OBS)와 KIWI 툴링의 일부이다. 일렉트로비트는 OCI 컨테이너를 사내 OBS 인스턴스의 일부로 빌드 및 유지 관리한다. 이 서비스에는 사람이 읽을 수 있는 KIWI 기반 컨테이너 이미지 설명과 컨테이너의 자동 패키징을 통해 OCI 호환 컨테이너를 생성하는 작업이 포함된다. OBS를 직접 사용하는 고객은 이 솔루션을 통해 지원을 받을 수 있다. 컨테이너를 생성하기 위해 다양한 도구를 사용하는 고객은 최종 컨테이너가 OCI를 준수하는 한 프로세스를 유지할 수 있다.
oci-pilot이라는 OCI 툴링 프로젝트는 소프트웨어 구성 요소 패키징용 애플리케이션 런처(Launcher)와 유틸리티를 제공한다. 대상 시스템의 컨테이너를 관리하는 데는 로컬 포드맨(Podman) 레지스트리를 사용한다. oci-pilot 프로젝트와 함께 제공되는 툴링은 OCI 호환 컨테이너를 로컬 레지스트리로 가져오는 등록 유틸리티, 그리고 컨테이너화된 애플리케이션을 실행하는 런처를 제공하므로 궁극적으로 네이티브 애플리케이션처럼 느껴진다.
<저작권자 © AEM. 무단전재 및 재배포, AI학습 이용 금지>