일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- rember me
- spring security
- @SqlResultSetMapping
- spring jpa
- maven
- jstl
- custom filter
- GEventEvaluator
- CEP
- MySQL
- jenkins
- jquery serialize
- COC
- spring transaction
- JPA
- jquery
- gwt
- Hudson
- gwt-ext
- drools
- guvnor
- JBoss Seam
- bootstrap jquery datepicker
- ibatis
- Drools Fusion
- java tip
- zabbix
- Spring
- querydsl
- SVN
- Today
- Total
봉 블로그
node.js 기초 본문
node.js 는 javascript 로 서버프로그램을 개발하는 플랫폼이다.
페이팔이 node.js 로 서버프로그램을 교체하고 나서 평균응답시간의 35% 나 감소했다죠.
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
자바에서 웹어플을 개발하려면 tomcat 이나 jboss 같은 was 가 필요하지만, node.js 는 10줄도 안되는 코드로 간단한 웹어플을 개발할수 있다. 개발 생산성은 정말 좋다.
node.js 만으로는 file io 또는 db 연동등을 할수 없기때문에 node packaged moudle 라는 것을 npm 이라는것으로 설치하여 개발하면된다. npm 은 마치 linux 의 yum 과 같이 필요한 모듈들을 자동으로 설치해준다. 매우 편하다.
자체 성능테스트결과 single process 기반의 node.js 는 자바 애플리케이션에 비해 성능이 안좋지만, cluster 기반의 multi process 환경으로 구동하면 월등히 성능이 좋다.
http://nodejs.org/api/cluster.html
cluster 기반으로 node.js 를 구동하면 master process + cpu 개수 만큼의 worker 프로세스가 기동된다.
redis 연동과 관련해서는 (redis 모듈기준) single clinet 기반의 애플리케이션이 generic-pool 기반 client pool 기반보다 성능이 훨신좋다. 굳이 generic-pool 을 사용할 필요가 없다.
MVC Pattern 개발
express 를 이용하면 mvc pattern 개발이 가능하다. 하지만, spring framewok 과 같은 성숙함에는 많이 못미친다.
Query Mapping based ORM (MyBatis)
mybatis 같은 모듈은 없는것같다. (있다면 알려주세요. ^^) 하지만, mysql 모듈의 custom pattern 을 이용하면 비슷하게 흉내낼수 있다. https://github.com/felixge/node-mysql#custom-format
그래도 mybatis 처럼 다양한 dbms 를 지원하는 단일 프레임워크가 없다는것이 아쉽니다. 하지만, 자바의 하이버네이트같은 sequelize 라는것을 많이 사용하는 모양이다.
Logging
java 에서는 slf4j, log4j 같은 오픈소스 진영에서 거의 표준과 같이 사용하는 library 가 있는데 반해. node.js 관련 패키지는 그러한 모듈이 없다. 각 모듈별 로깅방식이 따로 정의되어 있다. 비즈니스 로직개발은 winston 을 이용해 로깅표준을 정하면 될것 같은데, 로깅설정을 중앙집중적으로 설정하기 위한 별도의 커스터마이징이 필요하다.
node.js 가 개발생산성이 매우 좋긴 하지만, 코드리뷰를 하지 않는 우리나라 현실에서는 시스템 규모가 커지만 자바와 다를게 없을것 같다는 생각이 든다. 오히려 자바가 더 나을듯.
성능이 매우 중요하고 node.js 개발 인력을 안정적으로 수급할수 있는 확신이 있다면, node.js 는 매우 좋은 대안이 될수 있다. 그렇지 않다 해도 소규모의 웹어플이라면 역시 도입해볼만하다.