我是如何在 72 小時內復刻 ClubHouse 的
大家好,我是白宦成(@bestony),前幾天在 B 站直播寫 ClubHouse 復刻版的開發者。當然,除了這個身份,在真實生活中,我還是 Linux 中國開源社區的技術負責人,負責開發我們自己的自用工具和平台。
作為一個 indiehacker(自詡的),我想和大家一起來複盤一下,這一次的直播活動和意料之外的爆火。
為什麼要做 NESHouse
我其實想到復刻 ClubHouse 的時間是非常早的,我是在 2 月 1 日拿到了 ClubHouse 的邀請碼,在試玩了一段時間以後,就覺得這個軟體還不錯,理念很有意思,但並沒有太在意,放在了一邊。可到了晚上,因為知道 Elon Musk 要來做分享,作為一個比較欣賞他的人,我自然不能錯過,但遺憾的是,當我打開 ClubHouse 的時候,已經有太多的人湧入這個 App,幾乎無法使用,總是不停的卡頓。
這時讓我產生了懷疑:這個東西到底有多少的工作量?為什麼這麼容易性能卡頓?
結合實際的使用發現,有些時候,我可以正常聊天,但是卻會報錯,可以發現問題不在語音服務,而是在 ClubHouse 自身的業務能力不足以支撐超過預期的訪問量。
我上一份工作是在一家雲計算企業工作,所以相對來說,對雲計算產品有一定的了解。在我看來,這樣的一個產品的增量,很難把現有的雲計算產品的服務容量打穿,你能想像 ClubHouse 把 AWS、GCP、Azure 等雲服務廠商打穿么?
我覺得,要麼是開發者的大規模服務的架構經驗不足,雖然用了雲,但是沒設計好,無法充分適應彈性;要麼是開發者沒有對超過預判的訪問量做的預案不足。
這就讓我思考,我能否復刻一個 ClubHouse?用一些更加具有彈性的服務?給大家打個樣? 雲計算是好,但用起來也要姿勢對,才能不出問題。
72 小時復刻一個 ClubHouse,是一個什麼概念?
既然要復刻項目,自然要做的不能和碰瓷的一樣(這裡鄙視幾家碰瓷的 App,拿很久之前寫的具備了語音聊天的 App,來碰瓷 ClubHouse)。
但我又不希望在這個事情上花費太多的事情,我還有很多更重要的事情要做,所以我選擇了 72 小時。48 小時或 24 小時是一般的黑客松的時間長度,但我確實又不熟悉這個項目,所以用 72 小時比較穩妥。
於是便立了一個 Flag ,說我要在 72 小時內,復刻一個 ClubHouse。立了個 Flag,說干就干。關於這 72 小時,我希望可以強調兩點,也希望這兩點能夠幫助到你。
1. 明確自己要做的和不要做的
我的時間和精力以及資源都有限,所以並不是什麼東西我都能要的。比如在做復刻的時候,考慮到我如果開發原生的 App 或者小程序,就需要提交審核。那我就不能選擇做 App,不然 72 小時到了,審核還沒過,就食言了。也是出於審核的考慮,我最終選擇了使用 Web 的方式來開發 NESHouse。
而到了具體的功能特性層面,受限於 Web 和 App 的機制不同,我很難要求用戶必須做什麼樣的操作,也很難確保 App 響應什麼樣的功能,因此,我對於 ClubHouse 的功能進行了一些刪減,邀請上台之類的功能,我就選擇性的先不做,將重點放在更加重要的功能中。
在開發黑客松項目的時候,一定要先想清楚自己要什麼,不要什麼,這樣才能確保自己在給定的時間內完成自己的工作。不然大概率會發現時間馬上要截止,但核心功能還沒有研發完成。
2. 選擇一些新的、以後可能會用到的技術
在這次項目開發的時候,我選擇的前端技術棧並非我過去慣用的 React、Vue ,而是一個相對小眾 JS 框架的 Alpine.js。
選擇 Alpine.js 的原因很簡單,我後續需要在其它的項目上使用這個框架,但我此刻確實也不熟悉。如果我在這 72 小時里把這個工具用了一遍,如果評估覺得不錯,我就可以在後續的項目中使用,如果這次我用的不太好,那我損失的也只有 72 小時,比在正式項目中使用的損失成本要低很多。
而在另外的兩個服務,選擇起來就簡單多了:
- LeanCloud 的雲服務我使用了很多年,使用體驗也很不錯,而且他們這種 Serverless 雲服務,可以讓我在開發 NESHouse 的時候,免於去寫很重的部署和基礎邏輯,更加專註在業務邏輯上。
- 音頻服務我則選擇了國內用戶比較多,開發起來也比較方面的聲網,聲網的 API 比較簡單, NESHouse 中的聲網音頻接入只用 4 行代碼就實現了。
除此之外,便是使用了 NES.css 這樣的 CSS 框架,來讓這個項目更加的有趣,更加的 Funny。
對於開發黑客松項目的時候,可以想想自己能否接受這一次的失敗,如果可以接受自己的失敗,不妨將這次黑客松看做是一次玩的機會,玩一玩新的技術,就算失敗了,也不過是損失給定的時間。但如果你在工作項目中出現了問題,損失可就大了。
總結
72 個小時的復刻對於我來說不算難,實際上我也只花了 55 個小時就復刻成功了。但更難的,是如何讓一個開源項目持續的成長下去,持續的獲得用戶、獲得關注。
最後,大家感興趣的話,可以移步復刻這個項目,看看你能不能做一個自己的 ClubHouse: https://github.com/bestony/neshouse 。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive