開發與維運

雲原生應用架構轉型不好做?阿里雲這個平臺讓你一步到位!

雲原生實踐帶來的挑戰

阿里云云原生為企業提供了完善的容器服務、函數計算、微服務體系、中間件體系。每個服務都有伸縮性、彈性和組合性,通過產品選擇或組合搭建,能輕鬆完成應用與運行環境解耦,和傳統應用研發模式具有較大差異。從傳統研發模式過渡到雲原生時代,抑或傳統應用和雲原生長期並存過程中,雲原生應用的實現、集成、部署、運維都面臨較大的挑戰。

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 架構

image.png

這種架構能支持大部分移動應用,因為按調用次數計費,所以可以“0”費用啟動項目,適合大部分初創團隊的應用場景、企業靜態站點場景,以及峰谷流量明顯的應用場景,比如營銷活動。Serverless 的彈性特性,減少了擴縮容的人力成本和計算成本。

(2)服務型 IT 架構

image.png

當前大部分應用都是服務型 IT 架構,如 SpringBoot 應用、 PHP 應用,這種架構模式可以很好的承接當前存量應用的雲化遷移。基於阿里雲 MSE(微服務引擎),也適合微服務化架構的應用。這種架構支持按小時計費的模式,即開即用,相對於函數型IT架構,更適合穩定的大流量業務場景。

(3)函數、服務混合型 IT 架構

image.png

混合型 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 應用的遷移過程,還能機會獲得限量版精美禮品哦!

Leave a Reply

Your email address will not be published. Required fields are marked *