serverless概况&简介

serverless是什么

serverless就是让开发近最大可能的关注在代码上,而不是infra,代码以 Function 为基本单元进行部署和运行:

more code, less infra

[email protected] = Function-as-a-Service + Backend-as-a-Service$$

serverless和数据库的存储过程很像,把存储过程搬到了云端,由数据库触发事件变成云端触发事件,由数据库支持变成云平台支持,简洁直接,但能发挥的功效依赖所属平台的支持。

serverless的特点

  • 无需开通,没有服务器,没有虚机,也没有容器,基础设施方面是完全0代价维护
  • 完全按使用多少收费,闲置状态不收费
  • 按需自动扩展 - 内置扩展性(云服务商支持)
  • 全球到达 - 内置分布式架构(云服务商支持)

serveless的挑战

  • 启动延时
  • 监控
  • 调试和错误诊断
  • 本地开发,并可靠的发布到云端
  • 厂商绑定
  • 和已有的应用集成(云端和非云端)

serveless的应用场景

  • web应用:静态网站
  • 后端自动化服务:移动应用后台,IOT/edge computing
  • 后台应用:会话机器人(chatbot),语音处理
  • 数据流处理:实时数据处理,批处理,MapReduce
  • 基础设施自动化服务

serveless的响应模式

  • 同步(推模式): 响应http的url
  • 异步(事件模式):响应来自某个服务的事件,如S3
  • 基于数据流:数据流来自数据库,如Amazon DynamoDB,或者数据流中心,如Amazon Kinesis

serveless的托管平台

FaaS AWS Lambda Azure Functions Google Cloud Functions IBM Cloud Functions
语言支持 Node.js, Java, C#, Python Node.js, C#, F#, Python, PHP Node.js Node.js, Python, Java, Swift, Docker
触发事件 Amazon S3, DynamoDB, Kinesis Streams, Congnito, CloudFormation, CloudWatch Logs, CloudWatch Events, CodeCommit, Scheduled Events, Config, Echo, Lex, API Gateway, Simple Notification Service HTTP request, Cloud Pub/Sub, Cloud Storage HTTP Request, Schedule, Azure Storage blob storage & queues, Azure Event Hubs, Azure Service Bus queues & topics HTTP request, Schedule, GitHut events, IBM Cloudant, IBM Message Hub, IBM Push Notifications, custom events via triggers
安全 AWS IAM, VPC support OAuth providers (Azure Active Directory, Facebook, Google, Twitter, Microsoft Account, etc.) Cloud IAM IBM Cloud IAM, OAuth providers (Google, Facebook, GitHub, etc.)
监控 AWS CloudWatch Azure Application Insights Stackdriver Monitoring IBM Cloud Functions Dashboard
日志 AWS CloudWatch Azure Application Insights Analytics Stackdriver Logging IBM Cloud Functions Dashboard
审计 AWS CloudTrail Azure Audit Logs Cloud Audit Logging
报警 AWS CloudWatch, Alarms Azure Application Insights, Log Analytics, and Azure Monitor Stackdriver Monitoring IBM Cloud Functions Dashboard
开发工具 AWS CodePipeline, AWS CodeBuild Azure Portal, Azure Powershell, Azure CLI, Azure SDK gcloud CLI for functions IBM Cloud Functions UI, IBM Cloud Functions CLI, OpenWhisk Shell
调试 AWS X-Ray Azure CLI - local debugging, Azure App Service - remote debugging Stackdriver Debugger wskdb: The OpenWhisk Debugger openwhisk-light
费用 详情 … 详情 … 详情 … 详情 …
其它限制 详情 … only 10 concurrent executions per function
No limitations on max. execution time limit
详情 … 详情 …
生态 Step Functions Logic Apps Cloud Functions for Firebase Apache开源社区

费用/价格是个坑,这里有个简单比较:

price

免费餐比较:

free-tier

还有一些限制,使用前一定要了解清楚。

这里没有包括国内的云平台,如阿里云,腾讯云,华为云

FaaS由AWS首先发布(Lambda发布于2014年11月),由于AWS的成熟和众多功能,AWS是serverless目前最好的平台。强不强大,你仔细看一看AWS的事件集:

Amazon

AWS的Lambda目前占据了七成的市场:
AWS Lambda

serverless的基本现状

  • 全球使用方面美国占了近七成

global usage

  • 开发语言方面PythonJavascript/Node.js领衔:

programming language

  • 从Function的规模看,1-5个的占了一半:

function size

serverless例子

两个AWS Lambda step-by-step的例子:

由于云端的复杂性,即使是AWS,目前的开发体验还不是那么完美。

开源FaaS框架

目前有众多FaaS/Servless的开源框架:

  • Fission
  • fn (Oracle)
  • Kubeless
  • nuclio
  • OpenFaaS
  • OpenWhisk (IBM)
  • riff (Spring)
  • Zappa
  • ……

fn

Kubeless

nuclio

riff

Pivotal最近刚刚宣布Spring Cloud Function,有几个亮点:和Spring Boot/Java functional/Reactor无缝集成;能同时跑在云服务商的FaaS,PaaS以及本地。似乎是为Java开发者定制的跑在FaaS框架上的框架,符合Spring一路来的技术策略,值得关注。

显示 Gitment 评论
0%