ENVI Service Engine이 뭔가요?

ENVI Service Engine(그림 출처 : Exelis VIS)

ENVI Service Engine(그림 출처 : Exelis VIS)

ExelisVIS의 제품 중 요즘 가장 새롭게 등장한 것이 ENVI Service Engine입니다. 2013년에 처음 등장을 하였고, 제품으로서 안정화 단계를 거쳐서 실제 판매가 시작된 것은 사실상 2014년부터입니다. ENVI Service Engine이 공식명칭이고 ENVI 개발자/사용자들은 ESE라고 흔히 줄여부르며 개념상 동일하기 때문에 IDL Service Engine(ISE)라고 부르기도 합니다. 기존의 IDL/ENVI/SARscape/ENVI Lidar와 같은 Exelis VIS 제품이 모두 Desktop 설치형 소프트웨어였기 때문에, Client/Server 형태의 Service Engine은 다소 생소한 느낌을 줍니다만, 우리가 다른 종류의 일상 생활에서 매우 많은 어플리케이션을 Client/Server 형태로 사용하고 있기 때문에 어려운 개념은 하나도 없습니다.

  1. 이게 뭔가요?
    웹서버입니다. Apache, Tomcat 같은 웹서버입니다. 그냥 웹서버와 다른 점은 IDL에 명령을 주고 IDL로부터 답변을 받아올 수 있는 웹서버라는 점입니다. IDL에 명령을 전달할 수 있다면 ENVI를 돌릴 수도 있다는 얘기입니다. ENVI Batch Mode 라는 것은 사실 IDL 프로그램으로 ENVI를 돌리는 것이니까요. 그렇기 때문에 사용자들에게 제공하고자 하는 IDL/ENVI 프로그램을 개발자가 ESE에 올리고 수정하는 기능, 올려 놓은 IDL/ENVI 프로그램을 관리하는 기능, 이들 프로그램이 사용되는 빈도, 동시 접속자와 처리 시간 등을 모니터링하는 기능이 함께 제공됩니다.
  2. 어떻게 서비스 하나요?
    스마트폰 앱이나 Web으로 서비스하게 되는 것이 일반적입니다. 사용자(개발과는 전혀 관계없는 일반 사용자)가 스마트폰 앱이나 Web으로 어떤 기능을 요청하면(간단한 예로 버튼 클릭이나 이미지 드래그 같은 것이 있겠지요), 이 요청에 대해 ESE가 프로그램된 대로 IDL/ENVI를 돌려 그 결과를 다시 스마트폰 앱이나 Web으로 돌려 보내는 형식입니다. 그러므로 일반적으로는 서비스 구축을 위해 두 종류의 개발자가 한 팀이 되어 개발을 하게 됩니다. Web 또는 앱 개발자가 사용자와 대화하는 인터페이스를 개발하게 되고, 이러한 개발에서 IDL이나 ENVI를 돌려야 되는 부분이 있으면 이 부분은 IDL/ENVI 개발자가 구축하여 하나의 기능을 만드는 것입니다. IDL GUI 프로그램을 생각해 보면 좋을 것 같습니다. Desktop 실행형 IDL GUI 프로그램은 GUI와 내부 연산 기능을 모두 IDL 프로그래머가 만들면 됩니다. ESE를 이용하여 서비스형 어플리케이션을 만든다고 생각하면, GUI에 해당하는 부분은 Web 프로그래머가 개발하고, 내부 연산 기능(그래픽 생성기능)은 IDL 프로그래머가 개발하게 될 것입니다. 물론 Web 프로그래밍과 IDL 프로그래밍을 모두 잘 하는 프로그래머라면 혼자서도 서비스 구축이 가능하겠지만, 그런 멋지지만 좀 괴상한 프로그래머는 흔치 않은 것이 현실입니다.
  3. Web 프로그램(Client)와 ESE가 어떻게 서로 연결되나요?
    내부적으로 JSON 포맷을 통해 Web 프로그램(Client)과 ESE(Server)가 대화합니다. 사용자의 요청과 사용자에게 돌려주는 응답의 형식을 JSON이라는 포맷(Client / Server 세계에서는 일상적인 포맷입니다)으로 정의하고, 모든 사용자 요청에 대해 정의된 JSON 형식으로 신호가 오고 갑니다. 그래서 ESE에 하나의 기능을 올릴 때에는 IDL 프로그램과 JSON 파일을 한 쌍으로(하나의 압축파일로) 올려야 ESE에 등록됩니다.
  4. 클라이언트는 꼭 웹으로 만들어야 하나요?
    데스크탑 프로그램은 무엇이든 만들 수 있기 때문에(웹 브라우저는 데스크탑 프로그램이죠) 서버에 접속하여 자료를 주고받는 데스크탑 어플리케이션을 만들고 이것을 배포하는 방법도 있습니다. 이 방식으로 (과장을 좀 보태어) 껍데기 ENVI를 만들어 배포할 수도 있습니다. 이렇게 한다면 실제 계산 프로세스는 서버쪽에서 하고 사용자 컴퓨터는 GUI에 대한 입출력만 수행하게 되겠지요. 데스크탑 어플리케이션으로 클라이언트 부분을 구현할 때 꼭 IDL로 만들 필요는 없습니다.
  5. ESE를 사용하면 누구나 접속해서 IDL/ENVI를 실행할 수 있는 것인가요?
    그렇지 않습니다. 사용자는 개발자(서버 구축 담당자)가 올려 놓은 프로그램을 돌릴 수 있는 것입니다. 우리가 쇼핑몰 웹에 접속하여 웹프로그래밍언어(PHP, JSP 등)를 직접 구현하고 돌릴 수 없는 것과 마찬가지입니다. 허용되지 않은 액션을 요청할 수는 없습니다. 이는 서버 보안에도 심각한 문제가 있기 때문에 이를 허용할 가능성은 없습니다. 제공되는 서비스(개발자가 IDL/ENVI를 이용하여 개발하고 등록한 프로그램을 연동하는)만 이용할 수 있습니다.
  6. 동시 접속자 수의 제한이 있습니까?
    동시 접속자 수의 제한은 사실상 없습니다. 그렇지만 동시에 집행할 수 있는 작업의 개수에 따라 라이센스 가격이 달라집니다. 예를 들어 4개의 Work를 동시에 진행할 수 있는 라이센스를 가지고 있는 경우 5번째 요청자는 어느 하나의 작업이 완료될 때까지 대기상태가 됩니다. 작업이 짧은 시간에 완료되는 경우라면 약간의 대기시간이 문제되지는 않겠지만 큰 작업들(투영법 변환 같은)을 돌리는 경우라면 대기 시간이 길어질 것입니다. 이런 문제가 자주 발생하게 된다면 라이센스를 8 Works, 16 Works로 업그레이드 하는 것을 고려해볼 필요가 있습니다. 참고로 일정 시간 이상 대기 시간이 길어질 경우 작업 실패 메시지를 보내는 설정이 가능합니다.
  7. 256 Works 라이센스를 사용한다고 할 때, 256Core CPU가 현존하지 않으므로 의미가 없는 것 아닌가요?
    Exelis VIS가 제시하는 일반적인 CPU 견적은 1Work당 2Core입니다. 물론 8Core CPU를 가진 서버에서 사용자 요청이 단 1개라면 IDL/ENVI가 알아서 8Core에 모두 일을 분산합니다. 하지만 Service 개념에서는 어쨌든 수용 가능한 동시접속자 수를 생각해야 하므로, 1Work 당 2Core 정도를 생각하면 무난하다는 것이 Exelis VIS의 제안입니다. 즉, 16명 정도가 동시에 접속해서 작업을 요청하는 서비스를 계획하고 있다면 32 cores 정도의 H/W를 계획하는 것이 좋다는 것입니다. 64명 동시 접속을 계획한다면 128 cores 정도를 생각하면 되겠지요. 여기서 잠깐… 128 core를 가진 컴퓨터를 구축하는 것은 불가능하잖아요. 이럴 때는 16 core 컴퓨터 8대를 구축하고 그 앞에 대표 서버(Master Server라고 합니다)를 하나 놓으면 됩니다. 대표서버가 작업을 각각의 서버(Node 라고 합니다)에 할당하는 역할을 합니다. 이러한 장치가 되어 있기 때문에 ESE의 홍보 문구에는 scalable(선형적 확장성)을 제시하고 있습니다. 사실 놀라운 기술은 아닙니다. 대부분의 웹서버 소프트웨어가 이런 기능을 가지고 있어요. 

    ESE 서비스 클러스터 컴퓨팅환경 개요(그림 출처 : Exelis VIS)

    ESE 서비스 클러스터 컴퓨팅환경 개요(그림 출처 : Exelis VIS)

  8. SARscape나 ENVI Lidar 서비스도 가능한가요?
    IDL로 구현된 프로그램이라면 서비스에 올릴 수 있습니다. 그 얘기는 IDL로 호출할 수 있는 ENVI API를 사용하여 개발된 프로그램도 서비스에 올릴 수 있다는 얘기가 됩니다. 그런 이유로 제품 이름이 ENVI Service Engine으로 붙였는데도, IDL Service Engine이라고 불리기도 하는 것 같습니다. SARscape와 ENVI Lidar는 현재 모든 기능이 IDL API로 제공되지는 않습니다. 아직 많은 기능이 API로 열려있지 않아요, 사실. 점차 늘어나는 추세지만. 어쨌든 IDL API가 제공되는 기능들은 ENVI Service Engine으로 서비스할 수 있습니다. 물론 이 경우 SARscape와 ENVI Lidar 라이센스가 별도로 필요합니다. 기본 팩에는 IDL, ENVI, NITF 라이센스, 그리고 Feature Extraction까지 포함되어 있습니다.
  9. IDL 처럼 모든 운영체제에 사용 가능한가요?
    클라이언트 부분은 개발자가 구현하기 나름입니다. 웹으로 구현할 경우 모든 운영체제 가능이라고 생각할 수 있을 것 같고, 스마트폰 앱일 경우 Android와 iOS를 각각 따로 개발해 주거나 Mobile Web으로 개발하면 범용적으로 쓸 수 있겠지요. 서버 파트는 현재 64bit Linux용 ESE와 64bit Windows용 ESE만 출시되어 있는 상황입니다. ENVI Lidar가 아직 Windows만 지원되는 상황이고, SARscape도 Linux와 Windows만 지원하는 것도 참고하십시오. 아마 앞으로도 Mac OS X용 ESE나 Solaris용 ESE가 나올 것 같지는 않습니다. 가격이 높은데다가 Linux나 Windows에 비해 서버로서의 장점이 두드러지는 면이 없기 때문입니다.
  10. 서버 관리를 위한 도구가 제공되나요?
    기본적인 서버관리는 다른 서버와 전혀 다를 것이 없습니다. ESE에는 관리자 페이지가(ESE는 크게 보면 웹서버입니다) 있어서 이곳에 로그인하면 서버 관리를 할 수 있습니다. 이곳에서 서비스 프로그램을 올리고 테스트 해볼 수도 있고, 진행중인 작업들에 대한 모니터링을 할 수도 있습니다. 서버에서 받은 사용자 요구에 대해 처리 시간, 처리 결과 등을 조회할 수도 있고, 서버(ESE 서비스 클러스터 전체)의 작업 부하를 감시할 수도 있습니다. 

    ESE 관리자 도구 중 작업 관리자

    ESE 관리자 도구 중 작업 관리자