現有的家是 azure,功能多又有免費額度,算是堪用,只是因為雲端產業蓬勃發展,想體驗一下新東西,所以這次來玩玩 fly.io。從開啟以下賞心悅目的官網,第一次接觸到成功佈署上線,大概半小時就搞定了,體驗不錯,以下稍做紀錄。
先完成必要程序:註冊帳號,輸入信用卡。然後安裝 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)) 是最便宜的,這很重要,系統有提供成本試算計算機:
設定好後工具會為我們產生兩個最重要的設定檔 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 運行正常,管理畫面看起來功能很多,設計簡潔美觀,很優秀:
接下來很重要的問題,就是要監控費用。因為發現 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 了。
把前端網站接過來,一切運作正常,希望帳單也能夠有好表現。
Newman 2024/10/9
導覽頁:紐曼的技術筆記-索引
發現 hkg 的回應速度,遠優於 iad,所以改回 hkg,理解到地理位置是個 big issue: