NI Remote-Ability: gRPC를 사용하여 NI 계측 장비에 액세스하기

개요

Remote-Ability는 Google 원격 프로시저 호출 (gRPC) 기술을 사용하여 NI의 계측 장비와 원격으로 상호작용할 수 있도록 합니다. NI는 자사 제품이 gRPC와 함께 잘 작동하도록 만드는 데 투자하고 있으며 덕분에 고객은 NI 제품과 원격으로 상호작용하며 지연 시간을 줄이면서 짧은 고품질 측정을 수행할 수 있습니다. 엔지니어는 NI Remote-Ability를 통해 기존의 테스트 워크플로를 유연하게 활용할 수 있습니다.

내용

NI Remote-Ability란?

NI Software Remote-Ability는 NI 하드웨어 및 서비스와 원격으로 상호작용하여 지연 시간을 줄이면서 뛰어난 품질의 측정을 수행할 수 있는 기능입니다. NI Software Remote-Ability는 사전 정의된 독립형 어플리케이션, API 및/또는 명령을 OS에 구애받지 않고 전체적으로 사용하며 클라이언트/서버 아키텍처를 활용합니다. 

NI Remote-Ability는 내부적으로 gRPC를 사용합니다. gRPC 기반 서버를 사용하면 다양한 프로그래밍 환경, 플랫폼 및 OS에서 테스트 및 측정 장비에 액세스하여 제어할 수 있습니다. 

gRPC는 프로토콜 버퍼 (Proto3)를 메시지 교환 포맷으로 사용합니다. 다음 그림은 proto 요청과 응답이 gRPC 서버와 스텁 간에 전송되는 방법을 보여줍니다. 

그림 1: gRPC 서버의 요청 및 응답

NI Remote-Ability는 Windows, Linux 및 Mac에서 다양한 프로그래밍 언어로 사용할 수 있습니다. 지원되는 언어 및 OS의 전체 목록은 gRPC 지원 리소스를 참조하십시오.

gRPC란?

gRPC는 어디에서나 실행할 수 있는 오픈 소스 원격 프로시저 호출 (RPC) 프레임워크입니다. 이 프레임워크를 통해 클라이언트와 서버 어플리케이션이 투명하게 통신할 수 있으며 연결된 시스템을 원격으로 쉽게 구축할 수 있습니다.

gRPC에서 클라이언트 어플리케이션은 자신이 마치 로컬 객체인 것처럼 다른 시스템에 있는 서버 어플리케이션의 메소드를 직접 호출할 수 있으므로 분산 어플리케이션과 서비스를 보다 쉽게 구축할 수 있습니다. 서버 측에서 서버는 이러한 인터페이스를 구현하고 gRPC 서버를 실행하여 클라이언트 호출을 처리합니다. 클라이언트 측에서 클라이언트에는 서버와 동일한 메소드를 제공하는 스텁(일부 언어에서는 그냥 클라이언트라고도 함)이 있습니다.

gRPC를 사용하는 중요한 이유 중 하나는 클라이언트 측에서 OS 및 언어에 구애받지 않아 유연성을 제공하며 프로젝트에서 이미 사용 중인 현재 OS 또는 프로그래밍 언어에 맞춰 조정할 수 있다는 것입니다.

NI Remote-Ability, gRPC를 사용하여 다른 유명 기업 연결

NI Remote-Ability에 gRPC를 사용함으로써 NI는 Google, Netflix 및 Square 등 다른 대기업을 연결하고 있습니다. gRPC에는 RPyC, SCPI 및 HiSLIP 등과 같은 다른 옵션에는 없는 다음과 같은 강력한 기능이 있습니다.

  • Google의 지원을 포함하여 매우 활발한 개발 및 커뮤니티 활동 
  • 우수한 기본 성능 및 기능
  • 잘 정의된 인터페이스 정의 언어: Protobuf
  • 다양한 언어 및 OS 지원(특히, 비공식/타사 클라이언트 지원을 포함하는 경우)
  • 언어 및 OS에 구애받지 않는 원격 연결이 필요한 환경에서 잘 작동함

 

gRPC에서 인증/권한 부여

NI Remote-Ability는gRPC의 기본 인증 메커니즘을 사용합니다. 서버 측 TLS 또는 상호 TLS (제로 트러스트)로 연결을 보호할 수 있어 통신이 암호화되고 클라이언트/서버를 신뢰할 수 있습니다. 인증 서버와 통합하여 사용자 정의 인증을 포함하도록 서버를 업데이트할 수 있습니다.

NI Remote-Ability의 예상 성능

NI Remote-Ability를 사용하면 고품질 측정 시 지연 시간을 줄일 수 있습니다. 다음 예제는 NI-9207 C 시리즈 모듈을 사용하여 시뮬레이션된 cDAQ-9179 섀시에서 아날로그 입력 전압을 읽을 때의 성능 벤치마크를 보여줍니다.

스트리밍 사용 시 gRPC 성능

서버에서 클라이언트로 스트리밍 데이터:

  • 서버에서 스트리밍되는 메시지당 200,000개 배정밀도 부동소수점 숫자
  • Protobuf를 사용하는 기본 설정
  • 안전하지 않은 자격 증명
  • 하나의 클라이언트 연결
  • 스위치를 통한 1 Gb 이더넷

Linux 로컬 호스트

  • 4 GB/s(단일 스트림)
  • 8 GB/s(다중 스트림)
  • 베이스라인: Linux localhost 원시 소켓: 약 10 GB/s 

Windows 10 로컬 호스트: 4 GB/s1

Linux-Linux: 11 MB/s

  • 이론상 최대 93% 

Thunderbolt 3 링크 로컬 네트워크

  • Windows 클라이언트, Linux 서버: 1.2 GB/s
  • Linux 클라이언트, Linux 서버: 1.6 GB/s
  • SSH를 통한 Linux: 850 MB/s

1 CISO AMP에 유의하십시오.

NI-DAQmx 사용 시 gRPC 성능

시뮬레이션된 cDAQ-9179 섀시 및 NI-9207 모듈의 NI-DAQmx:

  • C++ 앱에서 직접 NI-DAQmx 호출: 121.6 ms
  • gRPC Windows 클라이언트, 로컬 호스트 서버: 121.9 ms
  • 네트워크 (1 Gb)를 통한 gRPC Linux 클라이언트 (직접 연결 안 함): 123.9 ms

이러한 벤치마크에서 볼 수 있듯이, gRPC 호출은 기본 드라이버 호출과 비슷하며 지연 시간이 최소화됩니다. gRPC를 통해 NI 고객은 NI 제품과 원격으로 상호작용하여 지연 시간이 짧은 고품질 측정을 수행하고 기존 테스트 워크플로를 활용할 수 있습니다.