AWS Lambda
快速架起一個微服務
- Jimmy
你將會學到
- 什麼是 Serverless
- 初探 AWS
- AWS IAM
- AWS Lambda
- AWS API Gateway
- AWS DynamoDB
- Framework
- 使用 Lambda 架起一個微服務
Serverless ?
無伺服器?
歷史演變
2001
2013
什麼是 Serverless
- 開發者不需費心管理伺服器
- 程式碼皆在雲端上運行
- 事件觸發
WHY?
- 降低維護成本
- 自動化的擴展能力
- 簡單的管理
最重要的是.....
實際案例
可口可樂使用的6臺EC2 T2.M虛擬機器,一年下來總體成本為12,864美元;然而在使用AWS Lambda的情況下,使用量每月3千萬次,一年總體成本是4,490美元,成本省了65%,相當驚人。
初探 AWS
整體架構
AWS IAM
AWS Identity and Access Management (IAM)
IAM 是 AWS 用來管理權限的服務
我們會運用 IAM 的 KEY 來操作 AWS
- Users
- Groups
- Role
- Policies
*為了安全性會針對帳號給予相對應的權限
AWS Lambda
Lambda 是一種 Serverless 的服務
一個 Lambda 只有一個程式進入點
- 用自訂邏輯擴展其他 AWS 服務
- 完全自動化的管理
- 不用擔心硬體上的風險
- 自動調整規模
- 按使用量付費
- 靈活的資源模式
AWS API Gateway
讓開發人員輕鬆發佈、維護、監控和保護任何規模的 API
- 建立、部署和管理 API
- 彈性
- API 生命週期管理
- 產生 SDK
- 監控
- 權限控制
DynamoDB
- 非關連式資料庫
- 全受管
- 自動調整規模
- 隨時備份還原
快速部署的 Framework
現行有許多框架,serverless、apex、apex/up、claudia 幫助我們快速部署服務,省去繁瑣的 cli 操作與時間。
Serverless
# serverless.yml
service: users
provider:
name: aws
runtime: nodejs6.10
stage: dev # Set the default stage used. Default is dev
region: us-east-1 # Overwrite the default region used. Default is us-east-1
profile: production # The default profile to use with this service
memorySize: 512 # Overwrite the default memory size. Default is 1024
deploymentBucket:
name: com.serverless.${self:provider.region}.deploys # Overwrite the default deployment bucket
serverSideEncryption: AES256 # when using server-side encryption
deploymentPrefix: serverless # Overwrite the default S3 prefix under which deployed artifacts should be stored. Default is serverless
versionFunctions: false # Optional function versioning
apex
apex 專注於打包、部署以及管理 Lambda 上,屬於一包專案管理多隻 Lambda 的工具,適合大型專案或有多功能專案使用。
設定為 JSON 格式
project.json // 專案設定
functions
├── bar // lambda 名稱
│ ├── function.json // lambda 設定
│ └── index.js // lambda 程式
└── foo
├── function.json
└── index.js
apex/up
UP 部署時會依據程式碼一併幫你部署好 API Gateway,提供了開箱即用的體驗,屬於一包專案管理單隻 Lambda,適合小專案或單一功能使用。
設定一樣為 JSON 格式
up.json // 專案設定
app.js // 程式碼
component
├── foo.js
└── bar.js
claudia
claudia 與 apex/up 很相似,不過是使用 claudia-api-builder 套件部屬與管理 API Gateway
設定一樣為 JSON 格式
claudia.json // 專案設定
app.js // 程式碼
component
├── foo.js
└── bar.js
該如何規劃你的專案?
monolithic function
vs
single-purposed function
Serverless
By jimmy8646
Serverless
- 12