콘텐츠로 이동

TBEL 개요

TBEL은 HMI 데이터 변환을 위해 만든 가벼운 스크립트 언어입니다. MVEL을 포크해 보안 제약과 내장 메모리 관리를 더했습니다.

TBEL은 MX On Cloud에서 고객이 쓰는 스크립트, 예를 들어 고급 알람 규칙 조건식에 쓰입니다.

TBEL 이전에 MX On Cloud는 서버 쪽 스크립트에 Nashorn(JDK에 포함된 JavaScript 엔진)을 썼습니다. Nashorn은 JDK 11에서 사용 중단되고 JDK 15에서 제거되어, 대안이 두 가지 남았습니다.

  • GraalVM JavaScript — 뛰어나지만 런타임이 무겁고 라이선스 제약이 있어, 대부분의 자체 호스팅 배포에는 맞지 않습니다.
  • Remote JS Executors — 메시지 큐로 스크립트를 받는 Node.js 프로세스입니다. 동작은 하지만 프로세스 간 통신 지연이 생기고 시스템 자원을 더 씁니다.

TBEL은 외부 프로세스 없이 JVM 안에서 실행되는 빠르고 안전하며 의존성이 없는 스크립트 방식을 제공하려고 만들었습니다.

TBEL은 일반적인 변환 스크립트에서 약 1,000배 높은 성능을 냅니다.

지표NashornTBEL
return msg.temperature > 20 1,000회 반복~16 000 ms~12 ms
스크립트당 시작 비용높음(JIT 컴파일)무시할 수준
메모리 격리약함강함(실행별 메모리 한도)
보안 샌드박스직접 구현, 오류 가능성 높음내장(클래스 접근 제한)
항목Remote JS ExecutorsTBEL
추가 프로세스있음(Node.js)불가
네트워크·큐 오버헤드가능불가
언어완전한 ES6+ JavaScriptMVEL 기반(Java와 비슷)
사용 사례완전한 JS 생태계가 필요한 복잡한 스크립트일반적인 HMI 변환
  • 언어 가이드 — 문법, 데이터 유형, 컬렉션, 흐름 제어.
  • 헬퍼 함수 — 인코딩, 바이트 파싱, 16진수 변환, 날짜·시간, 지오펜싱 등.