Optimizing the Data Tier in Serverless web Applications 課程筆記

繼續學習 re:Invent 2016 的 Serverless 系列課程. 這一堂內容主要是講Serverless架構中,有關於資料層這方面的一些重點提示.

Data tier options on AWS

選項

後端資料層的選項大概有這幾種, 依適合的場合來選擇.

  • DynamoDB
  • ElastiCache
  • RDS
  • Redshift

DynamoDB use cases

NoSQL 與 SQL 各有擅場, 這邊舉了一些DynamoDB適合的場景

  • 線上廣告: Ad serving, ID lookup ..
  • IoT: Tracking state, metadata and readings from millions of devices ..
  • Gaming: 排行榜, session information..
  • Mobile & Web …
more ...

Serverless Apps with AWS Step Functions 課程筆記

自從 2014年尾的AWS re:Invent 推出 Lambda 至今也兩年多了, 最近覺得Serverless 的概念是未來有潛力的東西,而不是個流行詞彙而已。 所以最近的短期目標就是抽空把 re:Invent 2016 的 Serverless Computing Mini Con 這個主題的十幾個影片盡量看完, 順便做點筆記。

--

由於 Lambda 有一個「最多300秒便會強迫timeout」的設計, 所以一旦拆成許多小型的程式, 到最後可能會變成圖中複雜組成的樣子. 而且現實生活的問題比較複雜.所以假如想讓許多的Lambda function 有秩序的處理問題,例如:

  • I want to sequence functions : 想要循序的執行
  • I want to run functions in parallel : 想要平行的執行許多functions
  • I want to …
more ...

使用 API Gateway製作一個股價查詢API

Amazon API Gateway 是一種全受管的服務,可讓開發人員輕鬆發佈、維護、監控和保護任何規模的 API. 它的角色有點像是我們一般的網頁程式中, 拿掉後段那些商業邏輯、查詢資料庫、字串處理所剩下的部份. 像是規劃 API網址格式、接傳參數處理, 存取控制這類的任務.

Serverless 架構的概念最近漸漸興起, 由於管理基礎建設始終就是需要心力去照顧的工作, 所以無伺服器架構這種新概念, 不用再管理Server, EC2也不開了, 那或許能再解放一些生產力出來, 讓大家的注意力更集中在有價值的地方.

--

初探 API Gateway

最近在玩 API Gateway 與後端串接 Lambda 吃了一些苦頭, 由於網路上能找到的文件資源大多以 NodeJS居多, 使用 Python 的就比較辛苦些.

以下推薦兩個連結, 能協助使用這樣組合的人迅速通過新手村的考驗:

more ...

使用AWS Lambda 製作一個氣溫資料爬蟲

AWS Lambda 玩了一個禮拜稍微摸熟特性之後, 就想找個小題目來做. 由於以前對於寫網路爬蟲有些經驗, 所以決定改用 Lambda來試試,資料是取材於中央氣象局的即時氣溫資料.

範例程式下載

github傳送門

程式說明

  • my_crawler_tw_temperature_downloader.py : 下載氣溫資料, 並將原始資料暫存於S3
  • my_crawler_tw_temperature_parser.py : 解析資料後,將結果存放於 DynamoDB
  • my_crawler_tw_temperature_process_data.py : 定期將DynamoDB的資料撈出來成為JSON檔案, 也就是上面曲線圖讀進來的資料

  • 前端繪圖Lib是 Flot

事件驅動來源

  • my_crawler_tw_temperature_downloader.py : 每10分鐘執行一次
  • my_crawler_tw_temperature_parser.py : S3產生Event 呼叫本程式(因為上面downloader將網頁存檔到S3)
  • my_crawler_tw_temperature_process_data.py : 每1分鐘執行一次

準備

  • S3:
  • 開一個新的bucket 準備放置許多抓下來的網頁.
  • 輸出的JSON網頁也會放於此, 由於 AJAX跨網域讀資料有些限制, 所以你要對Bucket的CORS做設定,允許其他網域來取資料.

  • DynamoDB 先建好以下Table …

more ...