前幾天下樓吃午飯時,同事安東尼聊到:無名小站的 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 點起來去爬山,得趕快睡了!