Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Node.js 현재와 미래
Search
Outsider
October 19, 2014
Technology
0
130
Node.js 현재와 미래
한국 웹20주년 국제 콘퍼런스(
http://www20.kr/
)에서 발표한 발표자료
Outsider
October 19, 2014
Tweet
Share
More Decks by Outsider
See All by Outsider
GitHub Actions의 다양한 기능 활용하기 - GitHub Universe '24 Recap
outsider
0
840
당근 개발자 플랫폼은 어떤 문제를 해결하고 있는가?
outsider
1
3.3k
오픈소스에 기여할 때 알면 좋을 개발 프로세스
outsider
0
1.7k
DevOps를 가속화하는 플랫폼 엔지니어링
outsider
0
3.7k
클라우드 시대에 맞는 사이트 신뢰성 엔지니어
outsider
0
1.5k
디자인에 이어 코딩까지 AI가 프로그램 개발을 척척? : GitHub Copilot, 어디까지 알아보셨나요
outsider
0
1.5k
Citizen 개발기
outsider
0
940
오픈소스 뒤에 메인테이너 있어요
outsider
0
100
오픈소스에 기여할 때 해도 되는 일과 하면 안되는 일
outsider
0
81
Other Decks in Technology
See All in Technology
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
19k
AIエージェント元年@日本生成AIユーザ会
shukob
1
260
RaspberryPi CM4(CM5も)面白いぞ!
nonnoise
1
170
あなたが人生で成功するための5つの普遍的法則 #jawsug #jawsdays2025 / 20250301 HEROZ
yoshidashingo
2
400
AWSではじめる Web APIテスト実践ガイド / A practical guide to testing Web APIs on AWS
yokawasa
8
790
DeepSeekとは?何がいいの? - Databricksと学ぶDeepSeek! 〜これからのLLMに備えよ!〜
taka_aki
1
180
AWSアカウントのセキュリティ自動化、どこまで進める? 最適な設計と実践ポイント
yuobayashi
7
1.8k
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
110
“常に進化する”開発現場へ! SHIFTが語るアジャイルQAの未来/20250306 Yuma Murase
shift_evolve
0
110
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.9k
スクラムというコンフォートゾーンから抜け出そう!プロジェクト全体に目を向けるインセプションデッキ / Inception Deck for seeing the whole project
takaking22
3
170
Snowflakeの開発・運用コストをApache Icebergで効率化しよう!~機能と活用例のご紹介~
sagara
1
540
Featured
See All Featured
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
4 Signs Your Business is Dying
shpigford
183
22k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.2k
Unsuck your backbone
ammeep
669
57k
Adopting Sorbet at Scale
ufuk
75
9.2k
A Tale of Four Properties
chriscoyier
158
23k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Documentation Writing (for coders)
carmenintech
68
4.6k
Bash Introduction
62gerente
611
210k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.3k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
Node.js 현재와 미래 Outsider@www20kr 2014.10.17 https://www.flickr.com/photos/15216811@N06/6023029145
node.js ! Ryan Dahl ! JSConf.eu 2009 http://www.youtube.com/watch?v=EeYvFl7li9E Node.js의 미래를
예측하거나 하진 않습니다. Node.js를 개발하고 앞으로 공부하기 위해 도움이 될만한 현재 상태와 앞으로 관심가져야 할 방향에 대한 얘기입니다
node.js ! Ryan Dahl ! JSConf.eu 2009 http://www.youtube.com/watch?v=EeYvFl7li9E
node.js ! Ryan Dahl ! JSConf.eu 2009 http://www.youtube.com/watch?v=EeYvFl7li9E node.js가 나온지
5년 지났습니다
v0.10.x v0.11.x stable unstable
v0.10.x v0.11.x stable unstable 다음 버전은 0.12.x이고 그 다음에 1.0
이 나올 예정입니다
v0.10.x v0.11.x stable unstable 5년 동안 1.0이 안나왔으니 버전은 상당히
보수적으로 영하고 있습니다.
None
작년 여름에 Issac이 1.0에 대한 계획을 발표했습니다
조만간 0.12를 발표하고 이어서 1.0을 발표할 것이라는 계획이었습니다
1년이 지난 이 시점까지도 0.12가 나오지 않았습니다.
node.js 개발이 늦어지는 이유가 무엇일까요.
Ryan Dahl Isaac Z. Schlueter TJ Fontaine
Ryan Dahl Isaac Z. Schlueter TJ Fontaine node.js에는 2번의 리더
교체가 있었습니다. Issac이 올 초에 물러나고 TJ Fontaine가 새 리더가 되었습니다.
Ryan Dahl Isaac Z. Schlueter TJ Fontaine node.js의 개발이 늦어지는
이유는 리더와 코어 개발팀이 교체되었고 그 뒤에 코어 개발자의 커밋이 줄어들었습니다
None
TJ Fontain은 올해 Node.js on the road 라는 이름으로 발표를
하며 각 도시에서 커뮤니티를 만나고 있습니다
코어팀이 바뀌면서 커뮤니티의 의견을 듣고 이를 Node.js개발에 반영하려는 의도로 보입니다
Production Ready
Production Ready 가장 많이 받는 질문은 프로덕션에 쓸만한가 이지만 정확한
답은 없습니다
Production Ready 프로젝트 규모나 성격에 따라 다르고 1.0이 아닌 상황에서
윗사람을 설득하기 어려운 부분은 있습니다
http://nodejs.org/industry/
http://nodejs.org/industry/ 해외에서는 많은 회사에서 node.js를 Production에서 사용하고 있습니다
node.js의 미래는?
Go Language?
Go Language? TJ처럼 Go 언어로 가자는 이야기는 아닙니다
Network Program
Network Program node.js는 네트워크 프로그램을 위해 만들었습니다
Network Program Tools
Network Program Tools node.js를 이용해서 사람들은 도구를 만들기 시작했고 JavaScript이므로
특히 프론트앤드 관련도구가 많이 생겼습니다
Network Program Tools
Network Program Tools Desktop Application
Network Program Tools Desktop Application 많은 시도가 있었지만 지금은 데스크탑
어플리케이션도 만들고 있습니다
Network Program Tools Desktop Application node-webkit
Network Program Tools Desktop Application Robot node-webkit
Network Program Tools Desktop Application Robot node-webkit 최근에는 로봇제어가 큰
이슈로 관련 컨퍼런스도 많이 열리고 있습니다
Node.js v0.12.x
Node.js v0.12.x 가장 가까운 미래는 0.12의 변경사항입니다.
- 클러스터링에 라운드로빈 로드밸런싱 도입 - 한 프로세스 안에서 여러
인스턴스 실행 - Node Inspector로 클러스터 앱의 디버깅 - 성능 최적화(TLS, Crypto, …)
- 클러스터링에 라운드로빈 로드밸런싱 도입 - 한 프로세스 안에서 여러
인스턴스 실행 - Node Inspector로 클러스터 앱의 디버깅 - 성능 최적화(TLS, Crypto, …) 성능 개성 및 기능 강화가 주 내용으로 커다란 기능의 추가는 없습니다 v1.0에서도 API는 확정후에 개선을 위주로 개발할 것이라고 발표했습니다.
ES6 Harmony
ES6 Harmony Node.js 개발에 차후 크게 신경써야 할 부분 중
하나가 ES6 라고 생각합니다 브라우저는 크로스 브라우징 문제로 최신 기능을 쓰기 어렵지만 Node.js에서는 바로 사용할 수 있다
$ node --harmony
$ node --harmony ES6기능을 사용하려면 옵션을 주어야 한다
if (true){ let name = ‘www20’; console.log(name); // www20 }
! console.log(name); // ReferenceError: name is not defined Block Scope
var map1 = new Map(); ! map1.set('name', 'www20kr'); map1.set('date', new
Date(‘2014-10-17')); ! map1.get('name'); // ‘www20kr’ map1.get('date'); // Fri Oct 17 2014 09:00:00 GMT+0900 (KST) Collection
var map1 = new Map(); ! var obj = {name:
‘www20kr’); map1.set(obj, 'Congrat'); ! map1.get(obj); // ‘Congrat’ Collection
var set1 = new Set(); ! set1.add(1); set1.add(2); set1.add(2); !
set.size; // 2 set1.has(2); // true Collection
var t = (x) => x * x; ! t(4)
// 16 t(8) // 64 Arrow Functions(Lambdas)
db.find(id, function(err, data) { return data; }); ! ! //
es6 db.find(id, (err, data) => data); Arrow Functions(Lambdas)
Callback Hell
var doSomething = function(callback) { somethingAsync(function(err, data) { somethingAsync(function(err, data)
{ somethingAsync(function(err, data) { somethingAsync(function(err, data) { callback(err, data); }); }); }); }); };
Promise q, bluebird
Promise q, bluebird Promise도 ES6에 포함되어 있습니다 현재 callback hell을
해결하는 접근으로 많이 사용하고 있습니다
var fs = require(‘fs’); var Q = require(‘q’); ! var
readFile = function(file) { var deferred = Q.defer(); fs.readFile(file, function(err, data) { if (err) { return deferred.reject(err); deferred.resolve(data); }); return deferred.promise; }; ! readFile(‘/path/to/file’) .then(function(data) { … }) .catch(function(err) { … });
var fs = require(‘fs’); var Q = require(‘q’); ! var
readFile = Q.denodeify(fs.readFile); ! readFile(‘/path/to/file’) .then(function(data) { … }) .catch(function(err) { … });
Generator
Generator 현재는 시작단계이지만 최종적으로는 제너레이터로 갈꺼라고 생각하고 있습니다 물론 정착되기까지는
꽤 시간이 걸릴겁니다
function*
function* inc() { for (var i = 0; i <
5; i++) { yield i; } }
> var index = inc();
> var index = increase(); > index.next(); { value: 0,
done: false }
> var index = increase(); > index.next(); { value: 0,
done: false } > index.next(); { value: 1, done: false }
> var index = increase(); > index.next(); { value: 0,
done: false } > index.next(); { value: 1, done: false } > index.next(); { value: 2, done: false }
> var index = increase(); > index.next(); { value: 0,
done: false } > index.next(); { value: 1, done: false } > index.next(); { value: 2, done: false } > index.next(); { value: 3, done: false }
> var index = increase(); > index.next(); { value: 0,
done: false } > index.next(); { value: 1, done: false } > index.next(); { value: 2, done: false } > index.next(); { value: 3, done: false } > index.next(); { value: 4, done: false } > index.next(); { value: undefined, done: true }
Thank you. outsideris@gmail.com Twitter: @outsideris