클라우드 컴퓨팅 & NoSQL/Vert.x & Node.js 43

빠르게 훝어 보는 node.js - #2 설치와 개발환경 구축

빠르게 훝어보는 node.js#2 - 설치와 개발환경 구축조대협 (http://bcho.tistory.comNode.js 설치하고 개발환경 설정하기다운로드 하기http://www.nodejs.org 페이지에서 install 버튼을 누르면 OS에 맞는 인스톨러를 다운로드 해준다. 다음으로 installer를 실행한다. 설치가 되었으면, 설치된 디렉토리를 PATH에 추가한다. set PATH=%PATH%;c:\dev\was\nodejs자아 이제 node.js가 설치되었는지 확인하자. node.js는 대화형 cli를 제공한다. 설치를 끝냈으면 이제 간단한 웹서버를 만들어보자var http = require('http');http.createServer(function(request, response) {res..

빠르게 훝어보는 node.js #1 - node.js 소개 및 내부구조

빠르게 훝어보는 node.js#1 – node.js의 소개와 내부 구조 조대협 (http://bcho.tistory.com) 요즘 들어서 새로운 기술에 대한 인식도 많이 떨어지고, 공부하는 것도 게을러 져서, 어쩌다 보니 우연한 기회에 스터디를 하게 되었습다. 스터디 주제는 팀원들이 골랐기 때문에 자연히 따라가게 되었는데, 주제는 무려 node.js. 때 맞침 vert.x를 보고 있었기 때문에, 유사 솔루션을 보는 것도 괜찮겠다고 해서 스터디를 시작했는데, 몇주가 지난후에 지금까지 스터디를 하면서 node.js에 대한 내용을 가볍게 정리해보고자 한다. node.JS에 대한 소개node.js는 single thread 기반으로 동작하는 고성능의 비동기 IO (Async / Non-blocking IO)를 ..

Node.js에서 주로 사용되는 모듈

Node.js는 일종의 개발 플랫폼이자 WAS같은 미들웨어이다.이를 사용하기 위해서는 MVC 프레임웍에서 부터, 빌드, 데이타 베이스등 다양한 관련 컴포넌트들이 필요한데, 에코 시스템이 너무 커서 주로 사용되는 모듈등을 찾기가 힘들다.https://nodejsmodules.org/tags/build 를 보면, 분야별 인기있는 모듈을 볼 수 있고아래는 일반적인 애플리케이션을 개발하는데 필요한 모듈을 정리하였다. Category Module Programming framework Async MVC Framework Express Template Engine EJS Logging Winstone Testing Mocha, nodeunit Authentication Passport Build script Gru..

node.js의 장단점에 대해서

요 몇주간, node.js에 대해서 공부를 해오고 있습니다. 그간 공부해온 내용과, 기존에 node.js를 사용하셨던 분들과의 토론을 기반으로 node.js에 대한 장단점을 간략하게 정리합니다. Node.JS에 대해서.Node.js는 구글의 크롬 V8 자바스크립트 엔진을 기반으로 한, 고성능 네트워크 서버이다.Single Thread 기반의 Event Loop를 기반으로 하고 있으며, File, Network 등에 대해서 비동기 IO 처리를 하는 서버 미들웨어이다.근래에 들어서 다시금 node.js 가 많은 주목을 받고 있는데, Paypal이나 Groupon과 같은 굴지의 서비스 기업들이 내부 서버 플랫폼을 node.js로 전환하는 것이 계기가 되고 있다.Node.js의 장점Node.js는 일반적으로 성..

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에 들어온 메세지들을 처리하고..

Single Threaded Model이라서 더 빠르다? No.!!

Single Threaded Model이라서 더 빠르다? No.!! Vert.x나 Node.JS와 같은 Single Threaded 모델의 서버들이 내세우는 장점이, Single Thread Model이기 때문에, Context Switching이 없고, 이로 인해서 성능이 더 빠르다. 라는 논리인데, 사실 DB나 File IO가 있을 경우, 뒷단의 Thread Pool에 request & call back 형식으로 처리를 하고 있기 때문에, 이 경우에는 Single Thread Model이 아니라 Multi Thread Model이 되고, 이 Thread Pool들의 Thread로 인한 Context Switching이 발생하게 된다. 이런 IO Call이 없는 경우 (Thread Pool로 작업을 보..

비동기 네트워크 서버 프레임웍 Vert.x 소개

비동기 네트워크 서버 프레임웍 Vert.x조대협 * 서문Vert.x는 NodeJS와 같은 비동기 소켓서버 프레임웍이다.Vert.x에 대한 이해를 돕기 위해서, Tomcat과 같은 WebApplication Server(이하 WAS)에 대해서 먼저 간단하게 짚고 넘어가자. Tomcat의 경우에는 HTTP request가 들어오면, request가 앞의 request Queue에 쌓이게 된다.쌓이게된 request들은 Thread Pool에 있는 Thread에게 하나씩 할당되어, request를 처리하고, 작업이 끝나면, request가 들어온 connection으로 response를 보낸후, 작업을 끝낸다. 작업이 끝난 Thread는 다시 Thread Pool로 들어간다.이런 구조에서, Tomcat이 순간..

Vert.x transport layer security

Vert.x를 보면서, HTTP단이야 HTTPS로 Security 보장이 된다지만, TCP/IP Server는 어떻게 하는가가 의문이었는데, 이부분도 이미 다 준비되어 있다. Configuration 몇줄 만으로 TLS가 지원 된다. http://vertx.io/core_manual_java.html#ssl-serversNetServer server = vertx.createNetServer() .setSSL(true) .setKeyStorePath("/path/to/your/keystore/server-keystore.jks") .setKeyStorePassword("password"); 아무리 봐도 잘만들었어...

요 몇일 Vert.x를 분석해보고.. (메모)

요즘 대용량 Concurrent 처리가 가능한 프레임웍을 보는중 Vert.x를 보고 있는데.한마디로 정말 예술적으로 잘 만들었다.MINA를 기반으로 하고 있기 때문에 대용량, 고속 네트워크 처리에 능함Python,java,js,scala,groovy등 다양한 언어를 지원프레임웍 형식으로 매우 직관적이며 코딩양이 매우 적음instance 개념을 도입하여 isolation 을 해줌으로써 multi thread 처리가 필요 없으면서, 같은 코드를 여러개의 instance에 로딩해서 각기 다른 thread에서 수행하게 해서 마치 multi thread와 유사한 성능을 냄. - 이런 구조는 Tuxedo의 Service 개념과 유사함. 이 구조 때문에, multi core machine에서는 node.js보다 성능..

Vertx 개념 잡기 (instance,thread,classloader,standard verticle,worker verticle)

Vertx 개념 잡기 (instance,thread,classloader,standard verticle,worker verticle) l Verticle :Vert.x의 하나의 애플리케이션 일종의 Vertx 판 Servlet이라고 이해하면 빠름Ÿ 기본 특성 : 독립된 Class Loader에서 독립된 Oject로 존재함 > Multi threading 문제가 발생하지 않음.Ÿ ELP (Event Loop) Verticle : 일반 Verticle. 항상 같은 Thread에서만 돈다. 같은 Verticle은 여러개의 Verticle instance로 존재할 수 있으며, 동시에 각각의 Thread에서 수행하는 것이 가능함.Ÿ Worker Verticle – ( Q에서 subscribe 받아서 뒤에서 비동기..