阿里巴巴的云原生与开发者
作者 | 李響 阿里云資深技術專家
關注“阿里巴巴云原生”公眾號,回復關鍵詞“容器”,可下載云棲大會容器專場全部 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等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的技術公眾號。”
總結
以上是生活随笔為你收集整理的阿里巴巴的云原生与开发者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Knative 实战:基于 Knativ
- 下一篇: 从零开始入门 K8s | 可观测性:监控