不可不知雲服務成功的關鍵技術——容器和微服務

(本文采訪DroiBaaS資深工程師Tony Hsu,關於他怎麼看容器技術的演變以及和移動互聯網之間的交互,本文深入淺出,提及一些基礎的雲和相關技術的概念。)


在移動互聯網的世界裏,“雲”的概念已經行之有年,大家的生活都受到巨大的改變,從沒有它不能活的 IM 即時通訊軟件和社交平臺、信息流、各種豐富生活的遊戲和音樂軟件,到像“滴滴打車”這樣增進生活便利的工具應用,組成了現代人生活的樣貌。一般大衆大概不知道這樣的生活進步背後是由不斷演進的雲技術所成就的,然而身爲開發者,想要在這樣令人如癡如醉卻又極度競爭的環境下立足、成功,不能不瞭解其中的功夫。


所謂的“雲”簡單來說就是有一臺不停機的電腦,在進行我們所需要做的事情,我們又稱它爲服務器(Server)。由於Server並不需要漂亮的介面,而Windows和Mac這樣的Operating System對Server來說太過肥大,因此有很多針對Server所設計的OS,最後由Linux勝出,Linux也被稱爲 Server 的核心。從Server的角度來看,每個在上面跑的服務稱爲Process,當電腦硬體性能越來越強大,能同時進行的Process越來越多,此時若任何一個Process當掉,都很有可能會影響其他服務,因此Process獨立性開始成爲許多人關注研究的技術。


最近處理Process獨立性的技術被稱爲“容器,Container”,這個概念早在二十年前就萌生了,然而在容器技術還未成熟時,工程師們先想出了一個解決辦法,就是“虛擬機器(Virtual Machine, VM)”,VM的概念是在一臺電腦上裝上很多核心,也就是一臺電腦上有很多臺小電腦在跑,每一臺小電腦就是一個VM,因此若其中一個當掉了,並不會直接影響到其他VM。想當初像銀行業這樣需要高安全性的Server服務的產業,花了很多錢買Server,即使他們未必真正需要用到很多CPU資源,不過這樣的硬需求可是讓像Dell這種提供Server服務的公司分了好大一杯羹。當VM技術出來之後,賣Server的業務就消失了,真的可說是光景不再。其中最具代表性的是VMware這間公司,VM技術也算是主宰了快要一個世代,直到最近二、三年,容器技術才被Docker這間公司發揚光大,給VM技術很大的壓力。Tony對於容器這樣的演變認爲:“在科技業,歷史一直在重演,硬件一直在進步,帶動軟件的進步,這是一個一直在演變的自然現象。有了容器之後,是用Process來看電腦的世界,過去寫程式是考慮要在哪個硬件上做事情,現在等於是把硬體虛擬掉了,讓軟件開發起來變得更靈活。”


當技術在演進,需求也在變化,然而在真實的世界中並不是只有一臺Server在運作那麼單純,實際上,是有很多的Server,上面有更多的容器,容器雖是隔離獨立,但之間又常常會需要彼此。事情開始複雜化,相應而生的就是管理自動化的需求——Google過去十年都在用Process開發服務,容器的暴紅,讓Google決定把內部的經驗用開源項目分享出來,這個開源項目叫做“Kubernetes”(簡稱K8s)。K8s的核心功能是“排程(Scheduling)”,他將容器管理自動化,提升了管理效率。當問到:“容器世界正在快速的發展當中,在生產環境使用這樣的技術會不會有什麼需要特別考量的部分”時,Tony則是給了一個讓人會心一笑的答案:“還是需要技術能力較好的團隊來執行,不然很容易遇到很多的坑,會影響生產上執行的速度。K8s已經算是可以面對各式各樣的硬體組合,但在初期還是讓高技術含金量的團隊來操刀比較好,其中複雜的技術就不一言概述了。”


當問到爲什麼DroiBaaS團隊選擇K8s,Tony表示:“我們看上的是容器這樣新的技術。VM固然穩定,但是他能做的也就是穩定的某些事,舊的不代表未來可以帶來更好的效率跟solution。當然,對於一些需求來說,也許VM就足以滿足,不過容器除了有隔離的優點,他更適合移動互聯產業的變動性和靈活性,容器在Scaling上的表現是VM所不能及的,容器可以在最短時間內承載千軍萬馬。容器讓資料的複製、移植、放大縮小都變得簡單許多,能夠讓整個開發流程、效率、穩定性都更上一層樓。”當然,面對這樣新的技術,一定有些trade-off,像是:Devops Engineers 是否能夠接受新的技術,以及大家是否願意去學、能學到什麼程度。新技術一定會有變動,這是一定會發生,而他相信DroiBaaS的團隊,有足夠強大的能力去接受這些 Trade-off 的考驗。此外,Tony表示,他也看重這些技術的最初開發者是“誰”、他們是怎麼樣的“人”、他們怎麼寫出code的。“我們選擇 CoreOS,爲何不是Ubuntu,因爲我們對 CoreOS的創始人做過的事情、他們寫出的code品質等等都很有信心。另一個例子,最初開發 K8s 的三位在 Google 的工程師也是,他們對雲技術的見解和寫出的程式碼水準都是世界一流。更重要的是,CoreOS和K8s都選用Golang語言來開發專案,眼光長遠(請參考:羅勃•派克——雲端歷史的源頭)。”Tony 的回答讓科技又多了人本的溫度,事情不僅是表面呈現的而已,還有更深一層的涵義。


在資本密集的移動互聯網產業裏,那些用戶跟營收都用億來做單位的往往都是些大號,市場早被鯨吞蠶食。如今看得見的開發者或是創業團隊,大多因爲進入得早,搶得先機。現在的環境對於個人開發者和創業團隊來說極度險峻,產品做得好且帶有新的商業邏輯,纔有機會獲得創業導師的青睞、進行融資。然而“把產品做好”這件事,對於缺乏資源的創業者來說,還來不及讓市場去驗證自己的商業邏輯,就先被前期要投入的資本打趴。開發一套軟件首先要租借API和推送等服務器,然後架設數據庫、後端工程師撰寫雲代碼、前端工程師、UI設計師,開發完之後運維也很重要。當流量進來後,服務器是否能靈活承載也是問題,當一次機,使用者可能還懷疑是自己的網路不順,當第二次機,使用者就跟這個應用說掰掰了。


如今,這些難題有了解決之道。DroiBaaS給的就是一個Total Solution的概念,不僅把上述的需求全部打包一次給予,更多瞭如統計分析、渠道發佈等等取得用戶、分析用戶和變現的辦法。


最後問到 Tony 身爲一個資深工程師,對於自己團隊開發出來的產品有怎麼樣的信心、DroiBaaS能爲開發者解決什麼問題時,他這樣說:“容器解決的是未來的問題,移動互聯產業一個很大的重點就是要做先驅,未來的機會是很大的。用容器技術做雲端的後臺很愉快,不會覺得每天都在重複解決類似的問題。而且我自己做起來覺得很舒服,因爲我知道出問題時,我的團隊有能力即時解決。最重要的是我們的架構夠靈活,我們的系統可以比較快的迴應客戶的需求,有轉身的空間,整套技術是很讓人興奮的。”
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章