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간의 상태 공유 메세징 가능 |
에코시스템 |
매우 풍부. 레퍼런스,서적,교육,컨설팅 기관 |
공식 서적 2개 (2권다 100페이지
이하)) |
성능 |
열세 |
우세 |
한 마디로 정리하면, Vert.x는 HazelCast기반의 IMDG (In memory data grid)를 가지고 있어서, 클러스터링 기능이 좋으며, JVM기반으로, 여러 개의 Verticle을 동시에 띄어서 CPU 사용률을 극대화 함에 따라 더 높은 성능을 낼 수 있으며, 여러 프로그래밍 언어를 지원한다. 기술적으로는 Vert.x가 우세적인 면이 있으나, 아직 에코 시스템이 제대로 형성되지 않아서 기술 지원이나 자료를 구하기가 어려워, 기술 습득이나 운영 유지보수에서는 Node.JS가 우세이다.
'클라우드 컴퓨팅 & NoSQL > Vert.x & Node.js' 카테고리의 다른 글
Node.js에서 주로 사용되는 모듈 (3) | 2014.03.11 |
---|---|
node.js의 장단점에 대해서 (23) | 2014.03.09 |
Single Threaded Model이라서 더 빠르다? No.!! (1) | 2014.02.16 |
비동기 네트워크 서버 프레임웍 Vert.x 소개 (15) | 2014.02.04 |
Vert.x transport layer security (0) | 2014.02.03 |