웹GIS는 수년 동안 사용자들에게 효율적이고 정확한 공간정보를 제공하기 위해 최신 웹기술을 기반으로 발전해왔다. 또한 웹GIS 서버는 클라이언트의 요청을 빠르게 연산 처리하고 공간정보 서비스를 제공하기 위해 성능개선을 지속해왔다. 본 연구에서는 서버 개발에 자바스크립트(JavaScript)를 사용하는 이벤트 기반의 비동기식 I/O 처리가 가능한 프레임웍 기술인 Node.js를 활용하여 NodeMap이라고 이름붙인 웹GIS 서버를 설계하고 구현하였다. NodeMap은 기본적으로 OGC표준 인터페이스를 지원하는 웹GIS 서버이다. 이를 위해 공간 인덱스 및 표준 공간쿼리 함수를 지원하는 DBMS를 활용하여 GIS 데이터를 처리하도록 하였다. 그리고 공간 정보를 타일 맵 위에 렌더링 하기 위해 HTML5 Canvas를 지원하는 Node-Canvas 모듈을 활용하였다. 마지막으로 Node.js의 가장 많이 쓰이는 커넥트 모듈 기반의 프레임웍인 Express 모듈을 활용하였다. 구현된 NodeMap은 성능테스트를 통해 향 후 웹GIS 서버개발기술로서 Node.js의 활용 가능성을 확인하였다. 본 연구를 통해 기존 서버 개발 기술과 차별화된 기술인 Node.js를 웹GIS 서버 구현에 우선적용 함으로서 향 후 인터넷 GIS 서비스에서의 활용 가능성을 제시하였다.
웹GIS는 수년 동안 사용자들에게 효율적이고 정확한 공간정보를 제공하기 위해 최신 웹기술을 기반으로 발전해왔다. 또한 웹GIS 서버는 클라이언트의 요청을 빠르게 연산 처리하고 공간정보 서비스를 제공하기 위해 성능개선을 지속해왔다. 본 연구에서는 서버 개발에 자바스크립트(JavaScript)를 사용하는 이벤트 기반의 비동기식 I/O 처리가 가능한 프레임웍 기술인 Node.js를 활용하여 NodeMap이라고 이름붙인 웹GIS 서버를 설계하고 구현하였다. NodeMap은 기본적으로 OGC 표준 인터페이스를 지원하는 웹GIS 서버이다. 이를 위해 공간 인덱스 및 표준 공간쿼리 함수를 지원하는 DBMS를 활용하여 GIS 데이터를 처리하도록 하였다. 그리고 공간 정보를 타일 맵 위에 렌더링 하기 위해 HTML5 Canvas를 지원하는 Node-Canvas 모듈을 활용하였다. 마지막으로 Node.js의 가장 많이 쓰이는 커넥트 모듈 기반의 프레임웍인 Express 모듈을 활용하였다. 구현된 NodeMap은 성능테스트를 통해 향 후 웹GIS 서버개발기술로서 Node.js의 활용 가능성을 확인하였다. 본 연구를 통해 기존 서버 개발 기술과 차별화된 기술인 Node.js를 웹GIS 서버 구현에 우선적용 함으로서 향 후 인터넷 GIS 서비스에서의 활용 가능성을 제시하였다.
Web GIS, based on the latest web-technology, has evolved to provide efficient and accurate spatial information to users. Furthermore, Web GIS Server has improved the performance constantly to respond user web requests and to offer spatial information service. This research aims to create a designed ...
Web GIS, based on the latest web-technology, has evolved to provide efficient and accurate spatial information to users. Furthermore, Web GIS Server has improved the performance constantly to respond user web requests and to offer spatial information service. This research aims to create a designed and implemented Web GIS Server that is named as Nodemap which uses the emergent technology, Node.js, which has been issued for an event-oriented, non-blocking I/O model framework for coding JavaScript on the server development. Basically, NodeMap is Web GIS Server that supports OGC implementation specification. It is designed to process GIS data by using DBMS, which supports spatial index and standard spatial query function. And NodeMap uses Node-Canvas module supported HTML5 canvas to render spatial information on tile map. Lastly, NodeMap uses Express module based connect module framework. NodaMap performance demonstration confirmed a possibility of applying Node.js as a (next/future) Web GIS Server development technology through the benchmarking. Having completed its quality test of NodeMap, this study has shown the compatibility and potential for Node.js as a Web GIS server development technology, and has shown the bright future of internet GIS service.
Web GIS, based on the latest web-technology, has evolved to provide efficient and accurate spatial information to users. Furthermore, Web GIS Server has improved the performance constantly to respond user web requests and to offer spatial information service. This research aims to create a designed and implemented Web GIS Server that is named as Nodemap which uses the emergent technology, Node.js, which has been issued for an event-oriented, non-blocking I/O model framework for coding JavaScript on the server development. Basically, NodeMap is Web GIS Server that supports OGC implementation specification. It is designed to process GIS data by using DBMS, which supports spatial index and standard spatial query function. And NodeMap uses Node-Canvas module supported HTML5 canvas to render spatial information on tile map. Lastly, NodeMap uses Express module based connect module framework. NodaMap performance demonstration confirmed a possibility of applying Node.js as a (next/future) Web GIS Server development technology through the benchmarking. Having completed its quality test of NodeMap, this study has shown the compatibility and potential for Node.js as a Web GIS server development technology, and has shown the bright future of internet GIS service.
* AI 자동 식별 결과로 적합하지 않은 문장이 있을 수 있으니, 이용에 유의하시기 바랍니다.
문제 정의
이에 본 연구는 급변하는 웹 환경에 빠르게 적응하고 끊임없이 출현하고 있는 최신 기술들을 선적용하는 것으로 기존 시스템보다 향상된 성능과 기술을 제공하기 위한 웹GIS 서버를 설계 하고 구현하고자 한다. 우선 구현하고자 하는 서버는 기존의 서버 구현기술과 차별화된 기술을 적용하여 OGC기반 인터페이스 표준 서비스를 지원하고 개방형 클라이언트 개발 환경을 제공하는 웹GIS 서버 엔진 구현을 목적으로 한다. 본 연구에서 구현할 서버는 2009년 Ryan Dhal에 의해 개발된 자바스크립트 기반의 차세대 웹 플랫폼 개발기술인 Node.
이에 본 연구는 급변하는 웹 환경에 빠르게 적응하고 끊임없이 출현하고 있는 최신 기술들을 선적용하는 것으로 기존 시스템보다 향상된 성능과 기술을 제공하기 위한 웹GIS 서버를 설계 하고 구현하고자 한다. 우선 구현하고자 하는 서버는 기존의 서버 구현기술과 차별화된 기술을 적용하여 OGC기반 인터페이스 표준 서비스를 지원하고 개방형 클라이언트 개발 환경을 제공하는 웹GIS 서버 엔진 구현을 목적으로 한다.
제안 방법
Node.js의 모듈 중 PostGIS의 메소드에 쉽게 접근할 수 있는 pg 모듈을 npm 레지스트리에서 다운받아 설치하고 NodeMap에 삽입하여 활용하였다. NodeMap은 pg모듈을 통해 Node.
js의 가장 큰 기술적 특징 비동기식으로 I/O를 처리하기 때문에 대규모 리퀘스트 처리에 적합하다. NodeMap의 향 후 활용 가능성을 검증하기 위해 성능테스트 벤치마킹 도구인 NodeLoad를 활용해 현재 국내의 웹GIS 관련 공공 프로젝트에서 가장 보편적으로 사용되고 있는 상용 웹GIS 엔진 후보군 4개 중 본 연구에서 비교테스트 할 수 있는 환경이 구축된 A서버와 B서버를 NodeMap과 성능비교 테스트를 수행했다. A서버는 C++, B서버는 자바(Java)로 구현된 서버 엔진이다.
js에서 가장 많이 활용되고 있는 express모듈을 활용하여 웹 요청을 처리하고 응답하는 역할을 하도록 구현하였다. 구현된 NodeMap은 대표적인 국내 웹GIS 서버 엔진들과 성능 비교를 위한 벤치마킹 테스트를 수행하였다. 이를 통해 NodeMap의 향 후 활용 가능성을 확인할 수 있었다.
그냥 함수로써, 혹은 패키지로써 DBMS를 처리 하는 데이터 처리 방법과 이미지 프로세싱만으로도 충분히 활용가치가 있다고 볼 수 있으나, Node.js 큰 장점 중 하나인 웹 환경에서 NodeMap이 구현될 수 있도록 웹 응답처리를 구현했다.
사용자에게 GIS 데이터를 보여 줄 때 NodeMap은 DBMS에 저장된 공간 데이터를 추출한 후에 모듈을 통해 이미지 처리를 수행한다. 또한 클라이언트의 요청에 응답 처리 하여 최종 서비스를 제공해 주는 절차로 서버를 구현했다. 구현절차는 아래와 같다.
cairo모듈은 Node-Canvas 모듈로서 오픈소스 그래픽 렌더링 패키지로 최근 주목받고 있는 HTML5의 canvas표준 스펙을 준수하고 있다. 또한, NodeMap 의 응답처리를 위해 Node.js에서 가장 많이 활용되고 있는 express모듈을 활용하여 웹 요청을 처리하고 응답하는 역할을 하도록 구현하였다. 구현된 NodeMap은 대표적인 국내 웹GIS 서버 엔진들과 성능 비교를 위한 벤치마킹 테스트를 수행하였다.
모듈을 설치한 후 필요한 데이터 입력을 위해 쉐이프 데이터를 입력하는 모듈을 개발해서 레이어에 데이터를 입력하고, GeoJSon으로 레이어에서 데이터를 얻어오도록 구현 했다. Figure 1은 pg모듈을 통해 DBMS와 통신해 공간쿼리를 수행하는 것을 나타낸다.
본 연구는 Node.js를 활용해 개방형 웹GIS 서버 엔진 NodeMap을 구현하였다. 일반적으로 기존 서버 엔진들은 스레드를 생성하는 것으로 동시다발적인 요청들을 처리한다.
본 연구는 기존의 연구에서 제시된 개방형 서버 구조와 Node.js의 장점을 극대화 할 수 있는 최적화된 설계방안을 적용하여 NodeMap을 구현할 것 이다.
기본적으로 NodeMap은 GIS 데이터를 DBMS에 저장하기 위한 데이터 변환모듈을 구현하여 다양한 DBMS를 지원할 수 있도록 설계하였다. 본 연구에서는 기능 단위 테스트를 위해 먼저 오픈소스 기반 DBMS인 Postgres의 PostGIS를 선택했다. PostGIS는 점형, 선형, 면형에 대한 공간 인덱스는 물론 표준 공간함수를 지원해 주기 때문이다.
셋째, GeoJSON형태로 받은 데이터값을 각 행별로 혹은 각 피쳐별로 분석한 후에 추출된 값과 좌표 차이 값을 이용하여 렌더링한다.
우선 NodeMap의 테스트 결과를 살펴보겠다. Figure 4는 NodeMap의 20유저 테스트 결과 그래프로 최하위 최소 응답시간 그래프와 최상위의 최대 응답시간 그래프가 거의 일정한 그래프를 나타내고 있다.
첫째, 지도바운더리와 지도 바운더리를 이용해 계산한 값을 이용해 각 행렬의 값들을 추출한다.
A서버는 C++, B서버는 자바(Java)로 구현된 서버 엔진이다. 테스트 방식은 가상 유저를 20, 50, 100으로 생성하여 20분씩 동일한 공간 데이터 조건의 WMS의 GetMap리퀘스트를 테스트하였다. 아래의 그림과 표는 NodeLoad 테스트 결과로 추출된 결과 리포트이다.
대상 데이터
구현된 NodeMap은 웹GIS 서버 엔진으로 공간 데이터를 처리하기 위해 공간 인덱싱 및 공간 쿼리를 지원하는 DBMS와 GeoJson, WKT, WKB, GML과 같은 OGC 표준 형태의 데이터 아웃풋을 지원한다. 그리고 지도를 표현하기 위해 표준 행렬이미지 렌더링 방식의 cairo모듈을 사용하였다. cairo모듈은 Node-Canvas 모듈로서 오픈소스 그래픽 렌더링 패키지로 최근 주목받고 있는 HTML5의 canvas표준 스펙을 준수하고 있다.
둘째, 요청에 해당하는 공간 쿼리를 DBMS (PostGIS)에 요청하고 쿼리에 대한 결과 값은 GeoJSON 형태로 데이터를 받는다.
이론/모형
Npm 레지스트리에 등록된 모듈 중 가장 잘알려진 웹 서비스 모듈인 expressJS를 사용했다. expressJS는 웹 요청을 받아서 응답을 해주는 역할을 하고 있는데 Node.
우선 구현하고자 하는 서버는 기존의 서버 구현기술과 차별화된 기술을 적용하여 OGC기반 인터페이스 표준 서비스를 지원하고 개방형 클라이언트 개발 환경을 제공하는 웹GIS 서버 엔진 구현을 목적으로 한다. 본 연구에서 구현할 서버는 2009년 Ryan Dhal에 의해 개발된 자바스크립트 기반의 차세대 웹 플랫폼 개발기술인 Node.js를 활용하여 구현하였다. 또한 구현된 웹GIS 서버의 이름을 NodeMap이라 정하였고 구체적으로 다음과 같은 특징을 가진다.
이미지 맵 서버를 구축하기 위해서는 가져온 GIS 데이터를 이미지 위에 렌더링해야 하는데, 이를 위해 Node-Canvas모듈을 사용했다.
성능/효과
100유저 테스트 그래프가 20유저와 50유저 테스트 그래프에 비해 평균 응답시간은 늘어났지만 그래프에서 보듯 응답처리에 있어 요청의 증가에도 안정적인 성능을 확인할 수 있다.
Table 1은 테스트에서 도출된 리포트의 응답시간결과를 추출한 것이다. 20유저에서 50유저로 요청이 증가될 때 평균응답시간이 157.2% 늘어났고 100유저로 요청이 증가했을 때 83.8%의 증가율을 나타냈다. 이는 Node.
3개의 웹GIS서버의 동일한 조건에서의 성능비교테스트 결과 NodeMap의 성능이 빠른 응답시간 속도와 지속적으로 증가되는 요청을 안정적으로 처리할 수 있는 성능을 보여줬다. 이는 Node.
넷째, NodeMap은 이미지 처리에 HTML5 canvas를 지원하는 node-canvas모듈을 사용하여 GIS 데이터를 렌더링 할 수 있게 하였다.
셋째, NodeMap은 공간 쿼리와 공간 인덱스를 제공하는 DBMS에 공간 데이터를 로딩하기 위해 쉐이프 파일을 WKT, WKB 형태로 변환하고 DBMS를 통해 저장된 GIS데이터를 처리할 수 있다.
3개의 웹GIS서버의 동일한 조건에서의 성능비교테스트 결과 NodeMap의 성능이 빠른 응답시간 속도와 지속적으로 증가되는 요청을 안정적으로 처리할 수 있는 성능을 보여줬다. 이는 Node.js로 구현된 NodeMap이 동시다발적 요청이 증가할수록 성능의 우수함이 돋보이는 점을 확인할 수 있다.
첫째, 구현된 NodeMap은 개방형 서버로 공간정보 처리에 OGC 표준 기반의 오픈 소스 클라이언트 개발환경을 제공해 준다. 또한, NodeMap은 스스로 웹서버 역할을 하기도 하면서 프록시서버 역할을 수행하면서 스스로 요청을 보내고 응답받아 처리할 수 있도록 하였다.
A서버는 NodeMap과 마찬가지로 요청이 증가하더라도 안정적인 그래프 곡선을 보여줬다. 하지만 Table2의 응답시간 결과표에서 NodeMap에 비해 평균 응답시간이 조금 높게 나타났고 20유저에서 50유저와 100유저로 늘려가는 테스트의 누적된 결과 응답시간 증가율이 153.8%와 96.4%로 NodeMap과의 비교해 100유저 테스트에서만 다소 응답시간이 크게 늘어난 것을 확인 할 수 있다.
후속연구
js를 활용하는데 참고할 레퍼런스나 모듈들이 부족하기 때문에 실제 프로젝트에서 개발에 어려움이 있을 수 있다[13]. 신생개발환경이라는 단점에도 Node.js가 업계에서 폭발적으로 관심을 받고 있고 향 후 많이 활용된다면 자연스럽게 다양한 모듈들이 개발될 것이고 기술들이 축적되면서 레퍼런스도 부족하지 않게 될 것이다. 실제로 Node.
구현된 NodeMap은 대표적인 국내 웹GIS 서버 엔진들과 성능 비교를 위한 벤치마킹 테스트를 수행하였다. 이를 통해 NodeMap의 향 후 활용 가능성을 확인할 수 있었다.
질의응답
핵심어
질문
논문에서 추출한 답변
자바스크립트는 어디에 주로 활용되었나?
js는 2009년 Ryan Dahl에 의해 개발된 자바 스크립트 기반의 서버 개발을 위한 소프트웨어 이다. 자바스크립트는 주로 서버 사이드 개발에 활용되기보다는 클라이언트 사이드 개발언어로 웹 브라우저 애플리케이션 콘텐츠 개발에 주로 활용됐다. 왜냐하면, 자바스크립트가 실행속도에 있어 C나 C++과 같은 언어에 비해 느리다는 단점 때문이다 [15].
Node.js란?
Node.js는 2009년 Ryan Dahl에 의해 개발된 자바 스크립트 기반의 서버 개발을 위한 소프트웨어 이다. 자바스크립트는 주로 서버 사이드 개발에 활용되기보다는 클라이언트 사이드 개발언어로 웹 브라우저 애플리케이션 콘텐츠 개발에 주로 활용됐다.
Node.js의 속도상의 단점은?
js의 활용에 장점만 있는 것은 아니다. V8 엔진을 사용했다고 하지만 C나 C++로 구현된 서버에 비해 절대적으로 빠르다고 할 수는 없다. 속도의 약점을 극복하기 위해 개발자는 설계단계와 코딩단계에서 이런 부분을 감안하여 개발할 필요가 있다.
Fernandez, P; Bejar, R; Latre, M.A; Valino, J; Banares J. A; Muro-Medrano P. R, 2000, Web mapping interoperability in practice, a Java Approach Guided Open GIS Web Map Server Interface Specification, Proceedings of the 6th EC-GI&GIS Workshop:The Spatial Information Society-Shaping the Future 2000.
HTML5 Canvas, 2013, Last Updated 27 March 2013, http://www.whatwg.org/specs/web-apps/ current-work/multipage/the-canvas-element. html.
Kang, J. H; Baek, I. G; Han, K. J, 2001, Design and Implementation of a Web Map Server based on GML, Paper presented at the autumn conference for Korean Institute of Information Scientists and Engineers, 28(2):88-90.
Lee, H. J; Jun, B. G; Hong, B. H., 2000, Design of Web Map Server for supporting Fusion Service, Journal of Korea Spatial Information System Society, 3(2):109-122.
McCune, R. R , 2011, Node.js Paradigms and Benchmarks, STRIEGEL, GRAD OS F'11, PROJECT DRAFT.
Ministry of Land, Transport and Maritime Affairs, 2010, Design and Implementation of Open API for KOPSS GIS Engine, P.11-16.
Nam, K. W; Ha, S. W, 2009 Awarematics/ WMSServer : Design and Implementation of a Open Source Web Map Service Server, Journal of Korean Spatial Infomation System Society, 11(3):70-72.
Node.js, 2013, Homepage of node.js, www.nodejs.org.
Ousterhout, J, 1995, Why Threads are a Bad Idea(For most purpose), talk given at USENIX Annual Conference.
Paudyal, U, 2011, Scalable web application using node.js and CouchDB, Uppsala University,
Tilkov, S; Vinoski, S, 2010, Node.js:Using JavaScript to Build High-Performance tech-niques, The Sixteenth IEEE symposium on Computers and Communications. http://uu.diva-protal.org/samsh/record.jsf?pid diva2:443102.
Yoon, I. S, 2012, Node.js Programming for Modern Web, Hanbit Media.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.