플러그인 아키텍처
PRX 플러그인 시스템은 서드파티 코드에 안전하고 이식 가능한 실행 환경을 제공하는 WASM 런타임 위에 구축됩니다. 이 페이지에서는 기술 아키텍처를 설명합니다.
런타임
PRX는 Wasmtime 런타임을 사용하여 WASM 플러그인을 실행합니다. 각 플러그인 인스턴스는 격리된 선형 메모리를 가진 자체 WASM 스토어에서 실행됩니다.
┌──────────────────────────────┐
│ PRX Host │
│ │
│ ┌────────────────────────┐ │
│ │ WASM Runtime │ │
│ │ ┌──────┐ ┌──────┐ │ │
│ │ │Plugin│ │Plugin│ │ │
│ │ │ A │ │ B │ │ │
│ │ └──┬───┘ └──┬───┘ │ │
│ │ │ │ │ │
│ │ Host Functions API │ │
│ └────────────────────────┘ │
└──────────────────────────────┘호스트-게스트 경계
플러그인은 정의된 호스트 함수 세트를 통해 호스트와 통신합니다. 이 경계는 다음을 강제합니다:
- 타입 안전성 -- 모든 함수 파라미터가 검증됨
- 리소스 제한 -- 메모리와 CPU 사용량이 제한됨
- 권한 검사 -- 각 호스트 함수 호출이 플러그인의 권한 매니페스트에 대해 승인됨
메모리 모델
각 플러그인은 자체 선형 메모리 공간 (기본 64 MB)을 갖습니다. 호스트와 게스트 간 데이터는 명시적 직렬화를 통한 공유 메모리 버퍼로 교환됩니다.
플러그인 생명주기
- 로드 -- WASM 바이너리가 로드되고 검증됨
- 초기화 -- 플러그인의
init()함수가 설정과 함께 호출됨 - 준비 -- 플러그인이 자신의 기능 (도구, 채널 등)을 등록
- 실행 -- 호스트가 필요에 따라 플러그인 함수를 호출
- 종료 -- 정리를 위해 플러그인의
shutdown()함수가 호출됨