10/19/2006

Ruby on Rails 的速度議題 Part 2

一個我覺得更離經叛道的觀點,大家不贊同沒關係

為什麼網頁伺服器上面軟體速度不重要?
  1. 因為根據上一篇的說法,Application Server佔的比例不大(又是我的經驗...>_<)
  2. 因為當你的Ruby速率成為焦點之前,資料庫會先搶著成為焦點。Application Server 可以分散,資料庫考慮資料同步問題,不容易分散。往往第一個瓶頸會出現在資料庫(資料庫大小,能夠接收request 數量)
  3. 現在網站的傳輸時間所佔比例只會更多,不會更少。相簿,影音網站當道,傳輸量動則上 MB。Application Server 的速度比例會繼續下滑

最後一個觀點,也是我一直覺得會被戰的觀點。不管你喜不喜歡這個詞,網站已經進入 Web 2.0 的時代。Web 2.0 可說是一個最令人興奮,也最不負責任的時代 。永遠的 Beta 掛在網站 Logo 上面 ,代表的意義是,我們的功能很新,很有趣 。但是網站掛掉了你自己倒楣,沒人負責任

在這個時代裡,所有軟體開發的觀念全部被Web 2.0否定。不需要完整的 TEST ,交給使用者去幫我們 Debug。 只為了一個字
功能新穎
有了功能新穎的網站,才能抓住使用者的眼球,才能吸收更多的使用者,才能吸引投資者增資,抓住創投的心。 這個時代的軟體開發框架,必須要 " 開發時間最快 " 。因為你必須趕在對手之前提出新功能 ,繼續打敗你的對手 ,才能夠繼續留住你的使用者 ,以及留住你的投資者。 或許那天真你用 Ruby on Rails 快速的開發時間開發出一個很好的網站 ,使用者很喜歡,你的網站流量已經很大了 ,Ruby on Rails 速度已經稱不住了 ,怎麼辦?

但是理論上來說,在撐不住之前,你的投資者看到你的網站的流量,以及前景。會有人增資,你有更多錢買更好更多的硬體,所以你的 Ruby on Rails 又變得可以撐的住 XD。要舉最貼切的例子,0rz.net雖有流量,但是沒有任何商業利用的空間下,站長宣佈資源不夠,不想玩了。一週內,Pixnet 就跳出來幫忙了,0rz.net 雖然沒有任何商業模式的誘因,但是有流量的網站就有人要投資。

但是如果選用執行速度較快,開發時間過長的開發框架,你的功能研發速度輸給對手 。所以在這個莫名其妙的 Web 2.0 時代 ,你不太有可能獲得更多太多使用者 ,流量根本也無法滿足Server 撐不住的情況, 那你的投資者不會投資你.........

開發速度快 -> 推出新功能時間快 -> 使用者很喜歡 -> 流量大 -> 伺服器快要撐不住 -> 投資者增資 -> 買更好的硬體 -> 持續運作

開發速度慢 -> 推出新功能時間慢 -> 使用者不喜歡 -> 流量小 -> ?


在這個詭異的 Web 2.0 時代,Application Server 負擔的責任就是
快速開發時間
因為有快速開發時間的需求,Ruby on Rails 才會那麼的爆紅。所以我一直提到快速開發時間很重要。為什麼?因為沒有快速開發時間,就沒有網站的增資 XD。就不能像 YouTube 一樣,脫手賺個天文數字(越講好像越鼓吹不良風氣?)。

語言的速度是否就等於框架的速度?

最後要講到一件事情,根據一些外電報導,就算 JAVA 比 Ruby 快,JAVA 的 Struts+Spring+Hibernate 在某個測試是輸給了 Ruby on Rails。
The Java app's configuration alone was nearly the size of the entire Rails codebase, and Rails application was significantly (15%-30%) faster! At the same time, the Ruby community is abuzz because Ruby is getting a new optimized bytecode compiler for its upcoming 2.0 release.

PHP 眾所皆知比 Ruby cgi 來得快,但是用 PHP 寫的的 Symfony 在某些測試都比 Ruby on Rails 的速度來得慢。Perl 速度也是很快,但是 Perl 的 Catalyst 速度在這個測試卻是輸給了 Ruby on Rails 。
it seems like Rails is roughly 62% faster than Catalyst at this time.

雖然上述都是部份測試,不是很完整的測試。但是 Ruby 比 JVM ,PHP,Perl 來得慢是事實,可是 Ruby on Rails 框架速度卻贏過這些框架。只能說
語言的速度並不直接等於框架的速度
你語言速度快,實做出來的速度慢,那等於沒搭(Hibernate 在某方面功能比 Active Record 強,不過應該也是這樣付出了效率的代價)目前就我看到的比較來說,Active Record 是市面上兼具功能強大,速度不錯的 ORM 系統,那已經相當完美了。

以上就是我的觀點,大家批小力一點 XD

沒有留言: