iT邦幫忙

2026 iThome 鐵人賽

DAY 9
0
佛心分享-SideProject30

營養師想做一個飲食建議產品系列 第 9

Day9 - 為什麼要上雲端?這次專案用了哪些 AWS 服務?

  • 分享至 

  • xImage
  •  

前面的篇章著重在營養domain、公式設計與計算,以及怎麼讓 AI 讀懂使用者描述的飲食習慣——但把規則訂下來之後,接下來要面對的是另一個問題:這些邏輯要放在哪裡跑? 要怎麼存取得生成的結果? 也就是”如何實行”的部分,因此接下來會把焦點從「營養邏輯」延伸到「系統實作」。

為什麼想「上雲端」?跟本地端伺服器差在哪裡?

所謂「雲端」,白話一點來說就是跟”雲端服務商”(例如AWS、GCP、Azure等等)租用一台電腦,而電腦的各種配備跟運算資源都可以任意選擇/更換。舉例像是伺服器、儲存空間,至於電腦硬體的維護、電力、故障排除等等都將由廠商負責,而這台電腦會是24小時不間斷運轉,使用者唯一需要做的就是選好配備後,透過網路連上遠端的伺服器,即可享有服務。

這麼一來,”雲端伺服器”跟”本地端伺服器”的差別就顯而易見了。

如果是用本地端伺服器,也就是自己買一台主機、或直接用自己的電腦當伺服器,硬體、電力、網路、備援統統要自己顧,機器關掉或斷線,服務也就跟著斷了,甚至如果想用一些比較高級的顯卡,或者更高階的配備,還得自行課金QQ。

由於這個專案的流量大概是”偶爾打一下”的等級,如果自己顧一台機器 24 小時開著,還要連環境設定、系統更新、當機重啟這些部署瑣事都要自己扛,我覺得不划算~而且以成本來說,AWS Serverless 的計費邏輯是「有人呼叫才算錢」,平時沒人用幾乎是 0,機器本身也完全不用自己碰,正好符合我的需要。最後重點是,這次專案的目的之一就是想透過實作多接觸AWS Cloud,因此~就決定上雲啦!

會需要動用多少 AWS 服務?

決定要上雲端之後,我原本以為這個專案頂多用到 Lambda 跟一個資料庫。實際做完一輪才發現,光是「把一個網頁跟一支 API 送上雲端」,就串了這麼多服務:

服務 在這個專案裡負責什麼
Amazon S3 兩個角色:① 存放前端打包後的靜態檔案 ② 存放 Food DB 的 foods.json(跟 Lambda 程式碼解耦,之後加資料不用重新部署)
Amazon CloudFront 前面掛一層 CDN,把 S3 裡的前端變成一個可以公開分享的網址
Amazon API Gateway 對外的單一入口,把 HTTP 請求轉發給 Lambda
AWS Lambda 真正的後端邏輯:固定公式計算、呼叫 Bedrock、組裝回應
Amazon Bedrock AI 的部分:理解自由文字、生成菜單
AWS IAM 管兩種身份:一個是我自己拿來部署用的 IAM 使用者,一個是 Lambda 執行時用的 Role(授權它呼叫 Bedrock、讀 S3)
Amazon CloudWatch 集中收 Lambda 的 log,雲端跑起來出問題時唯一能看到「發生了什麼事」的地方
AWS SAM 不是執行期服務,是部署工具——用 template.yaml 描述上面這些資源,一個指令建立/更新整套架構
AWS Budgets 帳單守門員,超過設定金額寄信通知,避免不小心燒錢

AWS Serverless 是在幹嘛?

簡單說,Serverless 就是把「養一台電腦」這件事外包出去。你不用管背後有沒有一台機器在待命、系統好不好、要不要更新,只要把程式碼交出去,有人用的時候它才被叫醒執行,做完事就休息——有點像叫計程車:車子平常停在哪、有沒有保養好都不是你的事,你只有在真的搭車那段時間才付錢。前面提到的「有人呼叫才算錢」,講的就是這個道理。而雲端服務其實不是每種都這樣(像 EC2 就是租一整台電腦給你自己顧),這次選的剛好都是「不用自己管機器」的這種。

上述表格裡的服務就是「Serverless」具體落地後的樣子,單獨看每一個服務,規則都不複雜,真正重要的反而是把它們串在一起,例如誰能呼叫誰(權限)、誰的輸出接誰的輸入(資料流),只要漏一個環節,整條路徑就打不通。

接下來幾篇,會來介紹這些服務,以及我是怎麼使用的。


上一篇
Day8 - 飲食習慣自述
下一篇
Day10 - Lambda:我的 Backend 放去哪裡?
系列文
營養師想做一個飲食建議產品10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言