자바(Java) 기반 백엔드 시스템에서 파이썬(Python)으로 구현된 인공지능(AI) 모델을 연동할 때 발생하는 고질적인 성능 문제를 해결하기 위한 새로운 접근 방식인 'JPyRust'가 개발되어 주목받고 있습니다. 이 프로젝트는 기존의 비효율적인 방식 대신 공유 메모리(Shared Memory)와 러스트(Rust) 기반 JNI(Java Native Interface)를 활용해, AI 모델 호출 시 발생하는 지연 시간을 최대 390배까지 단축하는 놀라운 결과를 보여주었습니다.
개발자는 교육 재단의 사물함 대여 프로젝트에서 카메라 이미지 기반 반납 처리 기능을 구현하며 이 문제에 직면했습니다. 초기에는 파이썬 AI 모델을 서브프로세스(subprocess) 방식으로 호출했는데, 요청이 들어올 때마다 파이썬 인터프리터를 새로 실행하고 라이브러리 및 모델을 로딩하는 과정에서 AI 추론 자체보다 훨씬 많은 시간이 소요되는 것을 확인했습니다. 특히 YOLOv8n 모델을 기준으로 테스트했을 때, 서브프로세스 방식은 평균 약 2,330ms가 걸린 반면, JPyRust는 평균 약 6ms로 약 390배의 속도 차이를 보였습니다. 이는 AI 추론 속도 자체가 빨라진 것이 아니라, 파이썬 워커와 모델을 미리 로딩해두고 이미지 데이터만 공유 메모리로 전달하는 방식 덕분에 초기 로딩 오버헤드가 사라진 결과입니다.
JPyRust는 자바에서 JNI를 통해 러스트(Rust)를 호출하고, 러스트가 파이썬 워커 프로세스와 통신하는 구조를 가집니다. 특히 대용량 데이터인 이미지를 소켓이나 파일 대신 공유 메모리(SHMEM)로 전달하여 데이터 전송 효율을 극대화했습니다. 현재 윈도우(Windows), macOS, 리눅스(Linux) 환경을 지원하며, 파이썬 환경도 자동으로 구성하도록 설계되었습니다. 이 기술은 AI 서비스의 응답 속도를 획기적으로 개선할 수 있어, 실시간성이 중요한 다양한 AI 애플리케이션 개발에 큰 영향을 미칠 것으로 기대됩니다. 다만, 동시 요청 처리, 워커 자동 복구, 여러 AI 모델 동시 사용 등은 향후 개선 과제로 남아 있습니다.