這篇文章探討的是關於 Serverless 使用上的經驗分享
作者基於自身實戰經驗探討於 AWS 上使用 Serverless 的七種架構模式
模式一:
作者認為最簡單的模式,使用 API Gateway, Lambda Functions 配上 DynamoDB 來處理商業需求
團隊可以透過 API Gateway 來達到快取,限速等不同的調整
模式二:
針對微服務的架構調整,基於模式一進行延伸。
因為 API Gateway 以及 Lambda 相關的限制都是基於帳戶設定的(可以聯絡客服調高),因此模式二就是用更多的帳戶來處理更多的服務,藉此讓這些限制不會被許多服務共享。
模式三:
該模式是標準有前(SPA)後端應用程式的架構。
前端(Single Page Application)網頁放到不公開的 S3,前方透過 AWS CloudFront 來處理應用並且將 Request 給 Proxy 到後方 S3。而後端則是如同模式一的方式去部署
模式四:
模式三的延伸,如果需要使用者是來自於不同的地理位置,想要針對地理位置去進行更多處理時,會透過 CloudFront 作為 Proxy 來處理 Regional API Gateway.
剩下三種模式就不詳述,有興趣的可以閱讀原文看看七種模式
https://waswani.medium.com/serverless-architecture-patterns-in-aws-edeab0e46a32
cloudfront api 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
不知道作為服務供應者的各位如果內部服務需要維護時,都會如何對外公告之後會有一個維護時間?
今天這篇文章來自於 env0 這間產品的親身體用經驗,當今天產品不論是前端或是後端需要有一個維護時間去公告來告訴使用者,這個解決方案該如何有系統性地去設計與實作。
作者希望該解決方案可以滿足
1. 能夠透過 IaC 的架構來完成,因為目前整個產品都是基於 IaC 來設定
2. 能夠輕鬆的於工作模式與維護模式中來回切換,每次的切換都能夠自動化完成,盡量減少人為操作
3. 該解決方案盡量能夠靈活彈性,針對不同雲端廠商都要能夠適用,避免未來轉移時整個方案要砍掉重練
4. 希望本身要能夠提供後門供開發人員去進行修復與測試
5. 順利地告知使用者我們正在維護
由於該公司所有的產品目前都是基於 AWS 架構下,因此作者後來想出了以下的系統設計
1. 使用 Github Pages 存放網頁,該網頁用來描述當前處於維護模式
2. 不同模式之間的切換決定透過 DNS 的方式來處理,當處於維修模式時,相關的連結都會指向 Github Pages。
3. 透過 Route53 以及 CloudFront(CDN) 的方式來設定相關操作
4. 透過產品本來的機制,當一切自動化完成後會自動通知使用者當前屬於維護模式
最後整個系統操作流程如下
1. 透過 Terraform 去創建 AWS 所需資源,包含 Route53, CloudFront
2. 透過 Terraform 去創建 GitHub Page, 這部分因為 Provider 沒有完全符合需求,還需要額外的 scripts 直接跟 Github API 溝通
3. Terraform 執行時,會透過變數來切換當前是屬於工作模式還是維護模式
4. 如果是維護模式,就會修改 Route53, 將 CNAME 給指向 Github Page,因此使用者去訪問時都會導向 Github Page
5. 如果是工作模式,就會修改 Route53, 將 CNAME 給指向 CloudFront 內的 IP,因此使用者訪問時都會導向真正的產品
如果團隊本身也有這種需求,希望能夠將公告/維護等相關操作也都整合到日常工作流中,也許可以參考這種思路去思考,該如何自動化一切設定,讓所有的操作都盡可能的減少人為介入
https://medium.com/env0/building-a-maintenance-mode-with-terraform-and-github-pages-3dadd009f7bd
cloudfront api 在 軟體開發學習資訊分享 Facebook 的最佳貼文
🔥講師有提供 coupon code,可使用 NT300 元購買此課程,有需要請在下面留言申請
本課程讓你很好地了解 AWS 的核心服務。 在創建聊天應用程式時,你將學習並使用以下 AWS 服務:
✅S3(簡單儲存服務) – 用於儲存靜態 HTML 並將其銷售到用戶的瀏覽器
✅Lambda – 執行雲端邏輯以在應用程式儲存和檢索資料
✅IAM(身份和訪問管理) – 可確保能訪問你的服務
✅API 閘道器 – 為你的客戶端呈現一個良好建模的 API 並自動生成客戶端程式碼以與其通訊
✅DynamoDB – 大規模快速儲存和檢索資料
✅Cognito – 用於管理用戶、創建帳戶和安全登入
✅CloudFront – 用 CDN 加速向最終用戶交付網站
我們將通過學習和練習 Javascript 將它們結合在一起,並且我們將學習 CORS 以授予瀏覽器運行無服務器應用程式所需的權限。
https://softnshare.com/build-a-serverless-app-with-aws-lambda-hands-on/