訂閱本網誌: Facebook, Google+, 電子報, RSS

什麼時候 Scale?

July 27th, 2011 by Jamie

前陣子,在他們的產品發表會,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)

歡迎訂閱 MR JAMIE 電子報
讓新文章自動寄到你的信箱

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