天天看點

阿裡巴巴的雲原生與開發者為什麼選擇雲原生?引領開發者走向雲原生

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

關注“阿裡巴巴雲原生”公衆号,回複關鍵詞“容器”,可下載下傳雲栖大會容器專場全部 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等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的技術公衆号。”