計費模式理解的第一步是看懂帳單由什麼組成,而不是急著選哪種折扣。雲端不是「一台機器一個月多少錢」這麼單純——運算時間、儲存量、網路流出、請求數、IOPS 各自獨立計費,一張帳單是這些維度加總起來的。看懂帳單怎麼生成,才知道錢花在哪、哪個維度該優化;只盯著「機器月租」,會漏掉常常比機器還貴的那些維度。這是「成本控制」路線的起點,往下的容量成本模型在 模組五 成本模型 接續。

帳單的維度:付的是用量,不是機器

雲端計費的基本單位是用量,分散在幾個獨立的維度上。運算按時間乘規格計費(開多久、多大台)、儲存按量乘類型計費(存多少、哪種儲存等級)、網路按流出的流量計費、請求類服務按呼叫次數計費、磁碟按 IOPS 計費。這些維度各自累加,一個「看起來很小」的服務可能因為某個維度爆量而帳單很大——例如運算很少、但網路流出巨大。

看帳單要先拆到維度,才找得到真正的成本驅動。把整張帳單當成一個數字,只能看到「這個月比上個月多」,看不到「多在網路流出、不在運算」。拆到維度、再拆到單位請求成本(一個請求分攤到運算、儲存、網路各多少),成本才可歸因、可優化——這條 cost per request 的拆法在 模組五 成本模型 展開。

承諾模式:用彈性換折扣

在用量計費之上,雲端提供幾種「用承諾換折扣」的模式,取捨的軸是彈性與單位成本:on-demand 彈性最高、單位成本最貴,reserved 用 1 到 3 年的承諾換折扣,spot 用可被中斷換更深的折扣。這三種模式的折扣幅度、以及哪種配哪種工作負載(基準用 reserved、峰值用 on-demand、可中斷的批次用 spot),在 模組五 成本模型 展開過。這一章補模組五沒細講的第四種承諾模式——savings plan。

reserved 之外還有一種容易混淆的承諾模式:savings plan。差別在承諾的對象——reserved 承諾的是「某個規格的機器」,換規格或換區域就綁不住;savings plan 承諾的是「每小時花多少錢」(例如每小時至少花 10 美元的運算),只要總消費達到承諾,用什麼規格、什麼區域都算數。savings plan 用彈性換一點折扣深度——它的折扣通常略低於同期的 reserved,但換到了「規格可以自由調整」的自由度。規格常變的服務用 savings plan、規格穩定的用 reserved,是這兩者的分界。

reserved 到底值不值得,判斷標準是承諾期內用不用得滿。一個確定會穩定跑滿 1 到 3 年的基準負載買 reserved 幾乎穩賺——那 30% 到 60% 的折扣是實打實省下的。一個可能半年後就下線、或架構還會大改的服務買 reserved,是拿折扣換被套牢的風險:承諾付了、需求卻沒了。所以買 reserved 前要先確認兩件事——這個規格的需求真的穩定、而且已經做過 right-sizing。別用三年的承諾鎖住一個過大或即將改變的規格,那會把浪費也一起鎖三年。

隱藏成本:帳單上的意外

帳單最常見的意外來自幾個容易被忽略的維度。第一個是網路流出(egress)——資料進雲端通常免費,出雲端要收費,而且跨可用區的內部流量也收費。一個把大量資料傳給用戶、或在可用區之間頻繁搬資料的服務,egress 可能是帳單裡最大的一塊,卻最容易在規劃時被忽略。主機跑在免費方案上時主機本身不收費,費用仍可能全部來自出站流量;Oracle Cloud、Google Cloud 與 AWS 每月各有多少免費的出站流量、額度算在哪些區域與目的地,見 雲端免費額度與小型主機的收費比較 的〈出站流量與閒置回收〉。第二個是 NAT gateway 的流量費——在 AWS 與 Google Cloud 上,私有子網路的機器透過 NAT 出去的流量,除了機器本身,NAT 這一層也按流量收費,量大時很可觀;Oracle Cloud 的價目表沒有 NAT gateway 這一項,各家的差別見同一篇比較的〈查付費主機價格時要輸入的項目〉。

第三個隱藏成本是被遺忘的資源,不算在任何計費維度的名目下:開了忘了關的測試機器、沒人用卻還在計費的孤兒資源(沒掛載的磁碟、閒置的負載平衡器、忘記釋放的固定 IP;Oracle Cloud 刪除主機時預設保留開機磁碟,是最常見的來源,而留下的開機磁碟先佔著 Always Free 的儲存額度;在付費帳戶上,之後新建的磁碟放不進剩下的額度時,那一顆整顆不算免費額度、開始計費(Oracle Cloud 以整顆磁碟判定),未升級的帳號超出額度時的結果見 Oracle Cloud 的帳號結構與 home region:tenancy、Always Free 的範圍與主控台登入欄位〈超出 Always Free 額度時:試用中、未升級與付費帳戶各自的結果〉,開機磁碟的去留見 磁碟:開機磁碟與區塊磁碟的大小、效能、加密與去留 的〈刪除(終止)主機時開機磁碟的預設去留〉)。免費帳號上還佔著額度的開機磁碟之外,這些資源不服務任何流量、卻每小時都在計費,是純粹的浪費。它們的共通點是「開的時候有理由、關的時候沒人記得」——這正是 成本監控與告警 要抓的異常。

暫停一台主機是留下這類資源最常見的時機:主機停止或終止之後,磁碟、保留的公開 IP、備份與快照、負載平衡器與 NAT 閘道這類網路元件,在對它們收費的業者上各自照常計費,主控台的主機清單裡看不到它們;在作業系統裡下 shutdown 關機時,業者那一端記錄的主機狀態也不一定變成停止,主機本身照樣計費。暫停前每一項要決定保留或刪除,各項的計費方式見 服務暫停與恢復上線:只停服務、停止主機、終止主機到全部刪除各自保留的資源,暫停期間仍計費與仍被指向的資源,恢復前要查的漂移與恢復的順序〈暫停期間仍在計費的資源〉。

下一步路由