這是我 2/26 在中研院 OSSF 工作坊和 3/23 在 Ruby Tuesday 所演講的題目之二。
關於 Performance,有四個最好不要做的事情:
- 過早最佳化
- 亂猜哪裡慢
- 到處做快取
- 與 Framework 過不去,硬要 Hack 它
然後有五條關於 Performance 的須知:
- 演算法的改良永遠勝過硬擠程式碼
- 一般來說,程式碼維護性的重要性勝過效能
- 只最佳化最需要的部份 (80/20法則)
- 測量再測量,最佳化前、最佳化後都要測量
- 必須與程式碼彈性做平衡。有時候做了最佳化之後(例如快取),會犧牲掉一些彈性。
其他就看投影片吧。這份投影片主要還是關注在 Web application layer,也就是 Ruby 程式語言和 Ruby on Rails 上。有點小可惜的是篇幅和準備時間所限,關於 Front-end performance、NoSQL: Key-value stores 和 HTTP Caching 這三個主題是我覺得可以多講一點的東西。
有了效能,也許你會想進一步知道如何做 Scaling? 不同於 Performance 探討單一台 application server 可以服務多少 requests,Scaling 要探討的問題是如何擴展架構到多台伺服器上來服務更多流量。當然 Performance 會是做 Scaling 的一個重要的因素,不過 Scaling 需要考量的地方又更多了,包括:
- Asynchrony Processing (Message queue)
- Partition Component using SOA
- HTTP Reverse Proxy Caching
- Distributed Filesystem/Database
其中 Asynchrony Processing 和 SOA 的部份,我在 Distributes Ruby and Rails 的演講有分享過。
xdite 也有針對 Scaling Rails Site 這個主題寫了一系列的 Scaling Rails Site: Reading Material 來介紹: #1, #2, #3, #4, #5
Slide 42 should be milliseconds, I think.
Great presentation!
Yes, it should be milliseconds. thanks.
非常棒的演讲!