如何將傳統 Web 框架遷移部署到 Serverless 架構?

2022年10月28日16:21:32 科技 1605

簡介:與其說 Serverless 架構是一個新的概念,不如說它是一種全新的思路,一種新的編程範式。


但是原生的 Serverless 開發框架卻非常少。以Web框架為例,目前主流的Web框架“均不支持Serverless模式部署”,因此我們一方面要嘗試接觸Serverless,一方面又沒辦法完全放棄傳統框架,所以如何將傳統框架更簡單、更快速、更科學地部署到Serverless架構是一個值得探討的問題。


請求集成方案

請求集成方案實際上就是把真實的API網關請求直接透傳給FaaS平台,而不在中途增加任何轉換邏輯。以阿里雲函數計算的HTTP函數為例,當想要把傳統框架(例如DjangoFlaskExpress、Next.js等)部署到阿里雲函數計算平台,並且體驗Serverless架構帶來的按量付費、彈性伸縮等紅利時,得益於阿里雲函數計算的HTTP函數和HTTP觸發器,使用者不僅可以快速、簡單地將框架部署到阿里雲函數計算平台,還可以獲得和傳統開發一樣的體驗。

例如以PythonBottle框架開發一個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 框架遷移部署到 Serverless 架構? - 天天要聞

阿里雲函數計算頁面傳統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


版權聲明:本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原作者所有,阿里雲開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。

科技分類資訊推薦

英特爾回應關閉汽車業務稱將聚焦核心業務 - 天天要聞

英特爾回應關閉汽車業務稱將聚焦核心業務

來源:知未科技【英特爾回應關閉汽車業務:重新聚焦戰略重心】6月25日,據藍鯨新聞,就英特爾被曝或關閉汽車業務的消息,英特爾方面向記者回應稱,正在重新聚焦戰略重心,強化核心客戶端與數據中心產品組合和業務,以滿足客戶的需求。
摺疊屏進入「vivo 時刻」 - 天天要聞

摺疊屏進入「vivo 時刻」

原創首發 | 金角財經(ID: F-Jinjiao)作者 | 海沃德假如從天而降一萬塊錢,但只能用來買一台手機,你會選傳統的直屏手機,還是會考慮買一款科技感十足的大摺疊屏手機?或許,選擇直屏應該是一個不需要太多思考的選擇。
榮耀Magic7Pro價格跳水,16GB+512GB突降1311元,2億長焦+5850mAh - 天天要聞

榮耀Magic7Pro價格跳水,16GB+512GB突降1311元,2億長焦+5850mAh

縱觀如今智能手機市場的情況,各大品牌之間的競爭較為激烈,對此也就造成了各大品牌旗下的高端旗艦價格層面也是下調嚴重,這就比如說接下來要介紹的榮耀Magic 7 Pro這款旗艦就是如此,而就在如今市場中的表現完全是可以使用“價格跳水”來形容的,
Emme路特斯422T:來自巴西的爭議“蓮花” - 天天要聞

Emme路特斯422T:來自巴西的爭議“蓮花”

Emme路特斯422T這個名字對大多數汽車愛好者來說都相當陌生,但它卻代表着汽車工業史上一個頗具爭議的章節。這款誕生於1990年代末的車型,承載着巴西汽車製造商的雄心壯志,卻也成為了一個關於品牌授權、設計抄襲和商業失敗的典型案例。
西鄉流塘開展“一鍵下單·心愿速達”數字化平台宣傳 - 天天要聞

西鄉流塘開展“一鍵下單·心愿速達”數字化平台宣傳

為提升社區為老服務精準化、精細化水平,推動服務模式從“被動響應”向“主動精準”升級,深圳市寶安區西鄉街道流塘社區黨群社工近日在置地大廈開展“一鍵下單·心愿速達”長者分層級志願幫扶服務項目暨困境群體兜底政策宣傳活動,通過“數字化點單+分層分類幫扶+政策精準直達”模式,為社區長者織密“需求響應網”、搭建“...
小米汽車發布小米YU7購前準備攻略 明晚正式上市! - 天天要聞

小米汽車發布小米YU7購前準備攻略 明晚正式上市!

【CNMO科技消息】6月25日,小米汽車官方發布了針對即將上市的Xiaomi YU7的詳細購前準備攻略,旨在幫助有意購車的用戶提前做好各項準備,在車輛正式開售後能夠快速、順利地完成定購流程。 小米YU7將於6月26日晚19點正式發布。發布會結束後,用戶即可在小米汽車App內開啟預選配置功能,並保存心儀車型的配置方案。預計當晚22...
當貝 MP1 Max發布:點亮家庭影院的4K新星 - 天天要聞

當貝 MP1 Max發布:點亮家庭影院的4K新星

關注點贊,科技新品速遞!2025年6月,當貝推出了旗下高端家用投影儀MP1 Max,專為家庭影院用戶打造。這款投影儀以原生4K分辨率、3100 ISO流明亮度和專業級色彩表現為核心賣點,結合Google TV智能系統和強大的音效配置,為用戶