無名的 service level 挑戰

前幾天下樓吃午飯時,同事安東尼聊到:無名小站的 service level 不太好,因為它用的是 PHP…。這裡的 Service level,指的是網站連線的穩定性、服務水準,也有很多人用 Quality of Service (QOS) 一詞。這是任何網路和電信業者,在用量超過一定程度之後,必須面對的問題。不管是在 IT 網管、電信網路,或 SOA 領域中,光是針對 service level 的監控和管理,便有許多軟體、方法論、和解決方案。那麼在新興的 Web 2.0 領域呢?

巧的是,就在安東尼提到無名的那天,我剛聽過一篇 podcast,由 Robert Scoble 訪問 XML 的作者 Tim Bray。聊的話題很雜,除了 Tim Bray 近年來致力的 Atom 格式(它彌補了 RSS 的一些缺陷)之外,Tim Bray 也提到,儘管近年來 Ruby、PHP、Perl、Python 等 scripting 語言大興其道,讓 Web 的開發人員大幅發揮生產力,但他這個古板(英文叫 “old-school”)的 Java programmer依舊認為在有些場合中,Java 和 C# 仍有其強處。他們後來又聊到網站穩定性、延展性這類平行運算的問題,是許多網站必須面對的一大課題。Tim Bray 認為由於 J2EE 先天上便將平行運算的功能設計在內,所以對採行 J2EE 的網站而言,已獲得起碼的照顧。至於那些採用 PHP 等 script 語言和 LAMP 堆疊的網站(像無名),就不見得那麼順利了。如果他今天是一個年輕氣盛的 CS 研究生,他絕對選擇這個領域來鑽研,因為它還有許多不足的地方,發展的空間很大。他同時提到,有一個鮮為人知的非主流語言,叫做 Erlang,是電信業大廠 Ericsson 二十年前所發展出來,從一開便專為平行處理所設計,上百萬行的 code base,是個非常 solid 的設計,自1998 年起,已經 open sourced。它屬於一種 funtional language,非 OO。有完整的配套 servers — 它的 Web server 叫 Yaws (Yet another web server),有自己一套動態網頁的開發方式;有一個叫 Eddie 的 load-balancer;名字最可愛的要屬它的資料庫 Mnesia (與英文「健忘症」一字 “amnesia” 同音)。

在網上搜尋 LAMP 如何做平行運算的課題、和 Erlang 資訊時,發現一篇很有趣的論文,作者一一分析 LAMP 和企業級 J2EE 架構在 -ilities(即 reliability, scalability, availability 等以 -ility 結尾的特性)方面的措施,以及維運方面的複雜度,用來和 Erlang 架構作對照,最後論述 Erlang 的優越性。

LAMP 堆疊是否在 HA、fault tolerance 這方面不如 J2EE/.Net?或許見仁見智,上述觀點也只是 Tim Bray 個人的看法。不過這倒點出了 Web 2.0 網站經營的一大成敗和致勝關鍵 — 誰能運用既便宜、生產力又高的軟體,同時又能設計出一套平行運算的獨門機制,來確保高標準的 service level 和無限的擴充性,誰的贏面就大幅提升。沒有人比 Google 更重視、更早體認到這個層面的重要,之前寫過,Google 聘了一批博士,專門研究平行處理的問題,從硬體到軟體,都有一套獨特的自製秘方。當然,也已經有廠商體認到這塊的商機,例如 ActiveGrid 和 Zend,便為使用 PHP 的網站提供 HA 的解決方案和服務。

說到 Robert Scoble,他號稱是全世界最有的 blogger,以寫部落格聞名於科技界。幾個月前才剛辭去替微軟用部落格打 PR 的工作,到 PodTech.net 當副總。愈來愈多的企業,開始利用部落格和 podcast,來和客戶建立更緊密的關係。PodTech 的經營模式,看來也是想替企業做這類的規劃設計。

明天得 5 點起來去爬山,得趕快睡了!

01
10/11/2006 11:39 am

『Web 2.0 網站經營的一大成敗和致勝關鍵 — 誰能運用既便宜、生產力又高的軟體,同時又能設計出一套平行運算的獨門機制,來確保高標準的 service level 和無限的擴充性,誰的贏面就大幅提升。』 這句成了我一個重要的讀書筆記,也是很多網路創業家需要思考的問題,感謝勞虎。

02
10/12/2006 11:35 am

以軟體工程角度來說,很多 nonfunctional requirement 都會影響到程式架構。如果不趁系統亂度還不大的時候及早考慮而預留彈性空間(我說的不是及早實作出來,而是及早預留空間),事後恐怕未必很容易就調整過來。

當然啦,這和 agile development 觀點有些衝突,和 Albert Lai 在 Web 2.0 研討會所講的 “don’t waste time pre-scaling” 也有衝突,但我還是比較認同 Mike Arrington 所講的 “Shard attributeds of losers: forgot about scaling“;尤其是當許多 Web 2.0 網站都是急就章地用 LAMP 兜起來,沒有太 solid 的軟體架構思考時。

03

[…] 勞虎跑得快 » Blog Archive » 無名的 service level 挑戰 10/11 11:40, 2006 引述 :『Web 2.0 網站經營的一大成敗和致勝關鍵 — 誰能運用既便宜、生產力又高的軟體,同時又能設計出一套平行運算的獨門機制,來確保高標準的 service level 和無限的擴充性,誰的贏面就大幅提升。』 service level 在創業階段恐怕沒有比Business Modle還要重要,可是說真的創業成功了要再改 service level ,其實也是很不容易的事情!其中抉擇得好好衡量。 […]

04

[…] 這趟旅程是從這篇文章開始的,隨即逛了這個 Yariv’s Blog,裡面對 Erlang 大加讚揚,認為Erlang在Web領域淺力無窮,尤其隨著 Comet 對 server scalable 能力的要求,更可以展現它高度的性能。 […]

05
11/02/2006 5:53 pm

其實安東尼在接觸Java之前都是寫PHP的,所以對於PHP和Java在伺服器端的運作模式也還算勉強懂一點點啦!

當然網站的流量負荷並不是由技術來決定的,固然有像是digg.com, sourceforge.net這樣的網站以PHP來作為平台,但是他們為了系統調校而多花的Effort是很驚人的。

作為完整的開發平台,我認為PHP缺乏了相當重要的Connection Pooling以及Message Queue等機制;作為純Web的展現平台,PHP又缺少了能夠對網頁輸出做Pre-post process的能力,讓以這個平台作為開發的應用在的邏輯架構延伸性、針對效能所需要做的大量取捨。所以你比較常見到的PHP網頁都是內容導向的:不需要處理複雜的交易邏輯。

當然Java本身也是一個平台,開發人員當然可以把這平台豐富的功能自行取用,導致一些比較先進的功能沒有派上用場。所以,開發人員的實力還是決定了一個網站的負載能力,但是純粹從平台的觀點上,Java提供了比較豐富的功能來達到這些目的。

就舉一個很簡單的例子,就目前看到的PHP Package裡頭,似乎還沒有看到HttpSession的Replication。這點不管是Open source或者Commercial的Java Application Server都有支援,但是PHP的部份,似乎還沒有什麼著墨。缺乏這樣的功能,PHP的程式設計師在設計一個以數十台機器作為叢集架構的網站的時候,恐怕只能自己想辦法去客製出能夠將使用者狀態複製到其他台機器的邏輯,而Java的程式設計師則可以透明的享受這樣的好處。過去在做PHP的程式設計的時候,常常看到要為了達成PHP Cluster的功能,而將過多的資料塞在Cookie裡頭,或者將狀態寫到資料庫;像這樣的事情,一個Java的程式設計師是比較不用操心的。

其實安東尼本身是很喜歡Scripting Languages的,尤其最近對RoR有著濃厚的興趣;事實上如果PHP, Ruby on rails等技術有辦法Porting到Java EE的平台上的話,說不定是一件很好的事情。Get the best of both worlds.

06

[…] 題外話,這些PHP-based的網站,似乎真的比較容易碰到類似擴充性的問題…我不是說PHP不好,倒是本質上使用PHP是比較要先多想想網站未來的流量與負載,畢竟對PHP來講平行擴充是比較痛一點~:P(其實是又想吹捧J2EE一下啦!:P)當然規劃的好絕不會有問題,我指的是所必須花費的工夫看起來可能值得商榷。瞧瞧勞虎的說法吧! […]

07
little fish
1/02/2007 12:08 am

網頁技術php的,國內除了無名小站外,樂多的也是…只是這陣子無名風頭太健,也因此被點名的機率大幅提昇了…
個人一直認為google的網頁技術是黃金夢幻級的..在最近一次作專案的經驗裡,運用某種技術,雅虎或其他各網站尚不成問題,唯獨google會有問題…這個時候,也只有打哈哈的說:google的網頁技術太先進了吧:p

08
FOH
1/23/2007 5:54 pm

我記得前一陣子看到一則新聞,中正大學某教授開記者會發表WEB3.0的新聞。看了之後有個感想,這跟
一堆大學爭先恐後改名成XX科技大學有什麼兩樣??哪天別的學校也來搞個WEB4.0,也開個記者會,好像
自己就是全球網際網路的領航員一樣…

世界上有誰能夠同時精通ASP、PHP、JSP、Ruby….甚至是不知哪冒出來的Erlang,如果有的話
除非他是IQ200,或是他能活200歲,或是他整天就是寫程式,其他什麼事情都不用做,才有可能吧

大家爭先恐後發表一些程式設計師學都學不完的語言,除了表示自己很厲害以外,還有什麼好處??
最後乾脆都不要爭,發展出一種用組合語言來運行的網頁程式,大家通通改用組合語言寫網頁
效能保證一級棒!! 又能展示自己超強的機械語言能力 一舉打回原始時代。

Ruby on Rails,號稱15 分鐘內寫出一個部落格網站,而且整個程式只有58行碼??
這像話嗎? 正牌的程式設計師一看就曉得,RoR不過是小孩子的玩具罷了。
改天又發明一個一行寫出一個部落格,取名叫Fxxking On Hell (FOH),會不會
也在網路上造成一股炫風??

Erlang,電信業大廠 Ericsson 二十年前所發展出來,效能奇佳,那為什麼沒人用??
答案很簡單,如果每次某某大廠又發展了一套號稱宇宙效能最好的語言,那是不是就
又要去學一次? 每年都有一個最強語言發明出來,那不是一輩子都學不完??

所以正確的反應是,給他拍拍手,好厲害喔!! 效能好好喔!! 要維護的話,應該要自行
培養不少工程師耶?? 否則一但有人離職,還真找不到人接手呢。 要花多少錢培養? 研發??
哪有什麼關係,反正是大廠嘛!!

當噱頭看看就好,然後還是回來寫自己的PHP比較實用。

Leave Your Comment

Name*
Mail*
Website
Comment