iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
Software Development

使用 Serverless 架構設計廣告點擊系統 系列 第 15 篇

Day 15: 用 EMR 將資料一次性遷移到 Aurora PostgreSQL 的完整紀錄(上)

  • 分享至 

  • xImage
  •  

廣告點擊系統 API 最初採用 DynamoDB 儲存廣告點擊(ad click)事件。DynamoDB 的無伺服器特性讓初期開發非常快速,然而,當業務成長、下游服務開始大量呼叫 API 存取歷史點擊資料時,兩個問題接連浮現:費用快速攀升,以及API 呼叫次數遭到限流。

問題一:DynamoDB 的費用結構在大量讀取下非常不划算

DynamoDB 有兩種計費模式:

  • On-Demand 模式:每百萬次 Read Request Unit(RRU)收費 $0.125 USD。每次最多讀 4 KB,超過就會消耗多個 RRU。
  • Provisioned 模式:預先購買 Read Capacity Unit(RCU),每 RCU 每小時 $0.00013 USD,但超過 provisioned 上限就會被 throttle。

On-Demand 模式的話,假設下游分析服務每分鐘發出 10,000 次 API 請求,每次查詢都要掃描某個 ad_id 的多筆點擊資料(例如撈取某支廣告過去 30 天的點擊紀錄,平均每次掃描回傳 200 筆 × 每筆 1 KB = 200 KB):

相同的查詢量,Aurora Serverless v2 只需要支付計算資源費用:最小單位 0.5 ACU 約 $0.06/小時,即使尖峰擴展到 4 ACU 也只是 $0.48/小時,所需費用只約 DynamoDB On-Demand 模式的一半。

Provisioned 模式雖然比較便宜,但流量大就需要 Auto-scalling ,不然會被 throttle ,不一定符合需求。


上一篇
Day 14: 用 AWS Glue Python Shell Job 把 S3 上的 JSON 檔轉成 Parquet 檔(下)
下一篇
Day 16: 用 EMR 將資料一次性遷移到 Aurora PostgreSQL 的完整紀錄(中)
系列文
使用 Serverless 架構設計廣告點擊系統 共 16 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言