Posts Tagged ‘Scalability’

什麼時候 Scale?

July 27th, 2011

前陣子,在他們的產品發表會,Gulu 的 Jimmy 在台上脫口說了:「Jamie 說技術不重要!」回來之後,為了澄清這句話的前因後果,我於是寫了一篇「技術到底重不重要」。

而這個討論就從那邊開始延續了下去,除了我的文章下面出現的 75 則回應之外 (蠻精彩的,你們可以去讀讀),Jimmy 幾天前也在他自己的網誌闡述了他的想法 — Scalability Matters for Web Startup,他說:

(W)eb startup developers… should think about scale before they write their application. Building your app, for example, using scala on mongoDB and set it up to autoscale on AWS is smart, is free, and is easy!

基本上的意思就是說 Scale 並不難,也不貴,所以你應該從一開始就做。

而接下來的幾天,大家便在 Inside 討論了起來。到了昨晚,Xdite 也在他的網誌發表了「Startup 需不需要一開始就注意 Scale 的問題?」,他說:

在這個議題中,我覺得最容易混淆的點是:將 “Scalability” (擴充性)與 “Maintainability” (維護性)混在一起講… 如果不把 Maintainability 做好,很快的,你的 code 在三個月之內就會腐爛而且臭不可聞… 一個產品需要被重視「Scalability」,通常是在人為的「調整」費用高過「直接買機器」、「轉換成為另外一種架構」的成本這一類的狀況,才有可能發生…

很清楚也很棒的解釋。

其實如果你仔細想想,這個問題的核心根本不是「Scalability 重不重要?」,因為廢話它當然重要,只是重要的「時間點」到底在哪裡。也就是說,講這麼多,大家其實真正在討論的根本就是「什麼時候 Scale?」。而這個問題是沒有標準答案的,所以能夠有這麼多人發表他們的意見,是非常棒的一件事。但最後你們自己要參考各方觀點之後,根據你們自己的能力和資源,去做出你們自己的安排。

未知需求 vs 成本風險

對我來說,這是一個「未知需求」 vs 「成本風險」問題 — 當你不確定有沒有人喜歡你的產品,先開發給 1,000 人用的 MVP (Minimal Viable Product),花的時間和力氣比較少,風險相對的也比較低。

appWorks 輔導 50 個創業團隊下來,我的經驗是通常你的前面 5~10 個 MVP 是沒有人要用的,因為你對市場的理解度還很低。所以當你可以用少一點的時間、少一點的開發精力去驗證你對市場的假設,如果事實證明你是錯的,至少不會那麼心痛。

接著你會不斷的 pivot,到了第 11 個 MVP,終於讓你找到了 PMF (Product Market Fit) — 也就是確定了這個產品真的有 1,000,000 人要用。這時候,你再花資源下去,把它升級成 1,000,000 人用的架構。沒錯,這裡面可能有很多code 要重寫,但是至少前面 10 個嘗試,你沒有浪費太多珍貴的資源。

假設你對市場的理解度不高,用這樣的 Lean Startup 方式去創業,11 個嘗試下來你的期望值是比較高的。當然,如果你對掌握市場的需求很有自信,或是已經有明確的通路,那就相反,應該像 Google+ 一樣,從一開始就用規劃給 1 百萬甚至是 1 億人的 Waterfall 方式執行。

另外,從 1,000 人規模化到 1,000,000 人,其實也不一定要大幅的重新寫 code。我的經驗和 Xdite 說得很像,有時候就只是把機器從 AWS 的 Micro Instance 升級到 XL Instance,或是加上 App Server Load Balancing 架構而已。唯有當這些架構升級都已經無法滿足,或是邊際成本過高時,你才會真的去大幅度的把程式碼 refactor。

以上,希望這些討論能讓你對於 Scale 這件事情有更深入的了解,也更能決定自己的規模策略,加油!

有興趣多了解 Lean Startup 的精神和方法?第四屆 appWorks 育成計畫即將在下周正式開始接受申請,敬請期待。

歡迎在 Google+ 上加入我們的討論

(Image via jdhancock, CC license)

技術到底重不重要?

July 18th, 2011

昨天下午我去參加了 Gulu.com 的產品發表派對,結果被我的好朋友,Gulu 的創辦人兼 CEO Jimmy Chen 直接在台上點名,說:有一次 Jamie 跟我說技術一點都不重要,讓我好難過。可是我覺得 Jamie 錯了,技術根本就很重要!

啊!我們又回到這個敏感的問題了。

我常覺得技術就有點像是身高一樣,身高重不重要?問這個問題,高個兒都會說:「應該重要吧!」但是如果你退一步想,當然是先看你要打什麼球啊!

不過光這樣講也太混,今天的文章當然不能只有這樣。要討論這個話題其實很簡單,首先,我只要把「技術」先解剖一下,你就知道問題出在哪裡了,技術其實大略可以分為兩大類:

A) 功能的技術 — 這類型的技術讓一個網站可以做到你想要它做到的功能,所以像是 PHP, JSP, HTML5, CSS3, SQL 等等,大略可以被歸入這一類。

B) 規模的技術 — 這類型的技術讓一個網站可以從 100 個人同時使用,長大成 100 萬人同時使用,所以像是 Load-Balancing, Clustering, Fail-Over, High Availability, CDN 等等,大略歸入這一類。

也就是說,A) 就是我們常說的「程式開發」(development),而 B) 則比較像是「軟體/系統工程」(engineering)。

硬底子技術

再來,近年由於「開發」工具日趨成熟,所以 A) 類型的技術也越來越平民化,最好的例子就是 Ruby on Rails 的入門課,就是寫一個 Twitter,於是乎 A) 也越來越少被人稱作「技術」。相對的,雖然一樣有越來越多的工具,但是 B) 其實仍舊是一門非常高深的學問,即便是 Google、Facebook 這麼成功的公司,花了那麼多錢去請最頂級的工程師,還是常常會碰到網站掛掉的情況。所以,到後來,當我們說到「技術」,越來越是在討論這些最難的規模化理論和實施細節,越來越少是在討論做出一個可用產品的過程。

成本/時間

從另外一個角度去看,A)  相對於 B),是非常便宜的。你可以請一個稍微有一點功力的開發人員,只要懂得運用市面上的工具,多多少少都可以把你想要的網站雛形做出來給你。但是要做到  B),沒有花大把鈔票,雇用經驗豐富的一流工程師,使用第一流的設備,是很難達到那個水準的。另一方面,A) 相對於 B),也是比較快的一個實作過程。

風險

了解了這些,我們就可以回到「B) 規模技術」重不重要這個問題。答案是當然重要,當你確定有 100 萬人同時要用你的網站時。問題是你要怎麼確定?當然是先用 A) 功能技術做出一個雛形 (或稱 MVP),去確認市場的需求。為什麼?因為 A) 比較快,也比較便宜。沒有必要在還不確定市場的需求前,就投資珍貴的時間和成本在 B) 規模技術上。

而這,就是 Lean Startup 的最核心精神。所以,當我說「技術不重要」的時候,其實真正的意思是「規模技術一開始不重要」。這樣,清楚了嗎?

歡迎在 Google+ 加入我

(Image via jurvetson, CC license)

©2024 MR JAMIE.
網站由 Allen Hsu 設計 | Logo 動畫由 Wen Chen 完成