SlideShare a Scribd company logo
1 of 20
Node.js 살펴보기
Microsoft Technical Evangelist
김명신 부장
built on Chrome's JavaScript runtime
easily fast, scalable
event-driven, non-blocking I/O model lightweight
and efficient perfect for data-intensive real-time
distributed devices.
http://nodejs.org/
Node.js®는 빠르고 확장 가능한 네크워크 응용 프로그램을 쉽게 빌드 하기 위해 크롬 자바스크립트 런타임을 기반
으로 구축된 플랫폼이다. 노드는 다양한 장치에서 데이터 중심의 실시간 응용 프로그램을 수행하려는 경우 이벤트
기반, 넌 글로킹 I/O 모델을 사용하기 때문에 가볍고, 효과적이며, 완벽하다.
built on Chrome's JavaScript runtime
easily fast scalable
event-driven non-blocking I/O model lightweight
efficient perfect data-intensive real-time
distributed devices.
Node.js®는 빠르고 확장 가능한 네크워크 응용 프로그램을 쉽게 빌드 하기 위해 크롬 자바스크립트 런타임을 기반
으로 구축된 플랫폼이다. 노드는 다양한 장치에서 데이터 중심의 실시간 응용 프로그램을 수행하려는 경우 이벤트
기반, 넌 글로킹 I/O 모델을 사용하기 때문에 가볍고, 효과적이며, 완벽하다.
Node.js®는 브라우져 바깥에서 자바스크립트 응용 프로그램을 수행할 수 있도록 해주는 런타임 환경과 라이브러리
이다.
Node.js®는 크롬 자바스크립트 런타임을 기반으로 구축된 플랫폼이다. 노드는 다양한 장치에서 이벤트 기반, 넌 글
로킹 I/O 모델을 사용한다.
Node를 이해하기 위해서
Event-Driven,
Non-Blocking
I/O
JavaScript
Application
Chrome
JavaScript
Runtime
Outside
Browser
• JavaScript Runtime 엔진 중 하나(e.g. SpiderMonkey, Chakra, Rhino, …)
• Google의 JavaScript 엔진
• Google Chrome에서 사용되고 있으며, C++로 개발
• 컴파일(JIT)된 코드는 필요에 따라 최적화를 위한 재컴파일이 이루어짐
• Generational Garbage collector
• ECMAScript, 5th edition 구현
• Danish Magic 
Lars Bak
http://code.google.com/p/v8/
http://www.youtube.com/watch?v=5AqbCQuK0gM Lars BakAnders Hejlsberg
TypeScript, JavaScript, and Dart
2006년 이후 꾸준히 Outside Browser에서 사용되긴 하였으나…
• Performance : 2008-2010, 업계의 꾸준한 노력(Chakra, V8, Nitro, …)
• 의존성 문제를 해결하는 공통의 저장소 : Jam, npm, Bower, …
• Tooling : Visual Studio, Sublime, WebStorm, …
• Modulation(모듈 정의/사용) : CommonJS / AMD(Asynchronous Module Definition)
구분 CommonJS AMD
Browser curl.js, SproutCore, PINF curl.js, RequreJS, PINF,
bdLoad, Yabble
Server Side Node.js, Narwhal,
Persevere
RequireJS, PINF
• 마우스, 센서, 메시지, 혹은 다른 프로그램이나 스레드의 이벤트에 의해
서 프로그램의 흐름이 결정되는 구조
• GUI 기반 응용 프로그램이나 이벤트 처리 중심의 응용 프로그램 개발
시에 널리 사용되는 패러다임
• 일반적으로, 메일 루프가 이벤트를 수신하고,
개별 이벤트 처리기를 호출 해 주는 방식
Event Queue
Event Loop
Thread Pool
Thread
Thread
Thread
Async I/O
Blocking I/O
Req. I/O
Resp. I/O
I/OOperation
Waiting
Req. I/O
Noti. I/O completion
I/OOperation
Non Blocking I/O
a b a b
event
V8
Node API Event Queue
Event Loop
Thread Pool
Thread
Thread
Thread
Async I/O
libuvnpm
• 서버 측 응용 프로그램 개발에도 JavaScript 기술을 그대로 사용
• 단일의 개발 환경과 언어
• 2009년 라이언 달(Ryan Dahl)이 개발하여 오픈 소스화
• 여전히 베타, v0.10.33
• Joyent가 스폰서
• MEAN(MongoDB, Express.js, Angular.js, Node.js)
: Free and open-source solution stack
for building dynamic web sites
Ryan Dahl
http://strongloop.com/node-js/infographic/
• 데뷰 5년만에, GitHub에서 3번째로 가장 많은 프로젝트가 진행중
• 한 달에 2,000,000 다운로드
• V0.10x는 20,000,000 다운로드
• Over 107,538 modules on npm.
• Over 475 meetups worldwide talking about Node.
https://www.npmjs.org/
http://nodejs.org/
https://chocolatey.org/
https://www.npmjs.org/
http://nodejstools.codeplex.com/
Node.js 살펴보기
Node.js 살펴보기
Node.js 살펴보기

More Related Content

What's hot

[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선NAVER D2
 
실무자를 위한 ExtJS 엔터프라이즈 개발 노하우
실무자를 위한  ExtJS  엔터프라이즈 개발 노하우실무자를 위한  ExtJS  엔터프라이즈 개발 노하우
실무자를 위한 ExtJS 엔터프라이즈 개발 노하우미래웹기술연구소 (MIRAE WEB)
 
Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1Hyo Da Seo
 
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션미래웹기술연구소 (MIRAE WEB)
 
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기복연 이
 
Weblockly 소개자료
Weblockly 소개자료Weblockly 소개자료
Weblockly 소개자료Kay Sung Hyuk
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Sung-tae Ryu
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기) YoungSu Son
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문종훈 박
 
Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01SangHun Lee
 
Knockout js소개
Knockout js소개Knockout js소개
Knockout js소개Kwangho SEO
 
20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan영욱 김
 
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기영욱 김
 
2017년 javascript의 현재주소
2017년 javascript의 현재주소2017년 javascript의 현재주소
2017년 javascript의 현재주소윤학 권
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!SangHoon Han
 
자기 일은 스스로 하자
자기 일은 스스로 하자자기 일은 스스로 하자
자기 일은 스스로 하자SeokJu Na
 

What's hot (20)

[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선[D2 오픈세미나]1.무한스크롤성능개선
[D2 오픈세미나]1.무한스크롤성능개선
 
실무자를 위한 ExtJS 엔터프라이즈 개발 노하우
실무자를 위한  ExtJS  엔터프라이즈 개발 노하우실무자를 위한  ExtJS  엔터프라이즈 개발 노하우
실무자를 위한 ExtJS 엔터프라이즈 개발 노하우
 
Mean stack Start
Mean stack StartMean stack Start
Mean stack Start
 
Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1Knock out - 삽질은 그만 #1
Knock out - 삽질은 그만 #1
 
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션
Kaazing - 웹소켓 기술의 유일한 엔터프라이즈 솔루션
 
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례 Sencha ExtJS를 활용한 Big Data Platform 개발 사례
Sencha ExtJS를 활용한 Big Data Platform 개발 사례
 
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
『풀스택 개발자를 위한 MEAN 스택 입문』 - 미리보기
 
Goorm소개
Goorm소개Goorm소개
Goorm소개
 
Weblockly 소개자료
Weblockly 소개자료Weblockly 소개자료
Weblockly 소개자료
 
Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망Cloud ide를 이용한_모바일_개발의_가능성과_전망
Cloud ide를 이용한_모바일_개발의_가능성과_전망
 
NODEJS INTRO
NODEJS INTRONODEJS INTRO
NODEJS INTRO
 
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기) FullStack 개발자 만들기 과정 소개  (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
 
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
[리뷰] 풀스택 개발자를 위한 MEAM 스택 입문
 
Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01Basic of web ref.웹을지탱하는기술_01
Basic of web ref.웹을지탱하는기술_01
 
Knockout js소개
Knockout js소개Knockout js소개
Knockout js소개
 
20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan20150207 Node.js on Azure - MeltingPot seminar in Busan
20150207 Node.js on Azure - MeltingPot seminar in Busan
 
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
20140625 멜팅팟 세미나 부산 Node.js로 클라우드 서비스 개발하기
 
2017년 javascript의 현재주소
2017년 javascript의 현재주소2017년 javascript의 현재주소
2017년 javascript의 현재주소
 
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
이제 온라인이다! 브라우저 안으로 들어온 Visual studio!
 
자기 일은 스스로 하자
자기 일은 스스로 하자자기 일은 스스로 하자
자기 일은 스스로 하자
 

Similar to Node.js 살펴보기

Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process uEngine Solutions
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님NAVER D2
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER Engineering
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AILablup Inc.
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIJeongkyu Shin
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInho Kang
 
Social game and windows azure platform (final)
Social game and windows azure platform (final)Social game and windows azure platform (final)
Social game and windows azure platform (final)정현 남
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST_NHNent
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기Huey Park
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 jeong seok yang
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos uEngine Solutions
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향ssuser0e53c8
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발Jeongkyu Shin
 
Windows azure를 활용한 cloud 개발 사례
Windows azure를 활용한 cloud 개발 사례Windows azure를 활용한 cloud 개발 사례
Windows azure를 활용한 cloud 개발 사례정현 남
 

Similar to Node.js 살펴보기 (20)

Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process Open standard open cloud engine for digital business process
Open standard open cloud engine for digital business process
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님Spring Framework 튜토리얼 - 네이버 최영목님
Spring Framework 튜토리얼 - 네이버 최영목님
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
NAVER TECH CONCERT_FE2019_빠르게 훑어보는 웹 개발 트렌드
 
JMI Techtalk : Backend.AI
JMI Techtalk : Backend.AIJMI Techtalk : Backend.AI
JMI Techtalk : Backend.AI
 
Machine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AIMachine Learning Model Serving with Backend.AI
Machine Learning Model Serving with Backend.AI
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
Infra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and TerraformInfra as Code with Packer, Ansible and Terraform
Infra as Code with Packer, Ansible and Terraform
 
Social game and windows azure platform (final)
Social game and windows azure platform (final)Social game and windows azure platform (final)
Social game and windows azure platform (final)
 
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)TOAST Meetup2015 - 구름 Cloud IDE (류성태)
TOAST Meetup2015 - 구름 Cloud IDE (류성태)
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
 
프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트 프론트엔드 개발자의 자바스크립트
프론트엔드 개발자의 자바스크립트
 
Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos Private PaaS with Docker, spring cloud and mesos
Private PaaS with Docker, spring cloud and mesos
 
웹:앱 기술 동향
웹:앱 기술 동향웹:앱 기술 동향
웹:앱 기술 동향
 
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
머신러닝 및 데이터 과학 연구자를 위한 python 기반 컨테이너 분산처리 플랫폼 설계 및 개발
 
Windows azure를 활용한 cloud 개발 사례
Windows azure를 활용한 cloud 개발 사례Windows azure를 활용한 cloud 개발 사례
Windows azure를 활용한 cloud 개발 사례
 

More from 명신 김

업무를 빼고 가치를 더하는 클라우드 기술
업무를 빼고 가치를 더하는 클라우드 기술업무를 빼고 가치를 더하는 클라우드 기술
업무를 빼고 가치를 더하는 클라우드 기술명신 김
 
[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기
[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기
[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기명신 김
 
Best of Build Seoul 2019 Keynote
Best of Build Seoul 2019 KeynoteBest of Build Seoul 2019 Keynote
Best of Build Seoul 2019 Keynote명신 김
 
Passwordless society
Passwordless societyPasswordless society
Passwordless society명신 김
 
DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과명신 김
 
Serverless design and adoption
Serverless design and adoptionServerless design and adoption
Serverless design and adoption명신 김
 
Durable functions
Durable functionsDurable functions
Durable functions명신 김
 
Azure functions v2 announcement
Azure functions v2 announcementAzure functions v2 announcement
Azure functions v2 announcement명신 김
 
Azure functions
Azure functionsAzure functions
Azure functions명신 김
 
Azure event grid
Azure event gridAzure event grid
Azure event grid명신 김
 
Serverless, Azure Functions, Logic Apps
Serverless, Azure Functions, Logic AppsServerless, Azure Functions, Logic Apps
Serverless, Azure Functions, Logic Apps명신 김
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture명신 김
 
Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신
Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신
Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신명신 김
 
Connect(); 2016 한시간 총정리
Connect(); 2016 한시간 총정리Connect(); 2016 한시간 총정리
Connect(); 2016 한시간 총정리명신 김
 
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core명신 김
 
Coded UI test를 이용한 테스트 자동화
Coded UI test를 이용한 테스트 자동화Coded UI test를 이용한 테스트 자동화
Coded UI test를 이용한 테스트 자동화명신 김
 
VS2015 C++ new features
VS2015 C++ new featuresVS2015 C++ new features
VS2015 C++ new features명신 김
 
Welcome to the microsoft madness
Welcome to the microsoft madnessWelcome to the microsoft madness
Welcome to the microsoft madness명신 김
 

More from 명신 김 (20)

업무를 빼고 가치를 더하는 클라우드 기술
업무를 빼고 가치를 더하는 클라우드 기술업무를 빼고 가치를 더하는 클라우드 기술
업무를 빼고 가치를 더하는 클라우드 기술
 
[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기
[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기
[2020 Ignite Seoul]Azure에서 사용할 수 있는 컨테이너/오케스트레이션 기술 살펴보기
 
Best of Build Seoul 2019 Keynote
Best of Build Seoul 2019 KeynoteBest of Build Seoul 2019 Keynote
Best of Build Seoul 2019 Keynote
 
Passwordless society
Passwordless societyPasswordless society
Passwordless society
 
DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과DevOps and Azure Devops 소개, 동향, 그리고 기대효과
DevOps and Azure Devops 소개, 동향, 그리고 기대효과
 
Serverless design and adoption
Serverless design and adoptionServerless design and adoption
Serverless design and adoption
 
Durable functions
Durable functionsDurable functions
Durable functions
 
Azure functions v2 announcement
Azure functions v2 announcementAzure functions v2 announcement
Azure functions v2 announcement
 
Azure functions
Azure functionsAzure functions
Azure functions
 
Logic apps
Logic appsLogic apps
Logic apps
 
Serverless
ServerlessServerless
Serverless
 
Azure event grid
Azure event gridAzure event grid
Azure event grid
 
Serverless, Azure Functions, Logic Apps
Serverless, Azure Functions, Logic AppsServerless, Azure Functions, Logic Apps
Serverless, Azure Functions, Logic Apps
 
Microservices architecture
Microservices architectureMicroservices architecture
Microservices architecture
 
Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신
Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신
Visual studio 2015를 활용한 개발 생산성 및 코드 품질 혁신
 
Connect(); 2016 한시간 총정리
Connect(); 2016 한시간 총정리Connect(); 2016 한시간 총정리
Connect(); 2016 한시간 총정리
 
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
크로스 플랫폼을 품은 오픈 소스 프레임워크 .NET Core
 
Coded UI test를 이용한 테스트 자동화
Coded UI test를 이용한 테스트 자동화Coded UI test를 이용한 테스트 자동화
Coded UI test를 이용한 테스트 자동화
 
VS2015 C++ new features
VS2015 C++ new featuresVS2015 C++ new features
VS2015 C++ new features
 
Welcome to the microsoft madness
Welcome to the microsoft madnessWelcome to the microsoft madness
Welcome to the microsoft madness
 

Node.js 살펴보기

  • 1. Node.js 살펴보기 Microsoft Technical Evangelist 김명신 부장
  • 2. built on Chrome's JavaScript runtime easily fast, scalable event-driven, non-blocking I/O model lightweight and efficient perfect for data-intensive real-time distributed devices. http://nodejs.org/ Node.js®는 빠르고 확장 가능한 네크워크 응용 프로그램을 쉽게 빌드 하기 위해 크롬 자바스크립트 런타임을 기반 으로 구축된 플랫폼이다. 노드는 다양한 장치에서 데이터 중심의 실시간 응용 프로그램을 수행하려는 경우 이벤트 기반, 넌 글로킹 I/O 모델을 사용하기 때문에 가볍고, 효과적이며, 완벽하다.
  • 3. built on Chrome's JavaScript runtime easily fast scalable event-driven non-blocking I/O model lightweight efficient perfect data-intensive real-time distributed devices. Node.js®는 빠르고 확장 가능한 네크워크 응용 프로그램을 쉽게 빌드 하기 위해 크롬 자바스크립트 런타임을 기반 으로 구축된 플랫폼이다. 노드는 다양한 장치에서 데이터 중심의 실시간 응용 프로그램을 수행하려는 경우 이벤트 기반, 넌 글로킹 I/O 모델을 사용하기 때문에 가볍고, 효과적이며, 완벽하다.
  • 4. Node.js®는 브라우져 바깥에서 자바스크립트 응용 프로그램을 수행할 수 있도록 해주는 런타임 환경과 라이브러리 이다. Node.js®는 크롬 자바스크립트 런타임을 기반으로 구축된 플랫폼이다. 노드는 다양한 장치에서 이벤트 기반, 넌 글 로킹 I/O 모델을 사용한다.
  • 6.
  • 7. • JavaScript Runtime 엔진 중 하나(e.g. SpiderMonkey, Chakra, Rhino, …) • Google의 JavaScript 엔진 • Google Chrome에서 사용되고 있으며, C++로 개발 • 컴파일(JIT)된 코드는 필요에 따라 최적화를 위한 재컴파일이 이루어짐 • Generational Garbage collector • ECMAScript, 5th edition 구현 • Danish Magic  Lars Bak http://code.google.com/p/v8/
  • 8. http://www.youtube.com/watch?v=5AqbCQuK0gM Lars BakAnders Hejlsberg TypeScript, JavaScript, and Dart
  • 9. 2006년 이후 꾸준히 Outside Browser에서 사용되긴 하였으나… • Performance : 2008-2010, 업계의 꾸준한 노력(Chakra, V8, Nitro, …) • 의존성 문제를 해결하는 공통의 저장소 : Jam, npm, Bower, … • Tooling : Visual Studio, Sublime, WebStorm, … • Modulation(모듈 정의/사용) : CommonJS / AMD(Asynchronous Module Definition) 구분 CommonJS AMD Browser curl.js, SproutCore, PINF curl.js, RequreJS, PINF, bdLoad, Yabble Server Side Node.js, Narwhal, Persevere RequireJS, PINF
  • 10. • 마우스, 센서, 메시지, 혹은 다른 프로그램이나 스레드의 이벤트에 의해 서 프로그램의 흐름이 결정되는 구조 • GUI 기반 응용 프로그램이나 이벤트 처리 중심의 응용 프로그램 개발 시에 널리 사용되는 패러다임 • 일반적으로, 메일 루프가 이벤트를 수신하고, 개별 이벤트 처리기를 호출 해 주는 방식 Event Queue Event Loop Thread Pool Thread Thread Thread Async I/O
  • 11. Blocking I/O Req. I/O Resp. I/O I/OOperation Waiting Req. I/O Noti. I/O completion I/OOperation Non Blocking I/O a b a b event
  • 12. V8 Node API Event Queue Event Loop Thread Pool Thread Thread Thread Async I/O libuvnpm
  • 13. • 서버 측 응용 프로그램 개발에도 JavaScript 기술을 그대로 사용 • 단일의 개발 환경과 언어 • 2009년 라이언 달(Ryan Dahl)이 개발하여 오픈 소스화 • 여전히 베타, v0.10.33 • Joyent가 스폰서 • MEAN(MongoDB, Express.js, Angular.js, Node.js) : Free and open-source solution stack for building dynamic web sites Ryan Dahl
  • 15. • 데뷰 5년만에, GitHub에서 3번째로 가장 많은 프로젝트가 진행중 • 한 달에 2,000,000 다운로드 • V0.10x는 20,000,000 다운로드 • Over 107,538 modules on npm. • Over 475 meetups worldwide talking about Node. https://www.npmjs.org/