我在阿里雲做雲開發

什麼是阿里云云開發平臺

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

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

雲開發趨勢

各大雲廠商今年在開發者陣地側逐漸開始向“雲”化開發發展,最爲顯著的產品就是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的關鍵訴求,那麼相比其他產品有哪些不同呢?

差異化玩法

雲原生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萬元雲資源扶持計劃,降低啓動和運營成本,歡迎來聊。

資料

雲開發平臺電子書《Serverless雲開發從入門到實戰》在線課程指導

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章