本文作者:賈世聞
最近試用了一下京東雲的輕量雲主機。從使用體驗上來看,輕雲與普通的雲主機並沒什麼大的區別,只是在資源可以申請的最大資源小一些而已。
從使用場景上來講官方已經定製很多繫結應用的映象:WordPress、寶塔Linux皮膚、Ghost部落格系統、零程式碼開發平臺等等。顯然官方的映象面向的是個人開發者以及小團隊的應用。那麼對於研發團隊,輕量主機有什麼具體的應用場景嗎?我想答案是DEV/OPS領域,輕應用部署以及工程師的驗證環境。
我們先從工程師維度看看開發需要什麼。首先需要一個程式開發環境,包括編輯器或者IDE(整合開發環境);資源環境,包括資料庫、快取、中介軟體等等。除了這些跟專案有關的資源以外,還有一個環境可能會被大家忽略,這就是驗證環境。再小的專案都有可能遇需要驗證的問題。很多人說,我們不是應該有測試環境嗎?但是,測試環境屬於專案公共環境,如果驗證可能帶來災難後果,在公共環境來做驗證可能會影響整個兒專案進度。筆者在年輕的時候曾經幹過一次這事兒,當年在公共開發機上驗證資料庫備份,不經意間就把磁碟搞滿了,恰好又是作業系統的/root目錄,結果給專案組放了大半天的假。如果有輕量主機可能就不存在這樣的問題了,有風險又與業務開發相關性不高的非功能驗證完全可以用輕量主機驗證,真是把主機幹當機了也沒關係,恢復起來也很容易。簡單來講就是把風險放到一個沙盒裡進行,即便有系統性災難也會限定在一個範圍,對整體影響很小。
我們再來看看DEV/OPS領域使用輕量雲主機可以有什麼玩兒法。現代DEV/OPS是個龐大的系統,包括CI/CD、程式碼託管、質量管理,後面可能還跟著一堆的UAT和SIT環境。可不可以利用輕量主機構建一整套DEV/OPS環境能?答案是肯定的。但是,一來,在現今的生態中可能沒有必要;二來,團隊資源未必支援我們這麼幹。想象一下你所在的團隊是一個小型或者微型研發團隊,整個團隊只有十幾個甚至更少的工程師,需求已經應接不暇了,哪兒還有精力維護一個龐大的DEV/OPS體系呢。最好的辦法是利用現有的SaaS和Paas資源來構建DEV/OPS體系,只構建必要部分:CI/CD的流程,Chaos的基本流程等等。比如,我們透過github託管程式碼,然後利用輕量主機構建一套基本的 SIT 環境,然後透過 [Drone](https://www.drone.io/) 這個 CI 工具把整個流程串聯起來。當pr 被 merge後,觸發 CI 流程,自動編譯並部署。小規模團隊構建頻次不高,從資源消耗的角度來說最小構建DEV/OPS的資源也就在 4-8 core。從人力資源消耗來看,也就佔用半個運維人員。別問我怎麼知道的,我們團隊有個開源的資料同步中介軟體,就是利用這種模式在開發。
再來說說部署。對於小微型團隊來說,不論是微服務體系還是基於k8s的服務編排體系都有點重。想想一下,團隊只有兩個巴掌數的過來的工程師,還需要專人維護一堆的非業務體系的技術平臺,顯然不太經濟。而這個規模的團隊的任務大多是要先驗證技術路線和商業模型是否可行。在這樣的場景下最合適的做法是集中資源搞單體應用,如果怕突發流量打掛伺服器,利用雲上的負載均衡服務同時在應用端限流即可,至於外圍資源,比如資料庫、快取、MQ、物件儲存什麼的都用託管服務好了。放心,當產品成為爆款,併發高到系統撐不住的時候,相對的資源會配備齊全的。不要以為只有k8s才叫雲原生,當你的應用部署在雲上,並且儘量利用IaaS、PaaS和SaaS的公共資源的時候,它已經是個雲原生軟體了。
以上是一些對輕量雲主機應用場景的思考,總結起來,當你的工程和團隊不大,對於成本又比較在意那麼輕量雲主機會是一個好的選擇。