정보공간_1

[4기 부산 오세빈] 서버 프레임워크 VERT.X 소개와 활용 본문

IT 놀이터/Elite Member Tech & Talk

[4기 부산 오세빈] 서버 프레임워크 VERT.X 소개와 활용

알 수 없는 사용자 2013. 10. 26. 03:25

VERT.X  Server Framework


얼마전 "올해가 가기 전에 반드시 배워야 할 6가지 IT기술" 이라는 제목으로 Andrew C. Oliver 라는 분이 작성한 글을 읽은 적이 있었습니다. 그 6가지는 다음과 같습니다.

(http://likelink.co.kr/23844 <- 글 전문을 읽어보시고 싶으시면 여기로 들어가시면 됩니다.)


1. Hadoop, 2. MongoDB, 3. Scala, 4. Node.js, 5. C/C++ or Assembly, 6. Git


모두 의미있는 것들이라 생각되지만 여러 프로젝트를 경험하면서 Node.js 와 MongoDB 부분은 꼭 짚고 넘어가고 싶은 부분이라고 생각됩니다. 최근 대부분의 서비스나 프로그램들이 Server와 Database를 이용하기 때문입니다.


특히, Node.js 는 이벤트 기반의 Non-blocking 방식으로 굉장히 많은 장점을 가지고 있는 서버 프레임워크입니다. 아마 멤버십 회원 또는 개발자분들께서 Node.js에 대해서는 잘 알고 계실거라 생각이 듭니다.

그래서 이번에 Vert.x 라는 것을 소개할까 합니다.



Vert.x 또한 Node.js와 마찬가지로 이벤트 기반의 비동기식으로 동작하는 서버 프레임워크입니다. 공식 문서에 따르면 Vert.x 는 쉽게 확장 가능하고 비동기의 병렬 어플리케이션을 위한 차세대 프레임워크라고 되어 있습니다.



이런 Vert.x 는 다양한 언어, 간단함, 확장성, 동시성, 분산 이벤트 버스 등과 같은 장점들을 가지고 있습니다. 무엇보다 JVM 기반으로 설계되었기 때문에 JVM이 지원하는 Javascript, Ruby, Python, Java 언어에서 손 쉽고 빠르게 구현이 가능합니다.


이제 Vert.x 의 중요한 개념 2가지를 살펴보겠습니다.


1. Verticle

Vert.x 에서 하나의 배포 단위를 verticle 이라고 부릅니다. 현재 JVM 기반의 JavaScript, Ruby, Java 등으로 작성이 가능하구요. Verticle은 메인 스크립트를 가지고 동작합니다(자바의 경우는 클래스). 또한 메인에서 참조하는 다른 스크립트 파일들도 참조 가능하구요. 자바에서는 당연히 jar파일들을 이용할 수 도 있겠죠. 어플리케이션을 구성할 때 하나의 verticle로 작성할 수 도있고 각각의 verticle이 이벤트 버스로 통신하는 구조로 작성할 수 도 있습니다.


2. 인스턴스

Verticle 들은 한 Vert.x의 인스턴스에서 실행됩니다. 하나의 vert.x 인스턴스는 JVM 인스턴스 내에서 동작하게 되구요. 물론 인스턴스 내에서 여러 verticle이 한번에 실행될 수 있습니다. 그리고 각자의 classloader를 가지기 때문에 verticle 분리가 가능하죠.

중요한 건 인스턴스들은 같은 호스트나 같은 네트워크 상의 다른 호스트에서 동작할 수 있기 때문에 인스턴스들을 분산 이벤트 버스 방식으로 구성할 수 있습니다. 즉 클러스터 구성이 가능하다는 이야기가 됩니다.



여기서 한가지 흥미롭게 살펴볼 내용이 있는데 한 블로그에서 Vert.xNode.js 를 성능 테스트 한 결과가 있습니다. 단순한 HTTP 서버를 만들고 간단한 요청/응답 기능만 있기 때문에 정확한 성능 분석이라기 보다 상대적인 퍼포먼스 차이를 보면 될 것 같습니다.

출처 :  http://vertxproject.wordpress.com/2012/05/09/vert-x-vs-node-js-simple-http-benchmarks/




TEST 1 에서는 단순한 OK 응답만 주는 서버를 구성했을 경우이고 TEST 2는 작은 용량의 Static 파일을 제공하는 서버로 구성되어 있습니다.



여러 환경 변수들이 존재하겠지만 일단 현재 테스트된 환경에서는 Vert.x가 훨씬 나은 성능을 보여주고 있다는 겁니다. 물론 Node.js 또한 굉장히 잘 구성된 Server Framework 이지만 개발자라면 보다 많은 Framework를 다루어 봐야 겠죠?


그런 의미에서 예제를 통해서 Vert.x로 간단한 서버를 구성해보도록 하겠습니다.

일단 Vert.x 배포판을 다운받아서 적당한 곳에 압축 해제를 한 다음 bin 디렉토리를 환경 변수 PATH에 등록을 해주시면 됩니다.


그리고 버전확인을 위해서 콘솔에 다음과 같이 입력하면



해당 버전이 확인이 되고 설치가 완료된 겁니다.

자 그러면 간단한 웹 서버를 구성해봅시다. 다음은 JavaScript를 이용한 것입니다.

server.js 라는 파일을 만들고 아래와 같이 타이핑을 해서 저장해둡니다. Node.js 를 이용해서 서버를 구성해보신 분이라면 정말 비슷한 코드라고 생각할 수 있을겁니다.



타이핑 하고 저장된 server.js 파일을 실행하기 위해서는 다음과 같이 실행하면 됩니다. 실행 명령어도 Node.js와 흡사하죠?ㅎ



자 그러면 해당 IP의 포트 8080으로 웹서버가 구성되었습니다. http://ip:8080 (http://localhost:8080)으로 접속해보시면 됩니다. 정말 쉽게 웹서버가 구성되었죠?


본인이 Java가 더 편하다고 생각하시는 분은 Java를 이용해서 코딩해도 됩니다.

다음은 Java를 이용해서 구성한 것이구요. Java 소스는 컴파일이 필요업습니다. 마치 스크립트 언어처럼 실행 가능하죠. 똑같이 vertx run server.java 라고 실행하면 됩니다.



좀 더 많은 내용과 자세한 튜토리얼을 보고싶으신 분은 Vert.x 홈페이지나 한국어로 변역된 사이트가 따로 있습니다. 여기에서 좀 더 많은 내용을 얻어가시길 바랍니다.


홈페이지 :  http://vertx.io/

한국어홈페이지 : http://vertx-kor.otofu.me/


또한 Github에 오픈소스로 공개되어 있기 때문에 여러분이 직접 코드를 살펴볼 수도 있고 개발에 참여하실 수도 있습니다.


GidHub : https://github.com/eclipse/vert.x