SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
Introduction to
Nodejs
suhyunjun@gmail.com
전수현
What is nodejs?
● Node.js® is a platform built on Chrome's JavaScript runtime
for easily building fast, scalable network applications. Node.js
uses an event-driven, non-blocking I/O model that makes it
lightweight and efficient, perfect for data-intensive real-time
applications that run across distributed devices.
Current Version: v0.12.2
Nodejs 는 무엇인가?
● 서버 사이드 자바스크립트 기술.
● 기존의 자바스크립트들이 전부 브라우저에서 실행하는 형태였다면 node.js 는 서버사이드에서 실행되는 자바스크
립트. 그래서, 웹서버나 SMTP 서버 등과 같은 서버 프로그램을 작성할 수 있고, http://expressjs.com/ 와 같은 웹 프
레임워크도 있음
● node.js 장점
– V8 - 스크립트 처리하는 인터프리터 중 성능이 좋은 편. http://attractivechaos.github.com/plb/ 같은 것을 보면
(물론 실제 개발 시에는 언어 자체가 병목이 아닌 경우가 많습니다만) 일반 알고리즘 구현 시 V8 자체 퍼포먼스가
좋음. 성능이 어느정도 나오는 스크립트 언어라는 점은 확실히 장점이 됨
– 기본 처리가 비동기 방식. 물론 파이썬의 twisted(이벤트 기반의 네트워킹 엔진) 등이 있지만, 기본 처리들이 다
비동기여서, I/O 나 DB 질의 수행되는 라이브러리쪽까지 비동기 처리가 됨. 자바 보다는 느려도 적은 비용으로 중
간 성능을 낼 수 있다는 것은 장점
– Java Script 프론트엔드 개발자들이 직접 서버 개발을 하기 용이해짐. 또한, 서버-클라이언트가 한 언어로 유지
보수할 수 있음.
http://codingdojang.com/scode/265
Nodejs 의 또 다른 장점
● 가볍다
● 빠르다
– 동시 접속 10만 ~ 25만명 성공(스프라이트를 전송하는 초당 20,000번 트래픽, CPU 점유율 5~40% 불과)
● http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/
● Apache에 비해 http 속도가 3배 빠르다
– http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php
● npm에 다양한 모듈이 존재한다(현재 53,919개)
● javascript로만 개발 가능하다
http://goo.gl/np0Aer
Nodejs 단점
● 이제 겨우 Current version 이 v0.12.2(2015.04.03 기준)이다
– 최초 릴리즈 버전 node-v0.1.100.tar.gz(2011.8.24)
● 이벤트 구동 방식의 프로그래밍 구현이 쉽지 않다
● 실수로 동기 방식의 코드로 개발할 경우, 치명적인 성능 저하를 유발
할 수 있다
http://goo.gl/np0Aer
Nodejs 들어가기 전 이것 부터 알고 가자
비동기 프로그래밍의 이해
서버에서 IO를 처리하다가 지연이 발생하면 다른 요청들은 처리되지 못하고 계속 대기하는 현상이 발생. 대부분의 기업형
서버 플랫폼들은 이 문제를 해결하기 위하여 사용자의 요청을 쓰레드로 처리
http://www.nextree.co.kr/p7292/
Multi-Thread
서버의 요청 처리를 쓰레드에서 처리하도록 하여 병렬처리를 가능하도록 하는 방식. 쓰레드는 서버 CPU 자원을 시분할 형태로 나누어 가짐으
로써 독립실행이 가능하며 다른 요청을 동시에 받을 수 있게 함. Multi-Thread 기반의 서버는 일반적으로 클라이언트의 요청마다 Thread를
발생시킴. 이 말은 동시 접속자 수가 많을 수록 Thread가 많이 발생한다는 의미이며 그만큼 메모리 자원도 많이 소모한다는 의미. 그러나 서버
의 자원은 제한되어 있으므로 일정 수 이상의 Thread는 발생시킬 수 없음.
Multi-Thread 는 이런 근본적인 문제를 안고 있기 때문에 현장에서는 서버를 업그레이드 하거나 Load-Balancing 등으로 분산처리 함. 한편
Multi-Thread 방식은 각 Thread 간의 공유자원 접근시 신중해야 힘. 각 Thread는 독립적인 시점에서 동작하므로 공유자원에 대한 동기화 없
이 접근하면 예기치 않은 결과가 나올 수 있음.
Multi-Thread
병렬처리의 대안 : 비동기 방식
Nodejs의 비동기 처리
Node.js 는 비동기 IO를 지원하며 Single-Thread 기반으로 동작하는 서버이다. Node 서버는 비동기 방식으로 요청을 처리하므로 요청을 처
리하면서 다음 요청을 받을 수 있다. 또한 병렬처리를 Thread 로 처리하지 않으므로 Multi-Thread가 갖는 근원적인 문제에서 자유롭다.
http://www.nextree.co.kr/p7292/
Event Loop는 요청을 처리하기 위하여 내부적으로 약간의 Thread와 프로세스를 사용한다. 이는 Non-Blocking IO 또는 내부 처리를 위한 목
적으로만 사용되지 요청 처리 자체를 Thread로 하지는 않는다. 따라서 Node 서버는 Multi-Thread 방식의 서버에 비하여 Thread 수와 오버
헤드가 훨씬 적다.
이벤트를 처리하는 Event Loop는 Single-Thread 로 이루어져 있다. 즉 요청 처리는 하나의 Thread 안에서 처리된다는 의미이다. 그래서 이벤
트 호출 측에는 비동기로 처리되지만 처리 작업 자체가 오래 걸린다면 전체 서버 처리에 영향을 준다.(이는 Node.js 의 치명적인 약점)
Single-Thread 기반 비동기 처리
나 : 피자 헛뜨에 전화걸어, 피자 한 판을 주문한다.
(포테이토 피자에 갈릭치즈 토핑이랑 치즈크러스터, 모짜렐라 치즈까지 넣어주세염)
나 : 피자가 오는 30분 동안 간단히 베숙희 라빈스 아이스크림과 한라봉 3개를 먹는다.
나: 배달이 오면 피자를 먹는다. 나 혼자. (callback 함수 실행 : 저 혼자 다 먹었어요 뿌잉뿌잉)
Single-threadSingle-threadSingle-thread
나 : 피자 헛뜨에 전화걸어, 피자 한 판을 주문한다.
(포테이토 피자에 갈릭치즈 토핑이랑 치즈크러스터, 모짜렐라 치즈까지 넣어주세염)
나 : 피자가 오는 30분 동안 아무것도 하지 않고 숨만 쉬고 기다린다.
나: 배달이 오면 피자를 먹는다. 이 것도 나 혼자.
Multi-thread
코드로 보는 동기/비동기 방식
http://www.nextree.co.kr/p7292/
동기방식
비동기방식
그림으로 보는 동기/비동기 방식
http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js
http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js
그림으로 보는 동기/비동기 방식
Nodejs 참 좋은데.. 레퍼런스가 있나염?
LinkedIn의 모바일 버전의 전체 서버가 nodejs로 개발되었다는 소문이..
http://venturebeat.com/2011/08/16/linkedin-node/
http://goo.gl/np0Aer
PayPal Engineering 블로그
https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/
Double the requests per second vs. the Java application. This is even more interesting because our initial
performance results were using a single core for the node.js application compared to five cores in Java. We
expect to increase this divide further.
35% decrease in the average response time for the same page. This resulted in the pages being served 200ms
faster— something users will definitely notice
Test suite using production hardware that tested the routes and collected data on throughput and response
time.
Nodejs의 올바른 사용
Node.js 는 Google Chrome V8 엔진 기반으로 동작하며 내부의 Event Loop는 Single-Thread 기반에서 비동기 메시지
를 처리한다. 이러한 Event Loop는 고성능의 병렬처리를 보장하도록 설계되어 있다. 따라서 이벤트에 의해 처리해야 할
단위 작업이 아주 짧은 시간 안에 처리된다면 Node.js의 고성능의 장점을 극대화 할 수 있다.
만일 처리 작업이 CPU를 많이 소모한다든지 대용량 파일을 처리하는 작업이라면 Node.js 는 독약과도 같다. 그러나 IO
작업이 별로 없는 애플리케이션이나 단위 작업이 짧은 메시징 애플리케이션의 경우에는 Node.js는 고성능을 보장해준다.
한편 Node 애플리케이션 개발자가 처리 로직을 비동기로 하지 않고 동기방식으로 구성한다면 Node를 잘못 활용하는 결
과를 낳을 수 있다. 따라서 Node 애플리케이션은 가능한 한 전부 비동기로 처리해야 하며 Node 개발자는 비동기 프로그
래밍 방식에 익숙해져야 할 필요가 있다.
http://www.nextree.co.kr/p7292/
(참고) V8 - 스크립트 처리하는 인터프리터 중 성능이 좋은 편. http://attractivechaos.github.com/plb/ 같은 것을 보면 (물론 실제 개발 시에
는 언어 자체가 병목이 아닌 경우가 많습니다만) 일반 알고리즘 구현 시 V8 자체 퍼포먼스가 좋음. 성능이 어느정도 나오는 스크립트 언어라
는 점은 확실히 장점이 됨
Installing Nodejs
● Download
– https://nodejs.org/download/
● Installing package manager
– Setup with Ubuntu
● curl -sL https://deb.nodesource.com/setup | sudo bash -
● sudo apt-get install -y nodejs
– Setup with Debian (as root):
● apt-get install curl
● curl -sL https://deb.nodesource.com/setup | bash -
● apt-get install -y nodejs
● apt-get install -y build-essential (optional:install build tool)
– Run as root on RHEL, CentOS or Fedora
● curl -sL https://rpm.nodesource.com/setup | bash -
● yum install -y nodejs
● yum install gcc-c++ make (optional : install build too)
● # or: yum groupinstall 'Development Tools'
https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
Installing Nodejs
● Git clone & run the following commands
– git clone git://github.com/ry/node.git
– cd node
– ./configure
– make
– sudo make install
● License
– MIT license 와 다른 번들 OSS components libs의 license
● Prerequisites(Unix only)
– GCC 4.2 or newer
– G++ 4.2 or newer
– Python 2.6 or 2.7
– GNU Make 3.81 or newer
– libexecinfo (FreeBSD and OpenBSD only)
http://howtonode.org/how-to-install-nodejs
Installing Dependency Libraries
npm(Node Packaged Modules) is the package manager for javascript
IMPORTANT!
You need node v0.8 or higher to run this program
(npm 의 경우 node.js 설치시 자동으로 설치)
Npm Command
Npm Command
Installing Dependency Libraries
● Global install
– # npm install -g <package_name>
● Local install
– $ npm install <package_name>
– $ npm install <package_name>@<version>
● Check installed list
– $ npm list installed
● Remove
– $ npm uninstall <pakcage_name>
● Update
– $ npm update <pakcage_name>
● Latest version check
– $ npm update <pakcage_name>
One stop Installing Dependency Libraries
● Define to package.json
– name
– version
– main
– dependencies
– devDependencies
– engines
– scripts
– private
● Npm install
Hello, Nodejs!
● HTTP server
Do you alive? Nodejs
● crontab과 curl을 이용하여 nodejs 서버 체크 가능
– crontab -e
●
curl로 특정시간 node server를 체크한 후 response를 분석하여 server가 오류인지 아닌지 판단
Nodejs in github.com
● nodejs 확장 프로젝트는 전세계적으로 굉장히 빠르게 진행되고 있고 npm 모듈도 꾸준히 추가되고 있다.
다음 시간에는...
● Nodejs 예외처리 (forever)
● Nodejs 내장 디버거 (node-inspector)
● Heroku (nodejs를 클라우드로 설치하여 운용할 수
있는 플랫폼)
EOF

Mais conteúdo relacionado

Mais procurados

Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
Daum DNA
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
devCAT Studio, NEXON
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
devCAT Studio, NEXON
 

Mais procurados (20)

Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web service
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
Leadweb Nodejs
Leadweb NodejsLeadweb Nodejs
Leadweb Nodejs
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Nodejs 발표자료
Nodejs 발표자료Nodejs 발표자료
Nodejs 발표자료
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Ninja
NinjaNinja
Ninja
 
jbug-vagrant
jbug-vagrantjbug-vagrant
jbug-vagrant
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Python server-101
Python server-101Python server-101
Python server-101
 
Rhea mmo node_for_share
Rhea mmo node_for_shareRhea mmo node_for_share
Rhea mmo node_for_share
 
Node.js
Node.jsNode.js
Node.js
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
[Play.node] node.js 를 사용한 대규모 글로벌(+중국) 서비스
 

Destaque

2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태
NAVER D2
 

Destaque (11)

nodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IOnodejs websocket & SOCKET.IO
nodejs websocket & SOCKET.IO
 
웹소켓 (WebSocket)
웹소켓 (WebSocket)웹소켓 (WebSocket)
웹소켓 (WebSocket)
 
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
초고속 웹사이트 개발을 위한 Codeigniter PHP Framework
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
Angularjs, ionic, cordova 기반 syrup store app 개발 사례 공유
 
웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁웹-프론트엔드 프레임워크를 고르기 위한 팁
웹-프론트엔드 프레임워크를 고르기 위한 팁
 
HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...
HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...
HTML5 관점에서 2015년 웹 앱 개발 동향과 사례 및 2016년 발전 방향 저...
 
Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)Web Framework (웹 프레임워크)
Web Framework (웹 프레임워크)
 
프론트엔드로 시작하는 웹 개발 방법과 지식들
프론트엔드로 시작하는 웹 개발 방법과 지식들프론트엔드로 시작하는 웹 개발 방법과 지식들
프론트엔드로 시작하는 웹 개발 방법과 지식들
 
2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태2.네이버 프론트엔드 김지태
2.네이버 프론트엔드 김지태
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 

Semelhante a Nodejs발표자료 - 팀 세미나용

NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
Jinuk Kim
 

Semelhante a Nodejs발표자료 - 팀 세미나용 (20)

Node week1
Node week1Node week1
Node week1
 
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
유니티 + Nodejs를 활용한 멀티플레이어 게임 개발하기
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드서버 아키텍처 이해를 위한 프로세스와 쓰레드
서버 아키텍처 이해를 위한 프로세스와 쓰레드
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
MEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overviewMEAN Stack 기반 모바일 서비스 개발 overview
MEAN Stack 기반 모바일 서비스 개발 overview
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
Node.js 살펴보기
Node.js 살펴보기Node.js 살펴보기
Node.js 살펴보기
 
Internship backend
Internship backendInternship backend
Internship backend
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
제 5회 D2 CAMPUS SEMINAR - Swift로 만든 serverframework 개발기
 
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
NDC13: DVCS와 코드리뷰 그리고 자동화를 통한 쾌속 개발
 
서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)서버학개론(백엔드 서버 개발자를 위한)
서버학개론(백엔드 서버 개발자를 위한)
 
Java (spring) vs javascript (node.js)
Java (spring) vs javascript (node.js)Java (spring) vs javascript (node.js)
Java (spring) vs javascript (node.js)
 
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games ConferenceKGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
KGC 2016: HTTPS 로 모바일 게임 서버 구축한다는 것 - Korea Games Conference
 

Último

Último (8)

실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 

Nodejs발표자료 - 팀 세미나용

  • 2. What is nodejs? ● Node.js® is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices. Current Version: v0.12.2
  • 3. Nodejs 는 무엇인가? ● 서버 사이드 자바스크립트 기술. ● 기존의 자바스크립트들이 전부 브라우저에서 실행하는 형태였다면 node.js 는 서버사이드에서 실행되는 자바스크 립트. 그래서, 웹서버나 SMTP 서버 등과 같은 서버 프로그램을 작성할 수 있고, http://expressjs.com/ 와 같은 웹 프 레임워크도 있음 ● node.js 장점 – V8 - 스크립트 처리하는 인터프리터 중 성능이 좋은 편. http://attractivechaos.github.com/plb/ 같은 것을 보면 (물론 실제 개발 시에는 언어 자체가 병목이 아닌 경우가 많습니다만) 일반 알고리즘 구현 시 V8 자체 퍼포먼스가 좋음. 성능이 어느정도 나오는 스크립트 언어라는 점은 확실히 장점이 됨 – 기본 처리가 비동기 방식. 물론 파이썬의 twisted(이벤트 기반의 네트워킹 엔진) 등이 있지만, 기본 처리들이 다 비동기여서, I/O 나 DB 질의 수행되는 라이브러리쪽까지 비동기 처리가 됨. 자바 보다는 느려도 적은 비용으로 중 간 성능을 낼 수 있다는 것은 장점 – Java Script 프론트엔드 개발자들이 직접 서버 개발을 하기 용이해짐. 또한, 서버-클라이언트가 한 언어로 유지 보수할 수 있음. http://codingdojang.com/scode/265
  • 4. Nodejs 의 또 다른 장점 ● 가볍다 ● 빠르다 – 동시 접속 10만 ~ 25만명 성공(스프라이트를 전송하는 초당 20,000번 트래픽, CPU 점유율 5~40% 불과) ● http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/ ● Apache에 비해 http 속도가 3배 빠르다 – http://zgadzaj.com/benchmarking-nodejs-basic-performance-tests-against-apache-php ● npm에 다양한 모듈이 존재한다(현재 53,919개) ● javascript로만 개발 가능하다 http://goo.gl/np0Aer
  • 5. Nodejs 단점 ● 이제 겨우 Current version 이 v0.12.2(2015.04.03 기준)이다 – 최초 릴리즈 버전 node-v0.1.100.tar.gz(2011.8.24) ● 이벤트 구동 방식의 프로그래밍 구현이 쉽지 않다 ● 실수로 동기 방식의 코드로 개발할 경우, 치명적인 성능 저하를 유발 할 수 있다 http://goo.gl/np0Aer
  • 6. Nodejs 들어가기 전 이것 부터 알고 가자
  • 7. 비동기 프로그래밍의 이해 서버에서 IO를 처리하다가 지연이 발생하면 다른 요청들은 처리되지 못하고 계속 대기하는 현상이 발생. 대부분의 기업형 서버 플랫폼들은 이 문제를 해결하기 위하여 사용자의 요청을 쓰레드로 처리 http://www.nextree.co.kr/p7292/ Multi-Thread 서버의 요청 처리를 쓰레드에서 처리하도록 하여 병렬처리를 가능하도록 하는 방식. 쓰레드는 서버 CPU 자원을 시분할 형태로 나누어 가짐으 로써 독립실행이 가능하며 다른 요청을 동시에 받을 수 있게 함. Multi-Thread 기반의 서버는 일반적으로 클라이언트의 요청마다 Thread를 발생시킴. 이 말은 동시 접속자 수가 많을 수록 Thread가 많이 발생한다는 의미이며 그만큼 메모리 자원도 많이 소모한다는 의미. 그러나 서버 의 자원은 제한되어 있으므로 일정 수 이상의 Thread는 발생시킬 수 없음. Multi-Thread 는 이런 근본적인 문제를 안고 있기 때문에 현장에서는 서버를 업그레이드 하거나 Load-Balancing 등으로 분산처리 함. 한편 Multi-Thread 방식은 각 Thread 간의 공유자원 접근시 신중해야 힘. 각 Thread는 독립적인 시점에서 동작하므로 공유자원에 대한 동기화 없 이 접근하면 예기치 않은 결과가 나올 수 있음. Multi-Thread 병렬처리의 대안 : 비동기 방식
  • 8. Nodejs의 비동기 처리 Node.js 는 비동기 IO를 지원하며 Single-Thread 기반으로 동작하는 서버이다. Node 서버는 비동기 방식으로 요청을 처리하므로 요청을 처 리하면서 다음 요청을 받을 수 있다. 또한 병렬처리를 Thread 로 처리하지 않으므로 Multi-Thread가 갖는 근원적인 문제에서 자유롭다. http://www.nextree.co.kr/p7292/ Event Loop는 요청을 처리하기 위하여 내부적으로 약간의 Thread와 프로세스를 사용한다. 이는 Non-Blocking IO 또는 내부 처리를 위한 목 적으로만 사용되지 요청 처리 자체를 Thread로 하지는 않는다. 따라서 Node 서버는 Multi-Thread 방식의 서버에 비하여 Thread 수와 오버 헤드가 훨씬 적다. 이벤트를 처리하는 Event Loop는 Single-Thread 로 이루어져 있다. 즉 요청 처리는 하나의 Thread 안에서 처리된다는 의미이다. 그래서 이벤 트 호출 측에는 비동기로 처리되지만 처리 작업 자체가 오래 걸린다면 전체 서버 처리에 영향을 준다.(이는 Node.js 의 치명적인 약점)
  • 9. Single-Thread 기반 비동기 처리 나 : 피자 헛뜨에 전화걸어, 피자 한 판을 주문한다. (포테이토 피자에 갈릭치즈 토핑이랑 치즈크러스터, 모짜렐라 치즈까지 넣어주세염) 나 : 피자가 오는 30분 동안 간단히 베숙희 라빈스 아이스크림과 한라봉 3개를 먹는다. 나: 배달이 오면 피자를 먹는다. 나 혼자. (callback 함수 실행 : 저 혼자 다 먹었어요 뿌잉뿌잉) Single-threadSingle-threadSingle-thread 나 : 피자 헛뜨에 전화걸어, 피자 한 판을 주문한다. (포테이토 피자에 갈릭치즈 토핑이랑 치즈크러스터, 모짜렐라 치즈까지 넣어주세염) 나 : 피자가 오는 30분 동안 아무것도 하지 않고 숨만 쉬고 기다린다. 나: 배달이 오면 피자를 먹는다. 이 것도 나 혼자. Multi-thread
  • 10. 코드로 보는 동기/비동기 방식 http://www.nextree.co.kr/p7292/ 동기방식 비동기방식
  • 11. 그림으로 보는 동기/비동기 방식 http://www.toptal.com/nodejs/why-the-hell-would-i-use-node-js
  • 13. Nodejs 참 좋은데.. 레퍼런스가 있나염?
  • 14. LinkedIn의 모바일 버전의 전체 서버가 nodejs로 개발되었다는 소문이.. http://venturebeat.com/2011/08/16/linkedin-node/ http://goo.gl/np0Aer
  • 15. PayPal Engineering 블로그 https://www.paypal-engineering.com/2013/11/22/node-js-at-paypal/ Double the requests per second vs. the Java application. This is even more interesting because our initial performance results were using a single core for the node.js application compared to five cores in Java. We expect to increase this divide further. 35% decrease in the average response time for the same page. This resulted in the pages being served 200ms faster— something users will definitely notice Test suite using production hardware that tested the routes and collected data on throughput and response time.
  • 16. Nodejs의 올바른 사용 Node.js 는 Google Chrome V8 엔진 기반으로 동작하며 내부의 Event Loop는 Single-Thread 기반에서 비동기 메시지 를 처리한다. 이러한 Event Loop는 고성능의 병렬처리를 보장하도록 설계되어 있다. 따라서 이벤트에 의해 처리해야 할 단위 작업이 아주 짧은 시간 안에 처리된다면 Node.js의 고성능의 장점을 극대화 할 수 있다. 만일 처리 작업이 CPU를 많이 소모한다든지 대용량 파일을 처리하는 작업이라면 Node.js 는 독약과도 같다. 그러나 IO 작업이 별로 없는 애플리케이션이나 단위 작업이 짧은 메시징 애플리케이션의 경우에는 Node.js는 고성능을 보장해준다. 한편 Node 애플리케이션 개발자가 처리 로직을 비동기로 하지 않고 동기방식으로 구성한다면 Node를 잘못 활용하는 결 과를 낳을 수 있다. 따라서 Node 애플리케이션은 가능한 한 전부 비동기로 처리해야 하며 Node 개발자는 비동기 프로그 래밍 방식에 익숙해져야 할 필요가 있다. http://www.nextree.co.kr/p7292/ (참고) V8 - 스크립트 처리하는 인터프리터 중 성능이 좋은 편. http://attractivechaos.github.com/plb/ 같은 것을 보면 (물론 실제 개발 시에 는 언어 자체가 병목이 아닌 경우가 많습니다만) 일반 알고리즘 구현 시 V8 자체 퍼포먼스가 좋음. 성능이 어느정도 나오는 스크립트 언어라 는 점은 확실히 장점이 됨
  • 17. Installing Nodejs ● Download – https://nodejs.org/download/ ● Installing package manager – Setup with Ubuntu ● curl -sL https://deb.nodesource.com/setup | sudo bash - ● sudo apt-get install -y nodejs – Setup with Debian (as root): ● apt-get install curl ● curl -sL https://deb.nodesource.com/setup | bash - ● apt-get install -y nodejs ● apt-get install -y build-essential (optional:install build tool) – Run as root on RHEL, CentOS or Fedora ● curl -sL https://rpm.nodesource.com/setup | bash - ● yum install -y nodejs ● yum install gcc-c++ make (optional : install build too) ● # or: yum groupinstall 'Development Tools' https://github.com/joyent/node/wiki/Installing-Node.js-via-package-manager
  • 18. Installing Nodejs ● Git clone & run the following commands – git clone git://github.com/ry/node.git – cd node – ./configure – make – sudo make install ● License – MIT license 와 다른 번들 OSS components libs의 license ● Prerequisites(Unix only) – GCC 4.2 or newer – G++ 4.2 or newer – Python 2.6 or 2.7 – GNU Make 3.81 or newer – libexecinfo (FreeBSD and OpenBSD only) http://howtonode.org/how-to-install-nodejs
  • 19. Installing Dependency Libraries npm(Node Packaged Modules) is the package manager for javascript IMPORTANT! You need node v0.8 or higher to run this program (npm 의 경우 node.js 설치시 자동으로 설치)
  • 22. Installing Dependency Libraries ● Global install – # npm install -g <package_name> ● Local install – $ npm install <package_name> – $ npm install <package_name>@<version> ● Check installed list – $ npm list installed ● Remove – $ npm uninstall <pakcage_name> ● Update – $ npm update <pakcage_name> ● Latest version check – $ npm update <pakcage_name>
  • 23. One stop Installing Dependency Libraries ● Define to package.json – name – version – main – dependencies – devDependencies – engines – scripts – private ● Npm install
  • 25. Do you alive? Nodejs ● crontab과 curl을 이용하여 nodejs 서버 체크 가능 – crontab -e ● curl로 특정시간 node server를 체크한 후 response를 분석하여 server가 오류인지 아닌지 판단
  • 26. Nodejs in github.com ● nodejs 확장 프로젝트는 전세계적으로 굉장히 빠르게 진행되고 있고 npm 모듈도 꾸준히 추가되고 있다.
  • 27. 다음 시간에는... ● Nodejs 예외처리 (forever) ● Nodejs 내장 디버거 (node-inspector) ● Heroku (nodejs를 클라우드로 설치하여 운용할 수 있는 플랫폼)
  • 28. EOF