
背景
Gartner于 2019 年釋出報告表示:雲原生時代已經到,在未來三年中将有 75% 的全球化企業使用容器化的應用。雲原生具有諸多優勢,如系統彈性帶來使用者體驗提升、研發效能提升、低成本運維或免運維,以及即插即用按量計費的計算成本等,這些優勢使得創新團隊可以快速将新想法推向市場,這正是初創公司願意使用雲原生來颠覆傳統行業的原因。從傳統研發模式過渡到雲原生時代,怎麼解決雲原生內建研發使用的"最後一公裡"問題。
雲原生實踐帶來的挑戰
阿裡雲雲原生為企業提供了完善的容器服務、函數計算、微服務體系、中間件體系。每個服務都有伸縮性、彈性群組合性,通過産品選擇或組合搭建,能輕松完成應用與運作環境解耦,和傳統應用研發模式具有較大差異。從傳統研發模式過渡到雲原生時代,抑或傳統應用和雲原生長期并存過程中,雲原生應用的實作、內建、部署、運維都面臨較大的挑戰。
1. 存量應用與雲原生應用長期并存的整合問題
雖然雲原生可以覆寫絕大部分應用場景,甚至以往比較難解決的問題在雲原生下都可迎刃而解,如營銷場景的應用。但有些應用場景在雲原生下并無決定性優勢,且存在遷移成本,加之傳統應用在系統架構上的限制,這些将導緻存量傳統應用将和雲原生應用長期并存。如何整合這兩種應用的研發鍊路,以及基礎設施層面的互聯互通,是雲原生實踐帶來的一個挑戰。
2. 研發環境的成熟度問題
雲原生新應用的實踐或存量應用的雲化,不僅僅是基礎設施和平台的變化,在架構設計、開發方式、測試聯調、部署維護等各階段和各方面都要基于雲的特點做出相應調整。傳統線下 IDE 工具鍊将無能為力,在 DevOps 這條工具鍊上,需要一個內建度高、操作路徑短的研發環境。
3. 研發模式、組織陣型與雲原生的适配問題
雲原生通常以微服務架構進行服務開發,函數計算更細粒度到函數級别。松耦合的架構方式會減輕因需求變更導緻的系統疊代成本,并加快傳遞速度。微服務使得單個服務的開發團隊更小,也更加獨立,這種松耦合+獨立小型的團隊使得持續更新和靈活協作成為可能。在這種情況下,雲端出現的問題解決會更突出,線上協作将比線下交流會有更高的效能。
與雲原生跨代優勢相比,這三點隻能算“最後一公裡”的問題。今天,阿裡雲推出的雲開發平台正在解決雲原生 Serverless 內建研發使用的"最後一公裡"問題。
雲開發平台的功能特性
雲開發平台內建了阿裡雲 FC、SAE、ASK 三種 serverless 計算服務,在 VPC 基礎設施之上,把衆多中間件雲産品按賬戶、産品線、應用、函數4個級别進行歸類,設定共享級别,按需編排。通過業務語言的方式傳達,大幅降低了開發者的學習了解成本,提供內建研發環境,進而降低使用內建雲産品的難度,提升研發效能。
或者可以說,雲開發平台是阿裡雲面向開發者的一個研發門面,由于建立編排的雲服務都在開發者的主賬号下,是以基于雲開發建立的應用和使用者存量系統是互聯互通的,從這點上說雲開發平台是一套開放的、內建的研發環境。
雲開發平台隻內建雲原生 Serverless 計算服務,而 Serverless 計算的免運維特性,使資源投入更聚焦在研發上,讓應用從建立到實作營運都能在雲開發平台上完成。其中 FC 是函數形态的計算服務,SAE、ASK 是服務形态的計算服務。雲開發平台具有以下特性:
1. IT架構覆寫絕大多數應用場景
為使用者提供開箱即用的基礎設施服務,雲開發平台聚焦于三種通用的 IT 架構:(1)函數型IT架構;(2)服務型 IT 架構;(3)函數、服務混合型IT架構。這三種 IT 架構基本能涵蓋目前适合雲原生的所有應用場景。
(1)函數型 IT 架構
這種架構能支援大部分移動應用,因為按調用次數計費,是以可以“0”費用啟動項目,适合大部分初創團隊的應用場景、企業靜态站點場景,以及峰谷流量明顯的應用場景,比如營銷活動。Serverless 的彈性特性,減少了擴縮容的人力成本和計算成本。
(2)服務型 IT 架構
目前大部分應用都是服務型 IT 架構,如 SpringBoot 應用、 PHP 應用,這種架構模式可以很好的承接目前存量應用的雲化遷移。基于阿裡雲 MSE(微服務引擎),也适合微服務化架構的應用。這種架構支援按小時計費的模式,即開即用,相對于函數型IT架構,更适合穩定的大流量業務場景。
(3)函數、服務混合型 IT 架構
混合型 IT 架構,充分利用函數型 Serverless 、服務型 Serverless 各自的優勢,端側接入采用函數計算,按調用次數計費,以及快速靈活的彈性伸縮能力輕松支援各種峰谷流量。而服務型 Serverless ,可以組合各種中間件服務,形成高性能、彈性靈活的微服務中台系統,可以支援目前主流複雜的應用場景。
2. 支援與存量系統的互聯互通
目前雲原生還處在商業導入期。企業使用者一般會先用一些适合 Serverless 的場景小試牛刀,這時建立的 Serverless 一定不是孤立的應用,它需要通路存量的資料庫、中間件服務以及 BPaaS 中台功能。是以與存量系統的互聯互通是 Serverless 推廣應用的首要條件。雲開發平台項目一開始就考慮到這個特性,把自己定位為工具,不自建容器。由使用者授權,雲開發平台支援 Serverless 應用在使用者的賬戶空間中完成 CICD ,使用者可以選擇部署在存量應用所在的 VPC、VSwitch 上,是以,Serverless 應用和存量系統、存量資料庫、中間件服務的互動暢通無阻。
3. 支援被內建 Serverless 的 CICD 能力
基于傳統應用研發和 Serverless 應用研發長期并存的考慮, Serverless 研發需要和 ISV 本地研發模式相相容,隻有切入到 ISV 目前的場景中,才有機會引導 ISV 、開發者到雲開發模式當中。雲開發平台目前提供了三個層級的使用方案:
- 對于新手開發者,雲開發平台提供了一個包括建立、實作、測試、建構、部署全部環節的內建研發環境,支援一站式實作 Serverless 應用;
- 對于有研發體系的 ISV ,研發、測試在本地完成。雲開發平台和 ISV 的分工界面在代碼倉庫 Codeup 上,雲開發平台提供全套 CICD 功能,開發者送出代碼到 Codeup 上後, CICD 功能、資源編排都交給雲開發平台;
- 對于有研發體系并且有 CI 體系的 ISV ,提供基礎設施的編排以及 CD 功能。
- 對于有研發體系的後兩者,通過提供 POP 接口,支援 ISV 進行內建,和 ISV 現有研發體系無縫融合。
4. 團隊線上協同特性
受疫情影響,上半年大家都體驗了遠端辦公的模式,更有報道稱,美國的公司員工将有 50% 永久遠端辦公。可以預見,在未來以雲原生應用為主的研發模式下,遠端辦公将是常态,線上程式設計、線上測試聯調、線上內建部署都在 CloudIDE 中完成,團隊線上協同功能是雲開發平台的重要特征之一。
企業、團隊、開發者角色的權限控制體系,加上 Cloud-Native 的內建研發環境,組成了雲開發平台線上協同功能特性。Serverless 的程式設計流暢性,測試聯調、建構部署一站式體驗将在 CloudIDE 中持續打磨。
5. 基礎架構平台能力
雲原生一個重要的特征是微服務化,繼而開發團隊更小、更獨立。但前提是要有一套統一架構和統一标準,小團隊才能獨立去疊代業務邏輯。這套架構、标準,以及基礎類庫需要展現在微服務的整個研發過程當中。
另外微服務化後,可以抽象出更多的通用能力。傳統上這些通用功能會通過 SDK 提供出來,但在雲原生環境下,這些通用能力可以直接部署為服務,函數級能力可以部署于函數計算,提供函數級通用服務;子產品級能力可以通過容器方式部署,向外提供子產品級通用服務。
雲開發平台充分考慮到這一雲原生研發模式的特征,提供了應用級解決方案,目前支援靜态定義。後期将支援動态生成,基于一系列基礎架構、基礎類庫,像活字印刷一樣組合成為某一場景的應用模闆,開發者将在其上專注實作業務邏輯。函數級通用服務、子產品級通用服務的生産、安裝正在實作當中,将很快釋出上線。
內建案例介紹
說不如練,雲開發平台就在你眼前:https://workbench.aliyun.com 。以下将簡單介紹 SpringBoot 應用、 PHP 應用如何遷移到 Serverless 計算服務當中。
1. SpringBoot 應用遷移
對于存量系統的遷移,雲開發平台已經上架 了 FC、SAE、ASK 的各種架構形式的遷移解決方案,且還在不斷豐富當中。Springboot 遷移方案步驟:
- 在雲開發平台上建立一個“ SpringBoot 應用遷移方案(ASK)”應用。
- 打開這個應用的 CloudIDE 環境,點選“開發部署”。
- 在 CloudIDE 中,把存量系統的 src 目錄和 pom.xml 拖到 CloudIDE 工程目錄中。
- 調整 pom.xml ,增加兩個約定配置:
- 送出修改的代碼,然後建構部署進行驗證,完成遷移工作。
<properties>
<applicationName>${project.artifactId}</applicationName>
<spring-boot.version>2.2.6.RELEASE</spring-boot.version>
</properties>
...
<build>
<finalName>${applicationName}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<!--需要替換您的springboot啟動類-->
<mainClass>com.alibaba.sca.temp.web.Application</mainClass>
<layout>ZIP</layout>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
...
</build>
完成 Springboot 應用到 Serverless 的遷移,讓存量應用快速具備雲開發 CICD 的特性,以及 Serverless 應用的所有優勢。
2. PHP 應用遷移
PHP 應用遷移方案步驟:
- 在雲開發平台上建立一個“PHP 應用遷移方案(SAE)”或者 “PHP 應用遷移方案(ASK)”應用;
- 打開這個應用的 CloudIDE 環境,點選“開發部署”;
- 然後,把存量的 PHP 項目檔案拖放到 CloudIDE 工程目錄下,就能完成遷移工作;
- 送出代碼并 Push ,然後就可以開始進行應用部署,部署成功後,雲開發平台會生成一個臨時域名出來,點開即可驗證部署效果。
WordPress 是社群比較熱門的由PHP實作的建站平台,提供所見即所得的頁面編輯釋出功能。雲開發平台支援一站式部署 WordPress ,開發者可以依據https://workbench.aliyun.com/activities/k8s中的描述部署,充分體驗一下 WordPress 部署過程,感受 PHP 應用的遷移過程,還能機會獲得限量版精美禮品哦!