簡介:與其說 Serverless 架構是一個新的概念,不如說它是一種全新的思路,一種新的編程範式。
但是原生的 Serverless 開發框架卻非常少。以Web框架為例,目前主流的Web框架“均不支持Serverless模式部署”,因此我們一方面要嘗試接觸Serverless,一方面又沒辦法完全放棄傳統框架,所以如何將傳統框架更簡單、更快速、更科學地部署到Serverless架構是一個值得探討的問題。
請求集成方案
請求集成方案實際上就是把真實的API網關請求直接透傳給FaaS平台,而不在中途增加任何轉換邏輯。以阿里雲函數計算的HTTP函數為例,當想要把傳統框架(例如Django、Flask、Express、Next.js等)部署到阿里雲函數計算平台,並且體驗Serverless架構帶來的按量付費、彈性伸縮等紅利時,得益於阿里雲函數計算的HTTP函數和HTTP觸發器,使用者不僅可以快速、簡單地將框架部署到阿里雲函數計算平台,還可以獲得和傳統開發一樣的體驗。
例如以Python的Bottle框架開發一個Bottle項目;
# index.py
import bottle
@bottle.route('/hello/<name>')
def index(name):
return "Hello world"
if __name__ == '__main__':
bottle.run(host='localhost', port=8080, debug=True)
之後,可以直接在本地進行調試。當想要把該項目部署到阿里雲函數計算平台時,只需要增加一個default_app的對象即可:
app = bottle.default_app()
整個項目的代碼如下所示:
# index.py
import bottle
@bottle.route('/hello/<name>')
def index(name):
return "Hello world"
app = bottle.default_app()
if __name__ == '__main__':
bottle.run(host='localhost', port=8080, debug=True)
若在阿里雲函數計算平台創建函數,將入口函數設置為index.app即可。除了Bottle框架之外,其他Web框架的操作方法是類似的,再以Flask為例:
# index.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run(
host="0.0.0.0",
port=int("8001")
)
在創建函數的時候設置入口函數為index.app,就可以保證該Flask項目運行在函數計算平台上。
當然,除了使用已有的語言化Runtime(指具體語言的運行時,例如Python3運行時、Node. js12運行時),我們還可以考慮使用Custom Runtime和Custom Container來實現,例如,一個Web項目完成之後,可以編寫一個Bootstrap文件(在Bootstrap文件中寫一些啟動命令)。
例如要啟動一個Express項目,把Express項目準備完成之後,可以直接創建Bootstrap文件,並將啟動命令配置到該文件中:
#!/usr/bin/env bash
export PORT=9000
npm run star
阿里雲函數計算還提供了更簡單的Web框架遷移方案。如圖所示是阿里雲函數計算頁面傳統Web框架遷移功能示例。
阿里雲函數計算頁面傳統Web框架遷移功能
選擇對應的環境之後,只需要上傳代碼,做好簡單的配置,即可讓傳統的Web框架遷移至阿里雲函數計算平台。
如果通過開發者工具進行部署,以Serverless Devs為例,首先創建index.py:
# -*- coding: utf-8 -*-
from bottle import route, run
@route('/')
def hello():
return "Hello World!"
run(host='0.0.0.0', debug=False, port=9000)
點擊鏈接查看原文,獲取更多福利!
https://developer.aliyun.com/article/1050376?spm=a2c6h.26396819.creator-center.14.5ef23e18lIMITC?utm_content=g_1000361766
版權聲明:本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原作者所有,阿里雲開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。