1. 程式人生 > >阿里巴巴的雲原生與開發者

阿里巴巴的雲原生與開發者

作者 | 李響 阿里雲資深技術專家

關注“阿里巴巴雲原生”公眾號,回覆關鍵詞“容器”,可下載雲棲大會容器專場全部 PPT

摘要:利用雲原生技術構建應用簡便快捷,部署應用輕鬆自如,執行應用按需伸縮。如今,雲原生已經成為下一代技術發展的趨勢。在 2019 杭州雲棲大會開發者峰會上,阿里巴巴資深技術專家李響就為大家分享了阿里巴巴的雲原生技術與開發者的那些故事。

為什麼選擇雲原生?

雲原生的本質目標就是充分釋放雲端計算帶來的紅利,阿里巴巴希望開發者能夠使用雲上極致彈性的資源交付能力,也能夠使用雲上極為便捷的產品和服務。阿里巴巴實踐雲原生也已經走過了幾年時間,並在去年啟動了全站上雲。阿里巴巴希望業務可以更好地擁抱雲,更加全面地推進雲原生。

雲原生既帶來了技術紅利,同時也帶來了業務紅利。

  • 在資源效率方面,雲原生為資源效率帶來了極大提升。使用容器、排程等技術不僅提高了單機維度的部署密度和資源效率,還提高了叢集維度資源配置的合理性和使用率。除此之外,將業務搬到雲上,還可以使用雲的極致彈性的資源交付能力,既能夠應對流量洪峰,也降低了資源的使用成本。

  • 在開發效率方面,使用 Kubernetes 這樣的平臺增強了運維自動化的能力,也增強了對應用和資源進行編排的能力,並降低了運維負擔,提高了開發效率。同時,阿里雲也在推動 CI/CD 系統的演進,希望加速應用從完成到上線的過程,並提高這一過程的穩定性和確定性,提高開發人員迭代的信心。此外,阿里雲也希望將通用框架下沉到基礎設施中,使得開發者能夠在多語言的環境下更容易地接入和使用平臺的能力,其中具有代表性的就是對服務網格的探索。

  • 在標準與開放方面,通過雲原生可以幫助阿里巴巴實現基礎設施和生態標準的完全融合。這不僅可以將開源生態中的新技術、新理念引入到阿里巴巴的基礎設施中,利用阿里內部的大規模場景和複雜業務進行打磨、錘鍊,並將經過打磨的結果回饋給社群,讓它帶給廣大開發者更多的技術紅利。還可以將打造的技術引入阿里雲,打造出一套完整的雲原生產品技術家族,幫助雲上的開發者。

從 Kubernetes 開始

談到實踐雲原生,其實可以從 Kubernetes 這個雲原生的基石開始。從 Kubernetes 開始實踐雲原生的原因主要有兩點:

  • 一是 Kubernetes 向下可以對接各種不同的資源層,既可以對接像阿里雲這樣的公有云,也可以對接專有云,因此可以利用 Kubernetes 構建混合雲平臺。
  • 二是 Kubernetes 向上提供了強大的自動化運維能力、編排能力以及強大的拓展性,因此可以在 Kubernetes 上層構建一些垂直性的平臺能力,比如可觀測性、服務治理以及無服務化。基於這些垂直能力,可以進一步構建更貼近業務的平臺,這也正是 Kubernetes 本身“Platform for Platform”的定位。

阿里巴巴的規模

阿里巴巴的規模非常龐大,內部有超過 10 個叢集,超過 10 萬個節點,以及超過百萬級別的容器。那麼,開源技術和開源專案是否能夠承受阿里巴巴的體量?能夠抗住雙11峰值規模的考驗呢?

阿里巴巴堅信一定要和上游共建生態,阿里不希望只是去 Fork
Kubernetes,而希望去錘鍊和打造 Kubernetes,因此有三個策略:

  • 第一個策略是對自身業務進行負載的追蹤和模擬,並將追蹤和模擬的結果應用到 Kubernetes 雲原生體系中進行測試。
  • 第二個策略是對於測試過程中發現的規模性問題,會持續優化,並反饋到上游,使得整個社群受益,進而推動雲原生領域的發展。
  • 第三個策略是持續推動社群去接受這些可擴充套件的能力,阿里巴巴也定製了自己的排程器和控制器,來滿足自身的業務場景。

Kubernetes 1.16 和 etcd 3.4

在最近釋出的 Kubernetes 1.16 和 etcd 3.4 版本中,阿里巴巴和螞蟻金服也一同作出了大量貢獻,單機的資料儲存規模提升了 50 倍,單叢集節點規模也提升了 3 倍,完全可以滿足阿里巴巴這樣體量的公司在雙 11 這種場景下的需求。今年的 618,螞蟻金服已經對 Kubernetes 叢集進行了驗證,在即將到來的雙 11,阿里會對 Kubernetes 叢集進行再次驗證。如果阿里巴巴可以使用 Kubernetes 作為雲原生的基石,相信 99.9% 的企業都可以信任 Kubernetes 以及雲原生技術。

應用運維與交付

除了雲原生的基石 Kubernetes 以外,阿里巴巴還希望推動整體基礎設施的全面升級,希望把雲原生技術的紅利傳導到更上層。

基礎設施中一個重要的應用就是交付和運維,以前面向虛擬機器的交付和運維非常複雜,並且不同企業有自己不同的運維模式和方法,可能是手動也可能是半自動,甚至在同一家企業內,運維手段也不盡相同。雲原生倡導的是統一的平臺和統一的理念,希望能夠實現自動化運維,因此構建統一的應用模型和統一的應用架構分層就非常重要。

因此,阿里巴巴也同社群一起在推進雲原生領域中應用交付與運維分層模型。並且將這一理念在阿里內部進行了規模化落地,目前已經推動了阿里內部的 4 個應用管理產品線面向雲原生全面升級,構建了 100 多個應用。阿里認為這套應用結構非常有意義和價值,因此也與 CNCF 成立了應用交付領域小組,並由阿里的張磊擔任小組聯絡主席 ,希望與社群一起推進這個專案。

服務網格

在雲原生領域中,位於更上層的系統就是服務網格。服務網格的好處在於具有強大的多語言支援能力,能夠降低業務對接服務治理的難度,更易於實現統一的基礎設施升級。在真正的實踐中,Service Mesh 也會面臨一些挑戰,比如如何支援更多的協議,能否在大規模場景下得以較好運用,資料鏈路、服務面是否足夠穩定等。

為了解決 Service Mesh 面臨的上述挑戰,阿里巴巴和螞蟻金服率先決定選用一套與社群相容的體系,並在阿里巴巴和螞蟻金服內部的雲原生系統當中進行打磨。今年 618 螞蟻金服已經完成核心繫統上到 SOFAMosn 的驗證工作,在馬上來臨的今年的雙 11,阿里巴巴和螞蟻金服將會在核心繫統大規模上線 Service Mesh,同時會把自身技術演進的結果及時反饋到上游去,和社群一起把 Service Mesh 從一個非常先進的技術變成一個非常穩定和可靠的技術,並且會在阿里雲推出 Service Mesh 服務,讓阿里雲上的開發者能夠便捷地使用服務網格技術。

FaaS

FaaS 是開發人員非常喜歡的技術和概念,它可以極大地提升開發效率,使得開發者無需關注腳手架,可以直接以響應式模式來填充程式碼。同時,FaaS 可以幫助大家實現自動的擴容和縮容,當遇到問題時也可以幫助大家自動恢復,免去了運維的困擾。

但 FaaS 本身也存在幾個問題:

  • 第一個問題是如何找到一個既能夠適應不同業務,也能夠適應複雜業務邏輯的程式設計模型。
  • 第二個問題是如何在提供運維和彈性的自動化能力的同時,不增加額外的開銷。

阿里巴巴希望在今年的雙 11 考驗 FaaS 服務的極致彈性和極致的啟動時間,阿里也會把 FaaS 的研究結果及時反饋到上游和阿里雲中去,為廣大開發者提供更大的便利和紅利。

開源社群貢獻

阿里巴巴與螞蟻金服對於核心開源社群的雲原生領域都做出了巨大的貢獻,並且在 etcd、Kata Containers、Containerd 以及 Dragonfly 等專案中都有核心 Maintainer。除這些專案外,我們也會持續向 Kubernetes 等雲原生其他領域提供貢獻,希望通過我們的努力,可以讓雲原生成為一個穩定、可靠的技術,成為企業未來的 IT 基石。

引領開發者走向雲原生

阿里巴巴在中國的開源社群以及開發者社群中有深厚的積累,之前就一直在運作很多開源專案。阿里巴巴希望用自身構建的土壤引領中國開發者走向雲原生模式。

Dubbo

Dubbo 是國內最受開發者歡迎的微服務引擎之一,最近阿里把 Dubbo 捐獻給了 Apache 基金會,希望它可以成為更加開放、更加標準的微服務引擎,希望能夠與社群和開發者共建這個引擎。

現在,阿里巴巴對 Apache Dubbo 有了新的期望,希望 Apache Dubbo 能夠成為更雲原生的微服務框架。因此,在 Apache Dubbo 未來的演進道路中,有三個具體目標:

  • 第一個目標是希望 Apache Dubbo 作為 RPC 框架可以更好地結合 Service Mesh,並對 Apache Dubbo 進行一定程度的瘦身,將一些能力下沉到 Service Mesh 上去。
  • 第二個目標是希望 Apache Dubbo 可以變得更加標準,能夠和其他生態體系互融互通,能夠支援 HTTP/2,能夠融入 gRPC、Spring Cloud、Kubernetes 體系,為開發者提供更多選擇。
  • 第三個目標是希望提升 Dubbo 本身的可觀測性,支援 OpenTracing 等,使得基於 Apache Dubbo 構建的分散式系統能夠具備更高的可運維能力。

Nacos

Nacos 是阿里巴巴去年開源的一個專案,開源之後很快就收到了廣泛的好評。目前在 GitHub 上有超過 8000 個 Star,也有數十家企業已經將 Nacos 應用到了生產環境中。Nacos 本身在阿里巴巴內部也支撐了巨大體量微服務的註冊。Nacos 的研發目標是簡單且易用,其提供了一組非常簡單的 API,方便開發者使用 HTTP 或 DNS 進行服務發現。阿里巴巴希望 Nacos 能夠成為聯動傳統微服務框架和雲原生微服務框架的橋樑,因此也希望 Nacos 既可以註冊傳統服務,又能註冊雲原生服務,讓兩邊的服務實現互融互通。這樣才能幫助阿里巴巴以及廣大開發者平滑、穩定地從傳統服務治理模式演進到雲原生的服務治理模式。

Apache RocketMQ

Apache RocketMQ 也是一個來自阿里巴巴的開源訊息系統,它的目標是低延遲、高可靠、高穩定。Apache RocketMQ 在國內也收到了廣大開發者的好評,並且今年在各大城市都舉辦了 Apache
RocketMQ 開發者自發組織的 Meetup。除此之外,阿里雲還提供了豐富的訊息產品家族,而它們的核心都是 Apache RocketMQ。

未來,阿里巴巴也希望 Apache RocketMQ 可以進一步融入雲原生。希望 Apache RocketMQ 更有彈性,能夠做到自動的擴容和縮容,也希望它能夠更容易地被部署和運維。因此,現在阿里巴巴也在做 Apache RocketMQ Operator,希望能夠讓 Apache RocketMQ 更容易地融入到 Kubernetes 生態體系中。此外,阿里巴巴也希望 Apache RocketMQ 能夠更加開放和標準,並且目前在推廣 OpenMessaging 標準協議,希望讓 Apache RocketMQ 相容 Cloudevent 體系,成為 Serverless 的橋樑。

ElasticDL

Deep Learning 是一個和雲原生同一時代發展起來的領域。Deep Learning 對兩件事情有很高的要求:

  • 第一件事情是資源效率,Deep Learning 需要利用巨大的算力做 Training。
  • 第二件事情是 Deep Learning 對模型和調參的迭代效率有非常高的要求,並且從模型訓練完成到上線的過程需要自動化能力。

因此,Deep Learning 可以和雲原生進行完美的融合,可以利用容器和排程的能力,把叢集內部的異構資源合理地分配給 Deep Learning 框架使用,也可以將雲原生所推廣的自動化部署和運維能力提供給 Deep
Learning,縮短 Deep Learning 模型端到端上線的時間,增強 AI 的核心競爭力。

ElasticDL 是螞蟻金服剛剛釋出的新一代基於雲原生的開源 AI 學習平臺,它的架構基於原生的 Kubernetes 體系,因此具有強大的容錯能力和彈性排程能力。另外,ElasticDL 能夠支援新一代的 TensorFlow 2.0 框架,也希望引領 AI 開發者走向新一代的機器學習。未來,ElasticDL 會支援更多的 AI 模型,讓它本身變得更強大,也會更好地融入雲原生體系和 Kubernetes 體系。

雲原生技術公開課

除了對開源技術的貢獻之外,阿里巴巴認為在知識、理念方面的推動也非常重要。因此,在今年年初,阿里巴巴上線了和 CNCF 聯合出品的雲原生技術公開課,目前服務了超過 1 萬名開發者。後續,阿里巴巴還將會把課程的內容文字化,方便大家利用零散時間進行閱讀。此外,阿里巴巴也正在做雲原生技術手冊,希望可以採訪一些中小型公司和網際網路企業,探討他們在雲原生領域的實踐。阿里巴巴希望不僅能夠為大家提供理念上的知識,還可以提供實踐上的幫助。

雲原生與開源 Meetup

最後,阿里巴巴也在舉辦很多雲原生以及開源相關的 Meetup,希望藉助這樣的活動拉近阿里巴巴和線下開發者的距離,傾聽開發者的聲音,瞭解開發者對社群的需求。也希望促進國內開發者的線下互動,增進相互瞭解,共同推動雲原生領域在中國的落地和發展。

“ 阿里巴巴雲原生微信公眾號(ID:Alicloudnative)關注微服務、Serverless、容器、Service Mesh等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術公眾號。”