SlideShare a Scribd company logo
1 of 19
Download to read offline
May	 3,	 2012
node.JS雲端應用實例
Web再進化	 -	 很久很久以前	
 
·• 事件發生仰賴	 Refresh	 rate
·• 互動性差
·• 即時性更差
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
Web再進化	 –	 不久前…	
 
·• 事件觸發單向從Browser發出
·• 互動性略好些
·• 即時性還是很糟
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
Web再進化	 –	 現在	
 
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
現在網路服務的需求	
 

·• 互動功能多
·• 即時性要好
·• 網站上朋友要多
·• 最好正妹也要多
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
使用者需求越來越多(高?)	
 
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
但…	
 
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
我們回不去了…
我們碰到的瓶頸	
 

·• 主要後端語言PHP
·• PHP	 很讚
– 好開發/效率不差
– 除了寫起來有點醜
– 要做	 Comet	 /	 Web	 Socket	 也可以
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
我們碰到的瓶頸	
 
·• 持續連線數量大時
·• php-cgi	 會卡很大
·• 加機器?
·• php-cgi	 實在很肥…

©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
但…
所以需要找個連線成本低的方案	
 
·• Javascript:	 node.JS
·• Python:	 Twisted,	 Tornado
·• Ruby:	 Event	 Machine
·• Java:	 Jetty
·• Erlang….

©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
node.JS	 優點	
 
·• Javascript大家都會寫
·• 連線成本低,	 處理連線效率高
·• 大量開發者投入,	 api	 完整度越來越高
·• 有Joyent、Microsoft等商業公司投入
·• UNIX	 like	 /	 Microsoft	 solution都有不錯支援
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
node.JS	 注意事項	
 
·• 不適合大量運算場合
·• single	 thread	 serves	 js	 runtime
– non-blocking	 I/O,	 但寫爛程式還是	 blocking
– 謹慎控制每個	 callback	 執行時間
– 嚴格管控變數	 scope
·• Multi-core	 CPUs	 需要自己管控
·• JSON	 ->	 JavaScript	 Object	 Notation
– 但是在	 node.JS	 JSON.stringify/parse	 跑不快
– 還好	 0.6	 終於補回來
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
KKBOX哪邊用到	 node.JS?	
 
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
KKBOX一起聽
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
點播歌曲
點播歌曲
點播歌曲
創作者	 /	 
演唱者
聽眾
聽眾
聽眾
素人DJ
直接互動
直接互動
歌迷互動
node
slave
node
slave
node
slave
node
slave
KKBOX一起聽	 服務元件	 (原型)	
 
·• node.JS	 slave
·• node.JS	 master
·• memcached
·• Mysql
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
Users
Users
Users
mmc
node
master
node
master
mmc
mysql
mysql
node
slave
node
slave
node
slave
node
slave
KKBOX一起聽	 服務元件	 (now)	
 
·• node.JS	 slave
·• node.JS	 master
·• memcached
·• Mysql
·• RabbitMQ
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
Users
Users
Users
mmc
node
master
node
master
mmc
mysql
mysql
Rabbit
MQ
Rabbit
MQ
Summary	
 
·• node.JS	 已經足夠成熟
·• event	 driven	 帶來許多	 server-side	 開發優勢
– 雷也不少
– 但瑕不掩瑜
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
大家來寫	 Javascript	 吧~	
 
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
Thanks	
 
©2012.	 KKBOX	 Inc.	 All	 Rights	 Reserved
ericpi@kkbox.com

More Related Content

More from ericpi Bi

20160521 社群實務及組織協作
20160521 社群實務及組織協作20160521 社群實務及組織協作
20160521 社群實務及組織協作ericpi Bi
 
MOPCON 2015 intro
 MOPCON 2015 intro MOPCON 2015 intro
MOPCON 2015 introericpi Bi
 
20150630 kca big-data-with-cloud_output
20150630 kca big-data-with-cloud_output20150630 kca big-data-with-cloud_output
20150630 kca big-data-with-cloud_outputericpi Bi
 
高雄市戶政資料視覺化 - 使用 C3.js
高雄市戶政資料視覺化 - 使用 C3.js高雄市戶政資料視覺化 - 使用 C3.js
高雄市戶政資料視覺化 - 使用 C3.jsericpi Bi
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Introericpi Bi
 
KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手ericpi Bi
 
數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群ericpi Bi
 
快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 Appericpi Bi
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端ericpi Bi
 
AWS vs Azure
AWS vs AzureAWS vs Azure
AWS vs Azureericpi Bi
 
MOPCON intro
MOPCON introMOPCON intro
MOPCON introericpi Bi
 
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用ericpi Bi
 
MOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 MMOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 Mericpi Bi
 
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益ericpi Bi
 

More from ericpi Bi (14)

20160521 社群實務及組織協作
20160521 社群實務及組織協作20160521 社群實務及組織協作
20160521 社群實務及組織協作
 
MOPCON 2015 intro
 MOPCON 2015 intro MOPCON 2015 intro
MOPCON 2015 intro
 
20150630 kca big-data-with-cloud_output
20150630 kca big-data-with-cloud_output20150630 kca big-data-with-cloud_output
20150630 kca big-data-with-cloud_output
 
高雄市戶政資料視覺化 - 使用 C3.js
高雄市戶政資料視覺化 - 使用 C3.js高雄市戶政資料視覺化 - 使用 C3.js
高雄市戶政資料視覺化 - 使用 C3.js
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
 
KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手KSDG LT: 6分鐘node.JS就上手
KSDG LT: 6分鐘node.JS就上手
 
數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群數位創業最好的技術顧問 - 技術社群
數位創業最好的技術顧問 - 技術社群
 
快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App快快樂樂利用 PhoneGap 打造屬於自己的 App
快快樂樂利用 PhoneGap 打造屬於自己的 App
 
前端也能變全端
前端也能變全端前端也能變全端
前端也能變全端
 
AWS vs Azure
AWS vs AzureAWS vs Azure
AWS vs Azure
 
MOPCON intro
MOPCON introMOPCON intro
MOPCON intro
 
COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用COSCUP 2010 - node.JS 於互動式網站之應用
COSCUP 2010 - node.JS 於互動式網站之應用
 
MOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 MMOPCON 2012 - 網路服務從 K 到 M
MOPCON 2012 - 網路服務從 K 到 M
 
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
KSDG web course #1 - git: 從零開始 - 如何利用版本控制提升網站開發團隊效益
 

KSDG meet-up #1