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의 장단점에 대해서 (21) | 2014.03.09 |
Node.JS와 Vert.x 비교 (4) | 2014.02.23 |
Single Threaded Model이라서 더 빠르다? No.!! (1) | 2014.02.16 |
비동기 네트워크 서버 프레임웍 Vert.x 소개 (15) | 2014.02.04 |
Vert.x transport layer security (0) | 2014.02.03 |
댓글을 달아 주세요
비밀댓글입니다
좋은 글 감사합니다.
그런데 nodejs의 단점 중 "한 node 인스턴스당 CPU 코어 1개 이상 사용이 불가함" 라는 말은 어떤 의미인지 잘 이해가 안가네요~^^;
nodejs가 제공하는 built-in module중 cluster 모듈을 이용하면 multi-process로 동작 가능합니다
감사합니다. 많은 분들이 같은 피드백을 주셨는데요.
Vert.x는 구조상, 하나의 프로세스로도 멀티 코어를 사용할 수 있는 구조이고. (여러개 의 쓰레드를 띄워서)
Node.js는 구조상 Single Thread이기 때문에, 하나의 node.js는 하나의 CPU 밖에 못 사용한다는 차이를 설명하기 위함입니다. 당연히 여러개의 Process를 띄우면 여러 CPU 사용이 가능합니다.
"node 인스턴스당 CPU 코어 1개" 인스턴스당 1개 입니다. :)