天天看點

雲原生應用架構轉型不好做?阿裡雲這個平台讓你一步到位!雲原生實踐帶來的挑戰 雲開發平台的功能特性內建案例介紹

雲原生實踐帶來的挑戰 

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

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遷移方案步驟:

   1)在雲開發平台上建立一個“SpringBoot應用遷移方案(ASK)”應用;

   2)打開這個應用的CloudIDE環境,點選“開發部署”;

   3)在CloudIDE中,把存量系統的src目錄和pom.xml拖到CloudIDE工程目錄中;

   4)調整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>

   5)送出修改的代碼,然後建構部署進行驗證,完成遷移工作。

   完成Springboot應用到Serverless的遷移,讓存量應用快速具備雲開發CICD的特性,以及Serverless應用的所有優勢。

2. PHP應用遷移

PHP應用遷移方案步驟:

    1)在雲開發平台上建立一個“PHP 應用遷移方案(SAE)”或者 “PHP 應用遷移方案(ASK)”應用;

    2)打開這個應用的CloudIDE環境,點選“開發部署”;

    3)然後,把存量的PHP項目檔案拖放到CloudIDE工程目錄下,就能完成遷移工作;

    4)送出代碼并Push,然後就可以開始進行應用部署,部署成功後,雲開發平台會生成一個臨時域名出來,點開即可驗證部署效果。

WordPress是社群比較熱門的由PHP實作的建站平台,提供所見即所得的頁面編輯釋出功能。雲開發平台支援一站式部署WordPress,開發者可以依據

https://workbench.aliyun.com/activities/k8s

中的描述部署,充分體驗一下WordPress部署過程,感受PHP應用的遷移過程,還能機會獲得限量版精美禮品哦!