如何將傳統 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


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

科技分類資訊推薦

李東生:希望在海外建立五個TCL - 天天要聞

李東生:希望在海外建立五個TCL

作者 | 黃昱編輯 | 劉寶丹百年未有的全球大變局下,全球化企業必須積極應對市場變化。作為中國品牌出海的老大哥,TCL也給出了自己的解題思路。6月24日至26日,世界經濟論壇第十六屆新領軍者年會(夏季達沃斯論壇)舉行。在此期間,TCL創始人、董事長李東生分享了自己對當前全球變局下企業發展的看法。 李東生提到,希望在海...
想買10萬左右的插混SUV,考慮宋Pro DM-i?還是閉眼入UNI-Z PHEV? - 天天要聞

想買10萬左右的插混SUV,考慮宋Pro DM-i?還是閉眼入UNI-Z PHEV?

手握10萬左右預算,又想買沒有續航焦慮的新能源SUV,搭載插混動力的車型,可謂是現階段比較穩妥的選擇。前幾天就收到了一位粉絲朋友的私信,看中了UNI-Z PHEV和宋Pro DM-i這兩款緊湊型SUV,因為都符合自身的預算,所以在如何選擇上犯了難?本篇文章小編
為什麼說起售價5.99萬的凱翼拾月Mate,每個家庭都可以擁有? - 天天要聞

為什麼說起售價5.99萬的凱翼拾月Mate,每個家庭都可以擁有?

6月16日,長江「零公里」起點合江門廣場上,非遺漆畫、糖畫、花語拾光工坊、團扇蜀趣雅集四大文化展區次第鋪展,將千年江畔點染成宜賓市民的「城市會客廳」,「川渝男神」李伯清攜「散打」評書,通過詼諧表演引得現場掌聲雷動,化作歡樂海洋;當凱翼車主被授予「拾月熊貓公益大
何小鵬:單點、偶發沒有意義,期望形成體系能力 - 天天要聞

何小鵬:單點、偶發沒有意義,期望形成體系能力

「過去的MONA、P7+、X9,我們都做得不錯,但是我實際上對內部沒有那麼多的訴求,因為⼩鵬是期望形成⼀個體系能⼒,在單點上偶爾出現的,我覺得沒有意義。」在近日接受新車新技術等媒體採訪時,小鵬汽車董事長何小鵬這樣說道。
小米AI眼鏡明晚亮相!雙芯方案挑戰Meta雷朋 - 天天要聞

小米AI眼鏡明晚亮相!雙芯方案挑戰Meta雷朋

6月25日消息,明晚19點,小米科技園將迎來一場定義未來的發布會。除小米YU7汽車與摺疊手機外,一款代號「面向下一個時代的個人智能設備」的神秘產品——小米首款真AI智能眼鏡正式官宣登場。小米此次入局,瞄準的是Meta雷朋眼鏡建立的行業標杆。
三星Exynos 2500跑分曝光,部分AI功能或付費? - 天天要聞

三星Exynos 2500跑分曝光,部分AI功能或付費?

近日,三星發布了Exynos 2500 晶元,其將由Galaxy Z Flip7首發搭載。如今,這顆晶元已經現身GeekBench 6資料庫,跑分成績曝光。結合來看,Exynos 2500的單核跑分成績在2303-2356之間,多核跑分成績