快速部署 Spring PetClinic 到函數計算平臺

簡介

首先介紹下在本文出現的幾個比較重要的概念:html

函數計算(Function Compute)函數計算是一個事件驅動的服務,經過函數計算,用戶無需管理服務器等運行狀況,只需編寫代碼並上傳。函數計算準備計算資源,並以彈性伸縮的方式運行用戶代碼,而用戶只需根據實際代碼運行所消耗的資源進行付費。函數計算更多信息參考mysql

Funcraft:Funcraft 是一個用於支持 Serverless 應用部署的工具,能幫助您便捷地管理函數計算、API 網關、日誌服務等資源。它經過一個資源配置文件(template.yml),協助您進行開發、構建、部署操做。Fun 的更多文檔參考git

spring-petclinicPetClinic 是一個 Spring Boot 、Spring MVC 和 Spring Data 結合使用的示例項目,是學習 Spring Boot 經典案例。github

Spring 框架是由一些小而美的 Java 框架以鬆散耦合的方式集成在一塊兒。這些 Java 框架能夠獨立或者集成使用以構建許多不一樣類型的工業級應用程序。PetClinic 示例應用程序是爲了說明如何使用 Spring 應用程序框架來構建簡單且功能強大的面向數據庫的應用程序。它演示了 Spring 核心功能用法。spring

使用控制反轉和 MVC 的 Web 表示層,基於 JavaBeans 的應用程序配置,經過 JDBC,Hibernate 或 JPA 進行數據庫訪問,基於 JMX 聲明式事務管理的應用程序監視,使用 AOP 數據驗證來支持但不依賴於表示層的 Spring 框架提供了大量有用的基礎結構,以簡化應用程序開發工做。sql

本應用模板使用函數計算的 Custom 運行時RDS-MySQL 雲服務做爲 Spring Boot 應用的運行環境。藉助於資源編排服務(ROS)的能力,該模板會自動建立 VPC、VSwitch、SecurityGroup、RDS 和綁定了 HTTP Trigger 的函數,以及綁定到 HTTP 函數的自定義域名,並自動配置好這些服務,以達到迅速上線開箱即用的效果。docker

注意:數據庫

  1. 須要提供一個域名(支持二級域名),若是部署在國內 Region 該域名須要在阿里雲備案,而後把域名的 CNAME 記錄指向 12345.cn-shanghai.fc.aliyuncs.com,其中 12345 換成您的 AccountID,若是是在國外 Region 能夠免去備案環節,請查看更多參考
  2. 模板建立的 RDS-MySQL 雲服務選用了最便宜的按量付費實例,費用大約爲:¥0.236/小時,使用前須要確保帳戶有 100 元的餘額,而且試用完成之後建議經過 ROS 控制檯刪除該應用,以避免產生超出預期的費用。

快速開始

下面咱們藉助於函數計算的應用中心,快速地將 Spring PetClinic 快速部署到函數計算平臺。bootstrap

  1. 打開函數計算 Spring PetClinic 應用詳情頁。若是您還沒有開通函數計算服務可能須要先,開通服務是免費的,另外函數計算有每個月免費額度,試用服務不會產生費用。
  2. 滾動到 Spring PetClinic 應用詳情頁的最底部,點擊「當即部署」按鈕。
  3. 填寫應用名稱和域名,其中域名須要先去設定 DNS 的 CNAME 記錄,而後點擊「部署」按鈕。
  4. 稍等片刻,等到部署成功之後,拷貝 URL 網址。
  5. 在瀏覽器中打開上面拷貝的網址

工做原理

本示例中,咱們打算使用函數計算的 Custom 運行時 來移植 Petclinic 項目。顧名思義, Custom Runtime 就是自定義的執行環境, 用戶基於 Custom Runtime 能夠完成如下目標:瀏覽器

  • 能夠爲所欲爲持定製個性化語言執行環境(例如 Golang、Lua、Ruby)以及各類語言的小版本(例如 Python3.七、Nodejs12 )等,打造屬於本身的自定義 Runtime
  • 現有的 Web 應用或基於傳統開發 Web 項目基本不用作任何改造,便可將項目一鍵遷移到函數計算平臺

該應用的架構圖以下:

定製化開發

依賴工具

本項目是在 MacOS 下開發的,涉及到的工具是平臺無關的,對於 Linux 和 Windows 桌面系統應該也一樣適用。在開始本例以前請確保以下工具已經正確的安裝,更新到最新版本,並進行正確的配置。

Fun 工具依賴於 docker 來模擬本地環境。

對於 MacOS 用戶能夠使用 homebrew 進行安裝:

brew cask install docker
brew tap vangie/formula
brew install fun
複製代碼

Windows 和 Linux 用戶安裝請參考:

  1. github.com/aliyun/fun/…

安裝好後,記得先執行 fun config 初始化一下配置。

注意, 若是你已經安裝過了 funcraft,確保 funcraft 的版本在 3.2.1 以上。

$ fun --version
3.2.1
複製代碼

初始化

git clone https://github.com/awesome-fc/spring-petclinic-for-serverless
cd spring-petclinic-for-serverless
複製代碼

編譯打包

mvn package -Dmaven.test.skip=true
複製代碼

本地運行

MYSQL_HOST=localhost MYSQL_PORT=3306 MYSQL_DBNAME=petclinic MYSQL_USER=root MYSQL_PASSWORD= ./bootstrap
複製代碼

請在運行上述命令前啓動好本地的 MySQL 數據庫,並將上述 MYSQL_* 的值替換爲您本地 MySQL 數據庫的配置。

部署

make deploy
複製代碼

爲了得到更好的開發體驗,建議安裝 Aliyun Serverless VSCode Extension

參考連接

  1. Serverless 實戰 —— 移植 spring-petclinic 到函數計算
  2. Funcraft
  3. Aliyun Serverless VSCode Extension

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術圈。」

相關文章
相關標籤/搜索