【上雲2大紅利失效,但一年上雲費用近億】知名SaaS公司為何要下雲?37signals應用搬家歷程大公開

早在2022年10月,開發框架Ruby on Rails之父David Heinemeier Hansson(簡稱DHH)突然發了一篇文章,立刻成了科技圈熱烈討論的話題。他宣佈,37signals決定離開用了多年的AWS和Google Cloud公雲,不再上雲。

這家成立於1999年的公司,最有名的代表作是在2003年推出的專案管理工具Basecamp,十年後,也就是2013年時,成為當年全球最受歡迎的專案管理App,當時管理了多達8百萬個專案。Ruby On Rails框架正是DHH當年打造第一版Basecamp所發展出來的技術框架,在2004年開源釋出了,掀起了一波簡潔開發的風潮。

Basecamp這項產品持續發展至今,2022年推出目前的第四版,全球超過10萬家企業採用,註冊用户超過了350萬人,至今,Basecamp每個月的流量超過1,500萬人次。Basecamp的用户分散在全世界,美國約只佔了4成,其次像加拿大、印度、英國、菲律賓都有不少用户。主要用户來自行銷和廣告產業,其次才是科技產業。在2020年時,37signals切入了郵件服務領域,推出了Hey,上線才3周,就有30萬人進行註冊試用。

為何這麼一家全球知名的SaaS服務決定下雲?第一個原因就是費用太高!以推出2年多的企業級郵件服務Hey為例,目前有30萬用户,但是,這個服務所用的AWS RDS資料庫服務和ES搜尋服務,兩個加起來的費用,一年高達60萬美元(台幣1,860萬元)。甚至,在2022年時,37signals總共付給了2家公雲的費用,高達320萬美元,相當於台幣1億元,這對一家中小型軟體公司而言,是非常龐大的成本負擔。DHH認為,對一家25歲的中型的軟體SaaS服務商而言,產品用户和用量穩定成長,無法享受到上雲的好處,卻得面臨昂貴的成本。

上雲兩大好處,不再對37signals有用

他進一步解釋,上雲兩大好處是,第一是應用程式功能單純,而且流量不大(用户不多時)時,可以透過完全代管的雲端服務,來降低複雜度,「對於新創,上雲是很好的入門方式。」他強調,但對已經上雲十多年、穩定成長的37signals而言,複雜度沒有因上雲簡化太多,維運團隊的人數更是逐年增加,2021年時約57人,是十年的2倍多,沒有因為上雲而縮減規模。第一個上雲好處對37signals而言,已不再是一種紅利。

另一個業界常提到的上雲好處是,上雲可以因應高度不規則的負載變化,例如有突然的爆量,或是高低落差很大的用量變化,因為無法事先知道所需要伺服器數量來準備,就很適合上雲,這是許多企業想要上雲的理由。

像37signals在2年前剛推出Hey郵件服務時,原本預期半年達到3萬用户,卻在短短3個禮拜就暴增了30萬註冊者。「這個爆量成長階段,就很適合上雲。」DHH事後回顧。但是,經過2年,Hey郵件服務的用户和用量的成長速度趨於穩定。

DHH認為,上雲兩大好處,都不適用於現在的37signals,為了因應可能的爆量情況得付出龐大的代價,他這樣比喻,就像沒有住在斷層帶,卻要付出房價四分之一的地震保險費,這個代價一點都不成比例。

除了成本節省、無法享受上雲好處之外,DHH認為,選擇不上雲還有更根本的動機,可以重新思考一家軟體商該用什麼樣的網際網路來運作。

2022年上雲費用大公開,320萬美元用在哪裡?

DHH這個下雲的宣佈,引起了網路上雲支持者和反對者的大論戰,許多人紛紛寫信問他,到底他們怎麼用AWS,為何可以節省這麼多錢?為了更清楚説明上雲成本的影響,這家公司也2023年1月中,公開了2022年的上雲費用結構。

這家公司旗下有7款產品,Basecamp和Hey是目前主力產品,也是唯二對新顧客銷售的產品。其他還有多款不再對外銷售的舊產品,包括了Basecamp Classic、Basecamp 2、Highrise、Backpack、Campfire、Writeboard和Ta-da List。這些老舊產品至今仍有數萬名用户,每年可以貢獻上百萬美元的收入,例如13年沒有更新的Basecamp Classic年營收仍超過百萬美元。所以,37signals承諾,這些產品會繼續支援到網際網路結束那一天。

37signals在2022年付給公雲業者金額,加起來高達320萬美元,相當於台幣1億元。這個費用主要分為兩個部分,一個是37signals旗下SaaS產品的AP上雲費用,約230萬美元,另一個部分是高達8PB用户資料的雲端儲存費用,約90萬美元。從單一產品來看,30萬名用户的Hey郵件服務,完全用各種雲端服務打造而成,上雲成本也非常高,光在2022年的上雲費用高達1,066,150美元,相當於台幣3,343萬元

預估未來5年可省台幣2億元

公開下雲計畫的隔月,37signals就下單買了一批價值60萬美元(台幣約1,860萬元)的Dell伺服器,來因應未來的成長需求。37signals不是所有的系統都部署在雲端,原本就租用了資料中心代管服務商Deft在兩座機房中共8個機櫃,也由他們代管、維運機房內的實體伺服器,沒有自己親手管理實體伺服器。

以5年攤提年限來估算,新購實體伺服器每年攤提的成本約12萬美元,再加上37signals每年付給Deft約72萬美元,包括機櫃等設備租金、頻寬、電力。兩者加起來的實體機房新增成本是一年84萬美元。37signals旗下產品的AP上雲費用約230萬美元,將這些AP改由本地機房接手後,DHH預估,兩者相比,一年可節省150萬美元,5年共750萬美元,扣除50萬美元用來因應不可預期的備用預算之外,「下雲後,未來5年可以省下700萬美元(約台幣2.1億元)的上雲費用!」他強調。

為了下雲,37signals買了一批價值60萬美元(台幣約1,860萬元)的Dell伺服器,共20台R7625伺服器,一台R7625伺服器內有兩顆AMD EPYC 9454處理器,每個處理器有48個核心和96個執行緒,20台可以提供到近4千個vCPU,內建記憶體也達到7,680GB,還有384TB的第四代NVMe儲存容量。 (圖片來源/37signals)

放棄K8s,自行打造全新Web應用部署工具

不過,下雲之路,沒有DHH想像中的容易。原本37signals想直接在本地端機房部署一套Kubernetes環境,取代原本所用的AWS EKS,可以保留多年累積的技術成果,只需要將原本的工具指向新的本地端環境。

但是,一套AP運作需要用的不只是K8s環境,還需要許多配套機制和服務,要改用實體伺服器建置Kubernete叢集來部署,這些配套機制同樣需要針對本地端環境調整,這是一個高度複雜的任務。

再加上商用Kubernetes管理工具的費用要價不菲,後來,37signals乾脆連Kubernetes都不用,自己開發了一套容器部署管理工具Kamal,可以直接在裸機上安裝和管理相關的容器化應用。2023年2月,37signals開源釋出了這套讓他們成功下雲的關鍵工具。

37signals在實體伺服器上採用的架構是開源軟體的技術架構,使用KVM來提供虛擬機器,來分割實體伺服器的運算資源,再透過Docker執行容器化的應用,每一隻對外服務的Web應用都是Rails應用。

37signals如何配置本地實體機房

到了2023年4月,37signals新採購的伺服器到貨,直接寄到租用的代管機房,一座位於芝加哥,另一座位於維吉尼亞州的Ashburn,由長年合作的資料中心代管服務商負責安裝。

在這兩座資料中心中,都各有4個機櫃,例如在芝加哥資料中心內的四個機櫃上,仍有六、七十台實體伺服器,新伺服器建置完成後,也將淘汰了部分老舊主機。37signals總共採購了20台R7625伺服器,一台伺服器內建兩顆AMD EPYC 9454處理器,每個處理器具有48個核心和96個執行緒,20台可以提供到近4千個vCPU,內建記憶體達到7,680GB,還有384TB的第四代NVMe儲存容量。後來,37signals還採購了6台資料庫專用的伺服器。最後,37signals順利在2023年6月,完成了各項AP應用的下雲搬遷工作,主力產品的應用系統都改在本地端機房中運作,只剩下S3儲存上的8PB用户資料還沒搬遷,這也將是他們在2024年最重的任務。

不過,為了支援全球用户,37signals美國兩座資料中心上的應用,如同過去一樣,會使用CDN 來加速對各國的交付速度,另外,37signals正在計畫為Hey服務,在歐洲建立一個新的資料中心據點,正在進行測試,同樣透過資料中心代理商來設定和管理。37signals採取遠端工作模式,團隊中的成員,沒有任何一個人實際到過這些機房,親手碰過伺服器,「擁有自己的硬體,不一定要自己打造機房,」DHH補充,機房實體安全、電力、網路、消防等設備,都可以交給專業的資料中心服務業者來處理。

在7項產品中,下雲搬遷工程衝擊最大的是Hey,尤其是技術架構必須調整。因為Hey是一款完全雲原生的服務,所有功能和服務都由雲端服務來提供。開發團隊分階段逐漸將不同技術架構的元件,轉移到本地端環境,花了幾個禮拜,依據不同資料庫、快取伺服器、郵件服務器、App執行實例,一項一項各自獨立轉移。

另外,37signals產品所用相關軟體較大的改變則是,將RDS資料庫換成了Percona的MySQL 8,而搜尋服務openSearch也改用開源的ElasticSearch,其餘所用軟體原本就大多是開源技術或產品,因此,下雲後沒有增加什麼軟體授權的費用。

37signals在年中完成AP的搬遷之後,下雲效益開始浮現,到了2023年9月,雲端帳單已經減少了100萬美元,尤其在預付一年費用的預留執行個體契約到期後,帳單金額快速下滑。

除了成本節省,下雲還有五大價值

DHH認為,不上雲,對37signals來説,不只是錢的問題,更可帶來五大價值。第一是獨立性,不用困在特定公雲中,尤其可以擺脱公雲業者操控的價格實驗影響。其次是,可以真正對整個網際網路提供服務,而不是隻在少數超大規模企業手上的網路中提供。

第三是價值是,這個做法意味著自己採取了更聰明的用錢方式。以37signals所用的關鍵服務,如大型資料庫、大量NVMe儲存、高速VM的租金,幾個月後就等於購買設備的成本,自己買是比較聰明的作法。第四個價值是,下雲經驗可以成為SaaS公司的示範。「中型或更大規模的SaaS供應商應該有自已的基礎設施,而不是租用。」DHH指出,37signals經驗可成為這個論點的示範。

最後一項價值是「我們想要冒險!」DHH引用了打造出摩天大樓的美國建築師丹尼爾‧伯恩罕的一句話,「別做小計畫,這不會引起人們熱血的魔力,甚至不可能實現,要做大計畫,瞄準遠大的希望和工作。」這個25歲的軟體公司,仍有一股勇於挑戰和創新的性格。