January, 2009 > 所有文章列表

What is a cloud ? (雲在何方?)

In General   January 19, 2009 - 7:00 pm

*緣起

最近因為工作需要,又再度開始接觸 Amazon EC2/S3(早在2006初這個服務剛推出不久時曾用過一次,那時是 RoR 加一堆 merb,不過後來隨著專案結束也就漸漸忘了這玩意),結果這次隨便查了些資料卻發現 cloud 這個字似乎已無所不在泛濫成災,也讓我一時興起想瞭解一下到底現在大家口中所謂的 cloud 是在指什麼。

會這樣好奇主要的原因是在許多地方都看到有人自稱在提供 cloud service, 但這些服務間彼此的性質、形態與做法差異性卻很大,例如 ec2 與 gae 兩者就不太一樣,gae 與 salesforce 又很不同,搞到最後,似乎處處是雲端,人人在漫步pm_fWatm084500901.jpg

根據 wikipedia 的定義,cloud 最寬鬆的定義是這樣的(擷錄):

It is a style of computing in which resources are provided “as a service” over the Internet to users who need not have knowledge of, expertise in, or control over the technology infrastructure (“in the cloud”) that supports them

如果你對這樣的定義沒問題,那非常好,不用再浪費時間看下去,去喝杯咖啡吧。

l (紐約25街上最棒的咖啡館,三明治也值得一試)

很可惜這樣的定義在我聽來似乎寬鬆的有點誇張了,因為這樣說來,我在家裏擺幾支 iphone 跑些服務並開放 api 給人用,其實也算是 cloud 囉(還是高雅的 apple cloud哩)?XD

就因為這該死的好奇心,我花了幾天時間調查並整理了些相關資料,現在總算比較有個頭緒了。

請注意這只是我個人的心得整理,文中對於名詞的定義與詮釋,尤其是 cloud,只是我個人的想法,如果有錯歡迎各方大德賜教。

*from hosting to VPS, is it really cloud ?

基本上如果要細究到底 cloud 是什麼,可能可以先吵上個三天三夜還沒定論,因為根據眾多前輩的說法,cloud 這個字本來就是個 buzz word, 想用的人就隨喜取用了,其實根本沒啥定義好談的啊~

因此,我打算先跳過試圖去定義這個字的破題法,從實際的 deployment 方式來看這件事。

以往一般人要 hosting,大多是去租虛擬主機,有錢一點就丟機器到機房去(co-location),這是最常見也最傳統的手法,這個手法最大的缺點在於 – 如果臨時有大流量需求,例如辦個 campaign,很難迅速的擴充服務能量,不論是要搞到大量的機器,或無窮盡的頻寬,都是個問題。

因此,這幾年來比較流行的玩法是所謂的 VPS/VDS (Virtual Private Server),透過類似 XEN 這樣的軟體,將一台實體 server 虛擬化(virtualization) 成多台虛擬機器然後出租,這樣一來當臨時有大流量需求時,可以很容易的加買幾台虛擬機器就撐過去了。

前面開頭談到的 EC2 就是這樣一個服務,另外這一兩年頗受好評的 Slicehost也是,在 EC2 的例子裏,每一個虛擬出來的機器叫做一個 instance,因此要應付大流量 campaign 時,可以狂開 instances 撐過去,這比狂買實體機器便宜多了。

由於 VPS 真的超方便而且很好用,因此迅速受到大家歡迎,久而久之,VPS 這樣的服務似乎也就跟 cloud 畫上了等號,但這個等號裏,有個地方卻值得進一步討論。

簡單來說,今天一個人在 ec2 買了 100 個 instances,它們並不會自動聯合起來工作,而是要靠人工去規畫,例如最常見的是在前面放個 reverse proxy 然後把 request 平均導向到這 100 台機器上(round robin load balancing),並且,更重要的,app 本身在撰寫時就要考慮到將來能支援跑在多個分散的機器上,例如 session 要怎麼維持?global memory 如何分享?database 是否也要散聚在不同機器上?如果分散要怎麼維持資料同步?等等這一大堆相關的細節要處理,一個沒弄好,呃,就成了 twitter 第二..XD images

從這個角度看來,VPS (不論是 ec2 or slicehost)提供的其實是 virtualization 與 load balancing 服務,至於在這個基礎服務之上,user 要怎麼玩就是各顯神通。但 load balancing 與 cloud 似乎並不盡然相同呀!

*那世界上還有其它種類的 cloud 嗎?

有,例如 google app engine (簡稱 GAE) 提供的服務。

簡單來說 gae 是由三個東西組成的,分別是 MapReduce, BigTable, GFS(google file system),其中最重要的特色就是 MapReduce。

MapReduce 可說是一個演算法,也可說是一個 framework (看你讀的文獻來源),但它基本上是由 map 與 reduce 兩者組合,運作方式也很簡單:

map: master node 將工作切割成許多小塊丟給 worker (child) nodes 去執行,worker node 可能會再切割工作成各多的小塊給其下的 worker node 去執行,因此這是一個樹狀的結構。當 worker nodes 完成計算後會將結果傳回給 master node。

reduce: master node 拿到 worker node 傳回的結果後,將它組合起來,就完成工作了。

對 MapReduce 有興趣又閒的發慌的朋友可以去看看 google 發表的一篇論文簡報(保証會睡的很香甜 :P )。

類似 GAE 這樣的服務,它們最大的特色就是會將工作切割成很多小塊,然後經由多台電腦聯合起來一起運算,也因為要切割,因此通常會伴隨者一個 distributed file system (在 gae 的例子裏,叫做 GFS),通常也會有一個分散式的資料庫,例如 gae 裏叫 bigtable。

當然前面講的都是針對底層架構的設計,但對最前端的開發者來說它代表什麼意義呢?很簡單,開發者可以完全不用管它有100台或10000台電腦在運作,只要照著 gae 提供的 sdk (呼叫它的 API,操作 bigTable,或用台灣之光 ericsk 大開發的 gaeo2730991056_de70080dee_o.jpg)開發程式 ,將來佈署到 gae 上後就會自動去調用一堆電腦(而且很有可能是分散在世界各地 data center 裏)來發功,從這個角度來說,開發者要擔心或處理的細節是比較少的,也因此理論上 time to market 也是比較短的。

*如果不想用 gae 有其它選擇嗎?

有,Hadoop 是 Aapche Foundation 裏一個 java-based 的主要計畫,基本上可視為開源版的 gae(很多關鍵技術是依據 google 開放的學術論文來實作的,例如 MapReduce, distributed file system 等), 目前最力挺的開發者是 yahoo,用於該公司的 search engine 上,而 hadoop 的創始者目前也在 yahoo 上班(今年紅利會不會很傷?:P),這裏有一篇 iThome 的中文報導值得一看。

Hadoop 主要由下列三者組成(其它詳細說明請看官網)

Hadoop Core: 主要就是 implement MapReduce

HDFS(Hadoop Distributed File System):參考 GFS 而來的分散式檔案系統

HBase: 基於 HDFS 的分散式資料庫(功能等同於 google bigtable)

*所以 hadoop/gae 與 ec2 是互斥的嗎?

不見得,要看比較的面向為何?但實際上它們是可能合作的,其中最著名的例子是紐約時報在 ec2 上用 hadoop 轉了4TB 的 PDF (這篇文章超級精彩不看可惜)。

故事大略是這樣:

NYT 有一狗票 1851-1922 年間掃描的一千一百萬份文章要從 TIFF 圖檔格式轉換為 PDF,由於數量實在太龐大,轉換起來不但耗時甚久,也需要極大數量的機器,就算有錢如 NYT 也不想當凱子爺投資這麼多啊~(而且因為轉換時間太久,也不太可能跑去 Best Buy 刷它個幾千台 pc 回來,然後速速轉完就退回去 XD)

最後 NYT 的工程師將所有檔案傳到 s3 放著,然後到 ec2 開了 100 個 instances,再裝個 hadoop 利用這100台電腦跑分散運算,結果是只花了 24hrs 跟大約3000美金就搞定(由於處理速度實在太快,他們實際上還跑了兩次吶…)

這個例子也正好帶出下一個主題。

*那 ec2 到底是不是 cloud ?

這要看你怎麼定義 cloud 這個字,以我而言,我傾向認為 MapReduce 與 distributed file system 是 cloud computing 的主要特色,因此在這個定義之上,EC2 並不符合首要條件

但如果我們把問題轉成:ec2 可以成為 cloud 嗎?

那答案就是肯定的,從上面 NYT 的例子可以看出,EC2 提供100個 instances 只是基礎架構,之後再上面跑 hadoop 才是真正發功之所在。

由此我們也可以得到另一個結論:硬體本身有無 virtualization 並不重要(你可以買100台真的電腦連起來,也可以用 ec2 開100個 instance),重要的是在其上協同運算的方式( MapReduce 是這裏的關鍵)

更簡單的二分法則是這樣:

*Amazon 只是把硬體虛擬化,然後賣 raw-level computing power

*GAE/Hadoop 則是提供分散式協同運算, packaged computing solution

因此,或許我們可以把 ec2 視為 cloud 的前奏曲,擁有它之後,要不要做成 cloud (例如裝上 hadoop) 則是個人選擇。

*所以,何時該選 ec2 或 cloud 呢?

這是更重要也更實際的問題,而答案也很單純,主要就是考慮下列因素
1、你要解決的問題是否能符合 MapReduce 的矩陣分割方式?

或是更白話一點的講,你要做的事能不能被切割成小小的一塊塊來個別擊破?例如 log file 的分析就很適合,但 friend of friend database 就不見得適合。
如果你的問題可切割成許多小塊,那就可以考慮下一點。

2、vendor lock-in 是否是個問題?

這個主要是針對 gae 而來的,現在如果用了 gae,基本上它的 lock-in 特質非常強烈,例如一定要用 python 與 bigtable,整個資料庫欄位的規畫方式跟傳統 RDB 完全不同,操作語法也不一樣,將來幾乎無法迅速移轉到其它 hosting 上(雖然有人寫了 GAE to EC2 conversion kit, 但有沒有膽用是另回事),喔,更別提市場上 python 的人才有多貧乏這件事,會 RoR 的人搞不好還多一點。
當然這裏可能的另一個選擇就是效法 NYT,用 EC2 + Hadoop 搞客製化分散式運算,而且用的是 java ,人才四處可得相對門檻就低一點(結果最後是死在 MapReduce 搞不定 ? :P )

*那 SaaS 是 cloud 嗎?

這也是個好問題。

現在很多 Software as Service 的服務商,例如 Salesforce 也都宣稱自已有提供 cloud computing 服務,這又是怎麼回事?

我認為比較合理的看法是將 cloud 分成三個層次來看:

第一層是硬體層(100台真的電腦,或100個 ec2 instances)

第二層是 framework (hadoop, gae, ms azure)

第三層才是 service (accounting, pdf generation…)

在這樣的架構下,SaaS 是屬於第三層的 service 這個 scope。

也就是服務商先搞定第一、二層後,在其上建構自已的 domain service,例如 salesforce 的主力服務是 CRM,因此它透過 cloud 提供一系列的 CRM API 給開發者使用。舉個誇張的例子(注意,這例子是假想的),搞不好 salesforce 也是租 ec2 然後搞了個 hadoop,接著在上面用 java 寫了一堆 api 給人 call。這時它就是三層皆備,可稱 cloud 而無愧了 XD

另外類似的例子則是像 gmail, google reader 等,這些都是 software services based on GAE (先搞定一、二層,然後建構第三層的 domain service)

*附錄

原本我曾認為 ec2 的 virtualization 可以做到將許多台實體電腦虛擬化成一大台 server,這樣工程師就只需要針對一台『超級電腦』來寫程式即可,如果是這樣,那 ec2 其實也符合分散式運算的標準,但我查來查去只不斷看到類似下面的解釋:

EC2 is more designed for applications that scale well across many hosts, rather than larger applications that require huge resources. IMHO, the xlarge instance is quite fast. Maybe you can identify a bottleneck in the application and address that? Is it really CPU bound?

Scalability: Amazon supports easily adding or removing servers, not adding more power/memory/disk to an existing server (instance). This works well when your application is architected to scale across multiple servers to support increased load.

因此目前先初步認定 ec2 並沒有提供這方面的能力,當然如果有錯,歡迎指正。

*後記

在研究期間叨擾了無數前輩,感謝他們犧牲週未時間情義相挺回答各種無趣的問題,在此致上最高謝意 :D

另外關於 ec2 vs. slicehost 的成本或用哪家比較划算這檔事,我也小小想了一下,從實際數據看來,如果只是小型的網站或是 newly startups,從省錢的角度來看,應該要選 slicehost,因為它的初始成本最低,例如花個 $20 美元就可以有頗大的空間與流量可上線 run 了。

但 ec2/s3 的好處則是安全性、穩定性與擴充性,而它最大的缺點則是成本相對較高,一個 instance 開著不用一個月就要 $72元,如果生意好流量大那要交的費用就更多。

目前台灣地區用 ec2 的的網站似乎並不多(pixnet ? 但把資料存在 s3 的站就多一點),可能主要是連線反應時間不夠快所以接受度不高吧,但我們服務的客戶本來就多在北美,所以沒差 XD


comments(11) | by admin

有趣的 NYT 資訊設計

In General   January 18, 2009 - 3:09 pm

再過兩天是美國總統就職大典,雖然跟我沒什麼關係,但有機會看到幾大主流媒體怎麼處理這則新聞,以及順便觀察它們如何在網路平台上玩這個 event,也是樂事一件。

下面是紐約時報今天推出的「就職大典互動地圖」,透過動畫加文字/圖片的方式,簡潔的說明了就職典禮的進行流程與相關地理資訊,只要花個三分鐘,就能讓人快速瞭解大概是怎麼回事,尤其它的呈現手法可說是非常好的 information graphic design 範例,非常值得一看。

Picture 4.png

同時另外有個 Your Hopes for Obama 的互動設計,主要是前陣子讓人錄下對新總統的期望,內容本身沒什麼新意(經濟不好你認為民眾還會說些什麼?:P),但呈現的方式一樣讓人眼睛一亮,尤其可注意它的資訊架構設計。下面是幾張擷圖。

Picture 2.png

Picture 3.png

Picture 1.png
(每個人都可以錄大約20秒的語音說出心中的想法,然後按主題分類)

除此之外,NYT 還有一個挺不賴的單元叫 weeks in picture,簡單來說就是圖片版的『本週大事』,但當然,圖片比文字更有說服力,尤其當鏡頭語言的張力十足時,同樣一則新聞,傳達給人的感受就完不一樣了啊~

Picture 5.png

也由於總統就職大典在任何國家都算是件大事,因此所有媒體幾乎都會弄個專題區或直播之類的服務,這可是千載難逢研究媒體/網路/傳播的好機會,有興趣的人一月二十日當天可以多灌兩杯咖啡跟它拼了,同步監看下列媒體。

(其實光看這份媒體清單本身就很有意思了,裏面有電視、報紙,也有純網路媒體,還有甚至不是媒體的平台,像 hulu, twitter,這是一個有趣的時代不是嗎?)

CBS

CNN with Facebook

MSNBC

C-SPAN

ABC

FOX with HULU

PBS

Washington Post

USA Today

Current TV with Twitter

Joost

族繁不及備載

所以,到底本文的重點是什麼呢?很簡單,有兩個。

1、資訊設計的終極目地是讀者的『使用與滿足』,良好的資訊設計與呈現方式比運用炫麗的神奇技術來的更重要,上面提到的幾個互動設計,其實也都只用了非常簡單的技術(不過就是 flash 嘛 XD)

2、對於手上本來就擁有大量現成內容的媒體來說(不論是電視、報紙、雜誌或書籍),應該針對自身的內容屬性做聰明的規畫,來 re-target/purpose 這些內容到網路上,以加值後的面貌呈現出來,紐約時報絕對是一個很值得借鏡的典範(就算新聞產製水平沒法達到人家的十分之一,至少呈現手法可以學個幾分像吧?:P)

Add comment | by admin

這樣改版,就對了啊~

In General   January 17, 2009 - 8:22 pm

今晚看蘋果日報網站時,很驚喜的發現 main navigation bar 上多了一個新項目,叫做『今日蘋果』,點進去一看原來是將本日的頭版畫面貼了上去,如下:

Picture 1.png

更棒的是,那個頁面下方接著就是按版面把新聞條列出來,這樣讀起來就更像是真實報紙的感覺,整個使用者經驗大優啊~

在此之前,如果要透過網站看完整份報紙,就得透過主選單一個個點進去,經常會錯過某些有趣的報導,而且即時新聞跟今日的印刷版也不容易分辨出來,現在這樣重新整理過後就一目瞭然。

有趣的是另一份我常看的報紙,New York Times 也有同樣的設計,如下:

Picture 2.png

畫面右方的小圖點了後會放大,能更清楚的看到今日的版面,這樣就更像手中拿著一份 NYT 一樣,更讚的是不會有油墨,而且也沒害死樹(但可能有排CO2 ?);當然頁面左邊同樣是按版面列出當日的新聞,清清楚楚,方便閱讀。

這些改變雖然都是小事(技術上也沒啥門檻),但小小的改變卻能帶來極高的便利與效益,讓讀者接收資訊的經驗更良好,實在是大功一件,想出這個點子(或,呃,懂得要去借鏡 NYT) 的人,應該被好好嘉獎一番,接下來就請他/她去開發個 iphone 版吧 XD

ps. 如果硬要雞蛋裏挑骨頭,新版面中我覺得還有問題的地方是主導覽系統中的『即時』與『搶鮮報』,我到現在還是搞不懂它們的區別(尤其在『即時』中又有一個 『蘋果搶先報』…),或許乾脆二合為一然後照時間排序就好?

Picture 3.png

ps2. 關於 NYT,還有許多有趣的故事值得談吶,這等有空時再來慢慢寫…

comments(3) | by admin

FMS 3.5 正式販售了

In flex   January 14, 2009 - 9:25 am

Picture 1.png

一早接到email 通知,FMS 3.5 正式開始販售,想想從它去年 announce 到現在開賣,還真是隔了很久,但正式販售代表的意義是 – 至少有 trial version 可玩了。

新版本功能看來很好很強大,只可惜就是沒有 AS3 支援,也沒有其它 scripting/language support,所以還是要繼續跟 AS1 打交道啊。

下面是 release note 裏看來的 new features (只列出我覺得有趣+值得觀察的項目,詳細清單在這裏)

*Plug-in architecture

Integrate with other servers, back-end services, and workflows with the new plug-in architecture. Three classes of plug-ins for authorization, server access, and file access let you extend Adobe® Flash® Media Interactive Server 3.5 software with custom connectivity, security, and deployment options.

這點很重要是因為以前 FMS app 很容易被人家亂搞,自已寫個 fake client 就連去,結果浪費頻寬等問題一大堆,現在透過自製 plugin 門檻就高一點。

*MPEG-4 video recording

mpeg-4 + HD 的重要性就不用多說了,現在不到 1080P HD 等級大概不用肖想吃 CDN 或 streaming content 這塊了,所以這次從 encoder, DVR 到 dynamic streaming 都支援,算是非常符合時勢

*AMF3 support

有點雞肋,but nice to have.

*Easier implementation
*More secure content delivery

Lock down your high-definition content and communications with enhanced stream protection and server-side security. Encrypted H.264 streaming is now supported — with the encrypted Real Time Messaging Protocol (RTMPE), you get higher performance at 128-bit encryption strength. In edition with RTMPE, protect SWF files from being reused or modified, and help prevent unauthorized connections with improved SWF verification. Use the plug-in architecture to create custom, real-time rights control by validating with external services such as LDAP or SOAP.

新增支援 windows server 2008, red hat 5.2, RTMPE 加密串流到 air runtime

*Multipoint publishing

Use multipoint publishing to remotely inject new live or prerecorded streams into your delivery system to quickly add time-sensitive content. This is most useful when working with a content delivery network (CDN) or distributed servers.

這個聽起來很威,但全世界有能力玩這種等級的 CDN 大概沒幾家吧,例如 MediaTemple, BrightCove 或少數幾個 in-house 的媒體。

*Stream data access

Create dynamic thumbnails or video previews on the client side with the ability to take a snapshot of the streamed video (requires Flash Player 9 or later).

這個不算新鮮事,但在 fp9 裏實作手法可能更有趣,我推測是直接從 binary stream (byte array) 裏做 memory dump 然後生成 preview,這個要等裝起來玩後才能驗証了。
另外從 FMS 3 開始就支援一個 RTMFP 格式,如果你有在 follow MAX 2008,應該已經注意到讓每個人眼睛一亮的 p2p 功能(包含正 beta 中的 Stratus service),RTMFP 就是讓 p2p 成真的 UDP 傳輸格式,只是之前一定要用 FMS 才行,現在也可選擇不俱 Audio/Video 能力的 Stratus (or better yet, can we have standard SIP support ?) 來玩同樣的事,就看口袋深度囉…XD

comments(2) | by admin

air 也能玩 multi-touch ?

In General   January 13, 2009 - 1:55 pm

Picture 1.png

上面這段影片是 Ryan Stewart 在 Adobe Max 義大利會場內拍回來的 demo 影片,主要是法國一家叫 Intuiface 的小公司用 air 做了個 multi-touch 的產品,而被大家驚為天人。(點上圖可看影片,brightcove 的 player 真威…)

這個 demo 有趣的地方在於:眾所週知的,air 並沒有 native support for multi-touch, 因此他們是怎麼做到的?

在影片的最後有回答這個問題,基本上一切都是自已來,從硬體(想必是塊多點觸控的面板),軟體(包含多點觸控 library & sdk) 與表現層(在這個例子裏是用 air client)。

看完影片後好奇去了該公司網站多瞄了兩眼,下面是他們的技術細節:

The IntuiFace platform comprises:

1. A large multitouch screen through which one or more users can interact simultaneously with their fingers, integrated into a variable-sized and custom-design furniture along with strong processing power, and many networking capabilities. Two levels of design and performance are currently offered (IntuiFace 1G and 2G).

2. A software middleware – the Multitouch Gesture Recognition Engine – that translates the multiple and simultaneous users’ touches into interaction gestures meaningful to the application. The Multitouch Gesture Recognition Engine also has the ability to connect with any existing application (such as GoogleEarth) by emulating the mouse and the keyboard.

3. A set of software components which provides a rich set of predefined capabilities for
building truly multitouch, highly interactive and communicating applications using the Adobe’s AIR, Microsoft’s Windows Presentation Foundation or IntuiLab’s IntuiKit frameworks.

Examples of such components are: a virtual keyboard and touchpad, picture and video handling, office document manipulation, 2D/3D map and terrain navigation, etc. These components are highly customizable, in particular their graphical skins that can be tuned using products such as Adobe Illustrator or Microsoft Expression.

所以果然是三層式架構,只是其中所有苦力都要自已來,尤其是那個關鍵的多點觸控辨識器,但一旦這一層解決,下面的 air 表現層就容易了,大抵是乖乖接收各種事件然後做出反應,當然,多點觸控的操作模式下整體的介面設計、使用者經驗又是大不同,或許想成是一個 42″ 的超大 iphone 躺在前面,而且有 4-core cpu 外加超強 multi-tasking,這樣就很接近了 XD

另外目前硬體有兩種,如下圖(好奇的是,台灣眾多代工廠何時能量產這玩意?還是已經有了?價格如何?):

Picture 2.png

影片最後他也提到這套系統不是只能在 windows 上跑,將來也可以在 netbook 與手機上執行,因此,理論上,像 iphone, palm pre 這樣的多點觸控介面日後一般人也可以自已來,我覺得台灣一票 netbook 廠商既然現在已經想再朝 tablet 方向發展一次,不如就直接整合多點觸控,然後好好搭配軟、硬體弄出一套方便的 solution,不論是要看電子書、上網、簡報等,應該可以玩出不同的格局,不然 netbook 這波的趨勢看來很快又要搞成價格戰,最後不但沒人獲利,還打到自家 laptop 銷量,得不償失呀…

btw, 最後我也跑去看了一下 microsoft surface,但目前似乎也沒什麼動靜,到底還有沒有在發展啊?

附帶一提,這篇文章是在 wordpress 2.7 裏編輯的,新版介面真正是越改越難用,很不容易的成就吶 -_-b

comments(3) | by admin

mobile phone