技術筆記-後台實戰002-為我的 flask app 找另一個家,試試 fly.io

技術筆記-後台實戰002-為我的 flask app 找另一個家,試試 fly.io

更新於 發佈於 閱讀時間約 8 分鐘

現有的家是 azure,功能多又有免費額度,算是堪用,只是因為雲端產業蓬勃發展,想體驗一下新東西,所以這次來玩玩 fly.io。從開啟以下賞心悅目的官網,第一次接觸到成功佈署上線,大概半小時就搞定了,體驗不錯,以下稍做紀錄。

raw-image

先完成必要程序:註冊帳號,輸入信用卡。然後安裝 command line tool,名為 flyctl,輸入指令 (mac os command line):

% brew install flyctl

接下來要啟動專案了,到自己的專案目錄中,輸入指令:

% fly launch

工具所做的事比想像的還多,首先它引導我打開 browser 執行 login 程序,然後開始分析所在目錄的檔案,很快的就正確識別出這是一個 flask app,連同一些建議的配置設定,顯示如下:

Detected a Flask app
Creating app in /Users/newman/Documents/prjPython/newprediction-python
We're about to launch your Flask app on Fly.io. Here's what you're getting:

Organization: Newman Chen (fly launch defaults to the personal org)
Name: newprediction-python (derived from your directory name)
Region: Hong Kong, Hong Kong (this is the fastest region for you)
App Machines: shared-cpu-1x, 1GB RAM (most apps need about 1GB of RAM)
Postgres: <none> (not requested)
Redis: <none> (not requested)
Tigris: <none> (not requested)

? Do you want to tweak these settings before proceeding?

因為沒有使用資料庫,所以很單純,當然是回答 Yes,所有設定會到到網頁上,屆時還可以修改。需注意的點是 RAM 的部分,因為這是主要的費用來源,預設的兩個香港的 vm 各 1GB 會產生大約 14 美金的費用。因我的 app 相對單純,所以改為 512MB;後來又發現區域也會影響費用,而 iad (Ashburn, Virginia (US)) 是最便宜的,這很重要,系統有提供成本試算計算機

raw-image

設定好後工具會為我們產生兩個最重要的設定檔 fly.toml 和 Dockerfile,紀錄所有設定值,可到自己的專案目錄檢視。

Created app 'newman-python' in organization 'personal'
Admin URL: https://fly.io/apps/newman-python
Hostname: newman-python.fly.dev
? Create .dockerignore from 3 .gitignore files? Yes
Created /Users/newman/Documents/prjPython/newprediction-python/.dockerignore from 3 .gitignore files.
Wrote config file fly.toml
Validating /Users/newman/Documents/prjPython/newprediction-python/fly.toml
✓ Configuration is valid
We have generated a simple Dockerfile for you. Modify it to fit your needs and run "fly deploy" to deploy your application.

最後再一行指令就大功告成了:

% fly deploy

只見系統很乖的奮力工作,完成後測試 api 運行正常,管理畫面看起來功能很多,設計簡潔美觀,很優秀:

raw-image

接下來很重要的問題,就是要監控費用。因為發現 region iad 的費用低了不少,而 app 已經佈署在 hkg 了,該怎麼移過去呢?當然砍掉重練也是個方法,但趁機演練一下平台的水平 scale out 功能也不錯,這是雲端服務好玩的地方,全世界任你移,一定要學一學。先確認當前機器分佈,使用指令 fly scale show :

% fly scale show

VM Resources for app: newman-python

Groups
NAME COUNT KIND CPUS MEMORY REGIONS
app 2 shared 1 512 MB hkg(2)

系統顯示當前有兩台機器,在 hkg region。需要先把它拓展到 iad region:

% fly scale count 2 --region iad

% fly scale show
VM Resources for app: newman-python

Groups
NAME COUNT KIND CPUS MEMORY REGIONS
app 4 shared 1 512 MB hkg(2),iad(2)

反應超快,真是太方便了,已經掌握了 fly scale 的用法了。再來就是把 hkg 的兩台刪除,count 參數給 0 就好了:

% fly scale count 0 --region hkg

% fly scale show
VM Resources for app: newman-python

Groups
NAME COUNT KIND CPUS MEMORY REGIONS
app 2 shared 1 512 MB iad(2)

再到 web 管理畫面確認一次,已經成功轉移到 iad region 了。

raw-image

把前端網站接過來,一切運作正常,希望帳單也能夠有好表現。

Newman 2024/10/9

導覽頁:紐曼的技術筆記-索引

  • 後記 2024/10/11

發現 hkg 的回應速度,遠優於 iad,所以改回 hkg,理解到地理位置是個 big issue:

raw-image









avatar-img
newman的沙龍
24會員
116內容數
漫步是一種境界。
留言
avatar-img
留言分享你的想法!
newman的沙龍 的其他內容
Reinforcement Learning (強化學習) 的理論非常有趣,可能是因為其中許多方法,與人類的學習歷程極為相似,如試錯,獎懲,改進策略,持續優化等等。現在準備來爬這座山了,我把學習階段大致分成三個小山峰,依序為 Q-Learning --> DQN --> Actor-Critic,
稍微看一下 Telegram 官方文件,哇!好強喔,功能說明的第一項赫然出現「可以取代整個網站」!口氣真的很大。雖然我的需求應該很低,但能夠確認前面是一座豐富的寶藏,還是很令人興奮的,待基本功能掌握之後,可以再評估和決定要不要往下挖。 發送訊息 要達成這第一個目標,首先必須建立一個 bot。
Line Notify 即將停止服務,隨著時間越來越緊迫,隱約聽到許多人在哀嚎。印象中有許多廠商,把 Line Notify 用得淋漓盡致,甚至可以一個客戶建一個群組,把許多客製化服務都用程式管理的井井有條,得到很好的滿意度。但這種好康,無限免費的即時訊息,沒有了,時間就在 2025/3/31!公告
Reinforcement Learning (強化學習) 的理論非常有趣,可能是因為其中許多方法,與人類的學習歷程極為相似,如試錯,獎懲,改進策略,持續優化等等。現在準備來爬這座山了,我把學習階段大致分成三個小山峰,依序為 Q-Learning --> DQN --> Actor-Critic,
稍微看一下 Telegram 官方文件,哇!好強喔,功能說明的第一項赫然出現「可以取代整個網站」!口氣真的很大。雖然我的需求應該很低,但能夠確認前面是一座豐富的寶藏,還是很令人興奮的,待基本功能掌握之後,可以再評估和決定要不要往下挖。 發送訊息 要達成這第一個目標,首先必須建立一個 bot。
Line Notify 即將停止服務,隨著時間越來越緊迫,隱約聽到許多人在哀嚎。印象中有許多廠商,把 Line Notify 用得淋漓盡致,甚至可以一個客戶建一個群組,把許多客製化服務都用程式管理的井井有條,得到很好的滿意度。但這種好康,無限免費的即時訊息,沒有了,時間就在 2025/3/31!公告