2017년 1월 31일 화요일

Node.JS와 Vert.x 비교

Node.js vs Vert.x 비교

간단하게 정리해본 Node.JS Vert.x의 장단점 비교,
두 서버 모두 C10K 문제를 해결 하기 위한 Single Thread 기반의 고성능 비동기 서버이다.
C10K 문제는 대용량 (10,000개이상의 동시 커넥션을)처리 하기 위한 문제로 전통적인 Tomcat등의 WAS에서는 이 문제를 해결할 수 없다 들어온 request는 무조건 큐잉이 되었다가 뒷단의 멀티 쓰레드에 의해서 작업이 처리되는데 이 멀티 쓰레드의 수 만큼만 동시 사용자를 처리할 수 있는 개념이다.
반대로 이 두 서버들은 일단 Connection이 연결되면연결된 socket들을 물고 있다가, Single Thread Event Loop가 고속으로 돌면서, socket에 들어온 메세지들을 처리하고 빠지는 구조이기 때문에 하나의Thread임에도 불구하고동시에 여러 사용자를 처리할 수 있는 장점을 가지고 있다.
Vert.x Node.js에 영감을 받고 만들어진 서버이기 때문에그 특성이 매우 비슷하지만장단점이 극명하게 들어난다.

Node.js
Vert.x
내부 엔진 기반
Google Chrome V8 자바스크립트 엔진
libuv 기반의 비동기 처리 IO
Netty 기반의 NW IO
Hazel Case 기반 클러스터링
구현언어
C
Java
사용가능 언어
Javascript(애플리케이션), C (네이티브 모듈)
Python,JavaScript,Java,Groovy,Scala
외부 모듈
40,000개 이상
100개이하
클러스터링
한 하드웨어에 여러개 node.js를 띄울 수 있음. Node.js 인스턴스간 상태 Share 불가
한 하드웨어에 여러개의 vertx를 띄울 수 있음. node간의 상태 공유 메세징 가능
(HazelCast 기반)
에코시스템
매우 풍부레퍼런스,서적,교육,컨설팅 기관
공식 서적 2 (2권다 100페이지 이하))
컨설팅,교육 업체 없음
성능
열세
( node 인스턴스당 CPU 코어 1개 이상 사용이 불가함)
우세
(JVM 기반으로 하나의 vert.x인스턴스에 여러개의 verticle 인스턴스를 띄워서 CPU 사용률을 극대화 할 수 있음)
한 마디로 정리하면, Vert.x는 HazelCast기반의 IMDG (In memory data grid)를 가지고 있어서클러스터링 기능이 좋으며, JVM기반으로여러 개의 Verticle을 동시에 띄어서 CPU 사용률을 극대화 함에 따라 더 높은 성능을 낼 수 있으며여러 프로그래밍 언어를 지원한다기술적으로는 Vert.x가 우세적인 면이 있으나아직 에코 시스템이 제대로 형성되지 않아서 기술 지원이나 자료를 구하기가 어려워기술 습득이나 운영 유지보수에서는 Node.JS가 우세이다.

댓글 없음:

댓글 쓰기