天天看點

我在阿裡雲做雲開發平台

作者 | 欲休
我在阿裡雲做雲開發平台

各大雲廠商今年在開發者陣地側逐漸開始向“雲”化開發發展,最為顯著的産品就是Cloud IDE,催生出來的趨勢就是雲端開發。雲開發現階段盡管在各大公司内部無法作為日常開發工具普遍推廣,但是在某些特定場景下Cloud IDE雲開發是非常讓人着迷的:

  1. 即開即用,用完即走的場景,如編寫函數(天貓精靈功能開發)、demo編寫預覽、code review以及代碼倉庫內建等
  2. 深度定制的統一的團隊業務環境,團隊成員無需配置複雜環境即可上手
  3. 天然架構在雲之上,在開發态內建雲産品的諸多服務
  4. 內建CI/CD,快速疊代
  5. Serverless架構應用測試(Cloud IDE也屬于雲上環境,可實時調試函數)

國内外很多廠商在争奪利益:

  • 微軟是第一個繞不開的公司。微軟在開發者工具以及IDE領域積累頗深,産出了衆多明星産品:visual studio、vscode等,特别是vscode直接影響了Cloud IDE的發展程序。而且去年微軟收購的另一個明星産品Github推出了codespace将Cloud IDE與Github開源社群結合在一起,實作“一雲多端”的代碼側生态貢獻。盡管codespace并未提供類似阿裡雲雲開發平台的Serverless架構、行業案例支援、DevOps一體化等諸多功能,但未來微軟極有可能将其配合Azure一起元件完成鍊路實作整個生态的閉環。
  • 谷歌的Firebase是主打BAAS的一款産品,它為後端服務提供Realtime database、Auth、Cloud Function、Message Push、Analytics以及Cloud storage等服務,無需伺服器即可快速開發并使用以上諸多服務,特别适合個人應用和創業項目等。不過由于國内網絡的特殊性,一些服務無法在國内正常使用,且網絡RT較大。Firebase并未提供Cloud IDE而是推薦 “本地開發+Firebase SDK+CLI”的形式在本地進行開發調試與部署。
我在阿裡雲做雲開發平台

那麼在雲開發以及彈性計算領域,阿裡雲也有許多産品,比如阿裡雲雲開發平台、FC控制台的CloudIDE以及Serverless Devs。雲開發平台若要在遵循叢林法則的生态競争中生存就必須有它獨有的核心價值與手段來解決ISV的關鍵訴求,那麼相比其他産品有哪些不同呢?

什麼是阿裡雲雲開發平台

阿裡雲雲開發平台(Cloud Workbench:

https://workbench.aliyun.com/

),是阿裡雲面向廣大開發者及企業提供的雲上研發工作平台,助力研發團隊實作工作的線上化(團隊線上、環境線上、代碼線上、協同線上)以及研發模式Serverless化,幫助研發團隊實作對行業架構經驗及架構服務的高效分享與傳播,極緻提升研發效率,極緻降低研發成本。

使用雲開發平台架構的應用,天然是雲原生的,天然是Serverless架構的,天然是支援線上開發、調試、協同、CI/CD的;由于雲開發平台是架構在阿裡雲底層基建之上,是以開發者天然可以享受阿裡雲提供的基礎設施紅利(編排、代碼倉庫、devops工具監控與報警、異地多機房以及VPC網絡隔離、多版本與灰階),這些基礎設施對于大多數中小公司自建難度非常大且邊際成本很高,而通過雲開發平台使用這些服務大多是免費或者按量計費,提效降費自不必說;雲開發平台針對不同業務場景不同技術棧的應用抽象了3種技術架構,并搭配了雲底座與産品實作技術側保障,省去架構的煩惱。

雲原生 Serverless 架構

關于雲原生以及Serverless有很多解釋,那麼樸素意義上的雲原生指的是因雲而生的軟硬體以及架構,它包括為雲或者彈性而設計的CPU或GPU,以及為雲或彈性設計的中間件與使用這些中間件的應用。雲原生不僅是實踐,更是一種理念。開發人員的開發環境也要生在雲上、長在雲上,讓産品設計、開發調試環境、部署、測試與灰階、POC驗證、資源消費等等,全部基于雲來進行,雲開發平台就是貫徹雲原生理念的一款産品,力圖在雲端覆寫産品的全生命周期。

我在阿裡雲做雲開發平台

Serverless字面意思為無伺服器,實際上可了解為無運維架構。開發者無需關心底層硬體的采購與運維(機器、網絡、流量)聚焦于業務邏輯開發,由雲進行彈性擴縮容,并按量計費(這對峰值流量差異大特别是移動端應用尤為明顯)。

我在阿裡雲做雲開發平台

雲開發平台針對不同類型特點的業務分析和生成一個基于雲産品矩陣構成的雲原生 Serverless 架構(FAAS+BAAS),滿足業務規模的不斷擴大與快速疊代。

我在阿裡雲做雲開發平台

針對無狀态的應用提供了最為輕量的FC架構,通過APIGW + FC + NAS等通用組合可實作自動彈性擴縮容、多版本共存、灰階與a/btest、檔案持久化以及局部狀态儲存,滿足大多數簡單業務場景,目前線上應用大多為此種架構,以Web服務、雲函數(天貓精靈)的形式運作。基于FC的架構向開發者屏蔽了底層PAAS部分,僅需在Cloud IDE中開發、調試代碼,測試通過後在Cloud IDE部署到對應環境即可。

無狀态的應用是指應用(函數)是運作在第三方提供的無狀态計算容器中,并且在不複用容器的情況下應用(函數)可能會存在冷啟動并且可以正常對外服務,這個時候應用(函數)可以認為是無狀态,是以如果應用依賴本機的crontab、記憶體資料庫亦或是本地檔案存儲等,都是有狀态的應用,是需要做一些改造才可以使用基于FC的架構。
我在阿裡雲做雲開發平台

針對有狀态或者微服務應用雲開發平台提供了服務型SAE架構,可解決應用啟動有狀态的問題(通過SLB與docker鏡像),并可相容Spring Cloud、Dubbo、HSF等主流的微服務開發架構,完成服務注冊、發現、調用與統計。

我在阿裡雲做雲開發平台

服務型ASK架構則是為更為專業的企業團隊進行企業級Kubernetes容器化應用的生命周期管理而設計的,這裡不做重點陳述。

雲開發平台力圖透過常見業務場景的表象抽象出幾種普适的雲端Serverless架構,在衆多雲産品的選擇困難和搭配與架構的痛苦抉擇中給予開發者或企業些許幫助或啟發。基于雲開發平台“生長出來”的産品是Serverless架構的,釋放了架構師與運維人員的生産力,一切架構由“雲開發平台”來完成,開發者負責端側與服務端通用業務,一切有償資源均按量付費。

搬站

搬站就是存量項目遷移到雲開發平台上,直接更新為Serverless架構。理想中的搬站是不需要開發者修改任何代碼就可以直接更新,但現實往往是殘酷的:由于不同語言有不同的特性及特點,是以針對常見的語言雲開發平台在成本效益的權衡下提供了不同的搬站政策:

  • 基于Serverless架構的零代碼搬站:Nodejs(全架構支援)與Python(同步與異步WSGI均支援)
  • 基于容器的低(零)代碼搬站:Python、Java與PHP

Serverless 架構

我在阿裡雲做雲開發平台

Serverless架構是雲開發平台抽象的一層抹平不同語言架構、語言運作時底層API(非FC運作時)的膩子,擺脫了FC隻能運作簡單函數的限制,将複雜使用者層代碼(非簡單函數)通過代理的形式與FC運作時打通,實作業務側代碼零改動遷移。

基于Serverless架構的項目遷移其實對使用者的業務程序模型有一定要求:

  • 單機對應單個業務程序
  • 無長連接配接需求
  • 應用無狀态
  • 僅支援七層轉發
采用Serverless架構遷移的項目,僅提供對HTTP與HTTPS協定的支援,對TCP或UDP服務暫不支援。

基于容器的低代碼搬站

容器是雲時代重要标志之一,基于容器統一的傳遞标準,雲開發平台支援存量應用部署到三種Serverless(FC、SAE、ASK)中的任一計算服務當中。雲開發平台提供基于各種語言基礎鏡像,讓存量應用以盡少的修改來完成部署,成為雲原生Serverless應用。

隻需要提供一個鏡像就可以運作在三套不同的架構下,在使用雲開發平台提供不同語言的鏡像前提下僅需修改相關前置配置檔案即可實作遷移。

實時調試

針對Serverless應用無法即時調試的問題,雲開發平台提供了另一種解決方案:Cloud IDE調試環境預置,在開發态即可模拟線上運作時。這樣開發者便可以做到實時開發應用、實時預覽、實時查閱日志。

我在阿裡雲做雲開發平台

若要針對不同技術棧提供不同的運作時容器,這需要依賴抽象的通用适配層來解決不同類型request及path處理機制、模拟“冷啟動”環境初始化、測試域名安全性保證和私密性與逾時政策、APIGW傳回相容處理;需要依賴存儲層實作運作時容器的熱更新與拉取政策靈活定制;而這一切則是通過操作IDE的workbench擴充無感覺運作的,讓開發者體驗雲端測試的便利,争取更長時間的雲端留存。

我在阿裡雲做雲開發平台

雲端斷點調試是雲開發平台的另一個優勢。通過attach功能,Cloud IDE可以調試任意端口的服務,這也正好為調試運作時所用。通過與調試運作時打通,可實時檢視運作時輸出日志與context,獲得與傳統開發相同的體驗。

DevOps 私有化

我在阿裡雲做雲開發平台

Serverless的優勢在于低運維、無運維,開發者使用雲開發平台可以從業務疊代出發,在多套環境(測試、預釋出)驗證(壓力、性能、穩定性測試)後上線進行灰階(百分比),觀測相關監控名額與功能性驗證後進行線上全量部署,而這一切均可以在Cloud IDE中操作完成。當業務流量有峰值時底層的FAAS會進行相應的擴縮容實作彈性。此後根據使用者回報或業務疊代進行進一步開發。

輕量級的DevOps帶來了幾個好處:

  • 更短的業務疊代周期:覆寫應用全生命周期的工作流與自動化能力将帶來應用持續傳遞能力以及跨團隊協同效率的大幅提升,進而縮短業務的傳遞周期。
  • 更合理的人力資源配置設定
  • 更穩固的應用傳遞品質

輕量級DevOps自然有它的可取之處,可對企業而言卻存在一個緻命的問題,那就是如何相容已存在的CI/CD流程。企業不可能立馬摒棄現有的運維系統去采用雲開發平台提供的部署流。大多數公司都有自己的開發工作流程,這包括内部代碼托管、團隊協作、權限控制與風控、公司獨特的CI/CD,如何低成本的相容這套原有體系是Serverless應用能否“本地化、私有化”,讓企業和開發者接受與認同的最關鍵的一點。

我在阿裡雲做雲開發平台

雲開發平台通過提供一個本地部署套件以插件的形式嵌入企業原有的釋出流程中,以低侵入性、高擴充性、靈活的相容性實作項目快速疊代,在不影響原有開發流程的前提下做到開發者無感覺。本地部署套件可以讓企業可以大膽嘗試Serverless架構而無需考慮運維相容性的問題,同時也可根據雲開發平台的OpenAPI自定義工具實作DevOps的工具化與智能化,南北雙向滿足需求。

雲開發平台對開發者的形态進行總結,把他們劃分為三個層級:

  1. 對于小白、無曆史包袱開發者,雲開發平台提供了一個從建立、實作、測試、建構、部署全部環節的內建研發環境,支援一站式在雲開發平台上實作Serverless應用。
  2. 對于有研發體系的ISV,研發、測試在本地完成。雲開發平台和ISV的分工界面在代碼倉庫Codeup上,雲開發平台提供全套CICD功能,開發者送出代碼到Codeup上後,CICD功能、資源編排都交給雲開發平台。
  3. 對于有研發體系并且有CI體系的ISV,提供基礎設施的編排以及CD功能。

對于二、三層級,雲開發平台通過提供OpenAPI接口,支援ISV進行內建,和ISV現有研發體系無縫融合。

通用行業解決方案

雲開發平台通過行業場景與解決方案将技術與商業進行連結,通過将各行業最成功的技術實踐案例抽象封裝成一個個的行業場景解決方案,開發者可以基于雲開發平台之上呈現出來的行業場景解決方案去建立一個應用,極大地加速商業化效率以及降低前期技術架構領域研究及準備的綜合成本。

我在阿裡雲做雲開發平台

通過常見案例的切入并抽象為通用的場景需求,如天貓精靈應用、微信與支付寶小程式營銷、前後端分離應用、部落格、微服務等,對其進行解析。雲開發平台從兩個方向進行預處理:

  1. 分析和生成一個基于阿裡雲産品矩陣構成的雲原生 Serverless 架構
  2. 将依賴的資源做打包上傳

随後生成任務,通過 ROS,逐一進行生産、建立、安裝,直至一個行業應用被初始化完成,最後釋出到官方解決方案市場。

通過解決方案的自動執行個體化處理,我們實作了雲開發平台最為核心的能力:

  • 幫助行業開發生态格式化、規範化地沉澱經驗;
  • 幫助行業開發生态快速分發、複制行業應用開發經驗;
  • 幫助行業開發生态無縫更新至先進的雲原生Serverless架構;
  • 幫助阿裡雲無縫被內建至使用者業務之中;

Nodejs解決方案示例:

我在阿裡雲做雲開發平台

雲上協同

我在阿裡雲做雲開發平台

我們在實踐中發現,線上化是一個新的趨勢。雲時代我們在探索一切資源上雲,當然也就包括了代碼上雲、雲上協同與開發。将實際團隊映射到雲端,在雲上開發可以實作地域、時間與裝置無關的全球協同,而且雲上開發更重要的是可以在雲端實作整個開發生命周期的閉環鍊路,更友善的內建開發側的雲産品。雲上開發并不意味着放棄了傳統的本地開發,兩者是可以互補的。在本地+雲開發的協同增強下,既可以在本地靈活自定義開發環境快速疊代,也可在雲端實時調試部署與共創,這也得益于部署運維輕量化。

雲開發平台對團隊成員提供四種角色,團隊擁有者、團隊管理者、應用管理者和應用開發者,分别對應不同管理、運維和開發權限。目前有諸多活動場景使用了雲上協同功能以及衍生出的“授課-開發-送出作業”模型,如阿裡雲開發者成長計劃、部分高校的合作授課、阿裡巴巴前端練習生計劃等,極大減輕了協同成本。

最後

從傳統線下研發模式過渡到雲原生時代,解決雲原生內建研發使用的"最後一公裡"問題正是雲開發平台的使命。雲開發平台将繼續在系統穩定性、雲産品架構靈活性、代碼易遷移性等方向不斷深耕滿足開發者訴求,進而聚焦于核心業務目标無需考慮運維與架構的繁瑣事務,擁抱“雲 + 端”開發模式。

阿裡雲雲開發平台也為個人開發者提供了相應無門檻代金券及豐厚禮品,可免費領取體驗。同時也為中小企業在基于雲開發平台進行業務創新的中小企業提供最高3萬元雲資源扶持計劃,降低啟動和營運成本,歡迎體驗。

https://workbench.aliyun.com/activities/coupon
我在阿裡雲做雲開發平台

關注「Alibaba F2E」

把握阿裡巴巴前端新動态

繼續閱讀