37signals在2022年付給公雲業者金額高達320萬美元,相當於臺幣1億元。在2023年中完成旗下產品相關AP的下雲搬遷工作之後,下雲效益開始浮現,到了2023年9月,37signals的雲端帳單已經減少了100萬美元,尤其在預付一年費用的預留執行個體契約到期後,帳單金額快速下滑。(圖片來源/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萬美元,尤其在預付一年費用的預留執行個體契約到期後,帳單金額快速下滑。

高可用性是雲端環境的一大特色,除了擴充性,讓自家服務可用性更高,是常見的另一個上雲的理由,37signals將原本部署在公雲上的SaaS服務,搬遷到本地機房後,是不是會削弱了SaaS服的可用性,這是DHH宣布下雲計畫之後,許多人好奇問他的其中一個問題,尤其在2023年將AP全面下雲之後,這些SaaS後來運作的情況如何?DHH在2024年初開始整理過往各界的好奇,他強調,下雲之後,他們的每一項SaaS產品的正常運作時間,都超過了99.99%的水準,他們還是遇到不少問題,但總可以快速解決和排除,一整年下來,2023年總停機時間沒有超過0.01%。

以他們在2012年到2015年銷售的Basecamp版本,這是一個至今仍然持續維護的舊版專案管理服務,目前有數千名用戶,每年帶來數百萬美元的收入。這個服務在2023年的停機時間是零。這項服務所用的技術也很常見,F5s、Linux、KVM、Docker、MySQL、Redis、Elastic Search,還有Ruby on Rais。DHH說,只要硬體有良好備援機制,可以使用成熟的Web應用技術架構,就不會有太大的當機問題。他強調,工程師不要過度追求複雜性,就像飛蛾撲火一般。

為了解答眾人對於他們下雲經驗的疑惑,DHH也在2023年底,整理了下雲常見問答,給各界參考。例如下雲後會不會有龐大的人力成本?DHH指出,下雲後團隊組成沒有改變,也是一樣的人力,管理Hey和Basecamp或其他應用的人,只是換了管理環境,從公雲業者的環境,改為他們自家機房。有些人甚至以爲,需要有一個世界級的團隊,才能自行管理資料中心來提供媲美公雲業者的服務水準,DHH指出,他們的的確有一個優秀的團隊,但是當擁有數百萬名用戶和每月數十萬美元帳單時,自行管理和維運實體機房的知識,有九成與使用雲端環境需要的專業知識相同。

安全性的問題也很多人好奇?實際上,在雲端和在地端的安全工作的本質沒有太大差別,DHH補充,使用現代化容器技術來交付軟體的優勢是,不需要花大量時間手動修補AP的執行環境,AP大部分的內容都打包在Dockerfile中,只要重新部署到新版作業系統,在雲端VM或地端VM都會一樣。

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

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

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

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

37signals下雲歷程時間表

2022年10月,37signals技術長DHH在部落格宣布下雲計畫,要全面離開AWS和Google Cloud,引起各界熱議。

2022年11月,下單購買一批60萬美元的Dell伺服器,共20臺R7625伺服器。

2022年底,啟動下雲計畫,除了硬體,也開始評估本地的K8s管理工具和支援費用,但業者報價超過預期,甚至高達200萬美元,38signals決定在本地端環境中,放棄K8s環境,不只下雲,也要去K8s。決定簡化技術架構,改用KVM來提供虛擬機器,來分割實體伺服器的運算資源,再透過Docker來執行容器化的Web應用。

2023年1月,37signals公布2023年上雲費用明細,花費高達320萬美元。主要有兩個部分,包括 AP上雲費用,約230萬美元,以及高達8PB用戶資料的雲端儲存費用。

2023年2月,37signals開源釋出了讓成功下雲的關鍵容器部署管理工具Kamal。這套工具用Docker來部署和管理Web應用,可以提供不停機部署、快速重新啟動回滾、遠端建置等,而且不只是Rails應用的部署,改版後可以用來部署各種類型的容器化Web應用。

2023年4月,採購的新伺服器到貨,直接寄到 芝加哥和維吉尼亞州阿什本兩座租用的代管機房,由長年合作的資料中心代管服務商負責安裝。 37signals總共採購了20臺R7625伺服器,一臺伺服器內建兩顆AMD EPYC 9454處理器,每個處理器具有48個核心和96個執行緒,20臺可以提供到近4千個vCPU,內建記憶體達到7,680GB,還有384TB的第四代NVMe儲存容量。
2023年5月,展開七大產品的搬遷工作,先從免費的Tadalist開始練手,接著搬遷基礎架構需求相似,也同樣是單一用途的付費版產品Writeboard,從功能和架構簡單的AP產品先著手,累積下雲經驗, 第三款才開始搬遷技術架構更複雜的Backpack應用。最複雜的下雲工程是雲原生的電子郵件產品Hey,則分階段逐漸將不同技術架構的元件轉移到本地端環境,依據不同資料庫、快取伺服器、郵件服務器、App執行實例,一項一項各自獨立轉移。也將所用的商用軟體,例如RDS資料庫改為開源技術或開源產品。

2023年6月,完成了各項AP應用的下雲搬遷工作,主力產品的應用系統都改在本地端機房中運作,只剩下S3儲存上的8PB用戶資料還沒搬遷,這也將是他們在2024年最重的任務。

2023年9月,37signals雲端帳單已經減少了100萬美元,預付一年費用的預留執行個體契約到期後,帳單金額快速下滑。

2024年目標, 計畫將S3儲存高達8PB的用戶資料也全面搬遷下雲,另外也開始思考後端搜尋、監控機制的新可能性。

 相關報導 

37signals一年320萬美元上雲費用結構大公開

不只下雲還去K8s,37signals自行打造全新Web部署工具

熱門新聞

Advertisement