数人云:Serverless,这个新兴的技术正在逐步深刻开发领域,它为应用提供大量基础设施,减小开发人员的部署问题,同时它还能解决敏捷开发中,交付具备预算约束的可伸缩应用的问题。数据库
本文将概述Serverless的发展历史、基本概念、应用、框架和优势。编程
准备好如何回答这个问题吧,没准几十年后就得在饭桌上回答儿孙们,由于将来的开发人员可能永远都不须要启动实例,也不须要去碰大型服务器。后端
(回忆脸)虚拟机呀,就是一切开始的地方,一旦任何人在一台独特又普通的物理机上运行多个操做系统,就如同打开了一扇新世界的大门。api
又过了一段时间,如同亚马逊这些老牌公司,开启了云计算的革命,在任何地方用一张信用卡便可用它们提供的几近无限的虚拟机,啥?你娃说还不够?后来又出现一头鲸鱼,那是容器的黄金时代,最开始的几年是挺难的,由于人们得花一些时间才能真正理解这个概念,而后,而后就是Serverless了……安全
那些孩子们可不会听这些老掉牙的唠叨,他们都去玩虚拟现实游戏去了,独留你在那里唉声叹气不断追忆。服务器
FaaS是理解Serverless的基础概念,其定义为——微信
代码是在事件驱动的、短暂的和无状态的环境中运行,彻底由第三方托管,本文会介绍一些AWS jargons及服务以方便阅读和理解。网络
Serverless只需集成外部服务以及开发它们之间的接口,无需担心服务器方面的管理,这也正是用事件驱动架构的关键,这段代码应该本身写仍是交给第三方?某个部分可否被一个事件触发?功能是否具备正确执行所需的上下关系等等,这些问题必需要通过大量的思考和迭代实践。架构
本文中,收集了一些公司、产品、工具以及Serverless典型的框架。能够看到这个行业随着时间的推移呈指数增加。因此从下图开始,将公司分为几个类别:app
Lambda是AWS Serverless 推出的一个事件驱动平台,运行代码以响应事件和自动管理代码所需的计算资源。
IBM OpenWhisk是一个分布式的、事件驱动的计算服务。OpenWhisk运行应用程序逻辑,以应对事件或直接经过HTTP调用网络或移动应用。
Google Cloud Functions是一个轻量级的、基于事件的异步计算解决方案,容许开发人员构建小型专用功能响应云事件,不须要管理服务器或运行时的环境。
Azure Functions是一项PaaS服务,用户无需为峰值用量作准备或者为传统的维护操做担心。经过多种语言(例如 JavaScript、C# 和 F#)以及脚本选项(例如 Python、PHP、Bash、Batch 和 PowerShell)建立功能;一切都在基于 Web 的易用界面中实现。
Webtask是简单、轻量级、安全的方式独立运行的后端代码,可有效减小后端需求。支持可扩展性,经过多租户系统的自定义代码,是安全可靠的解决方案。
LeverOS
一个开源云平台,简化了复杂的基础设施和微服务框架,功能强大,便于开发人员后期开发。
Funktion(Fabric8 / RedHat)
为Kubernetes实现了基于事件的Lambda样式编程模型。Funktion的一个子集被称为RedHat“fabric8.io”。
Fission.io
Kubernetes Serverless框架,专一于开发者的生产力的提升。
OpenLambda
OpenLambda是Apache Serverless项目,基于Linux容器。OpenLambda的目标之一是探索Serverless计算的新方法。通过尝试发现OpenLambda还为时过早,不得不作一些修改和调整工做。
Iron.io
Iron.io开发了一个框架,用于事件驱动的计算和运行Serverless应用,近期已经开源。专一于交付调用API实现负载均衡和消息队列的灵活性,肯定在何处部署现有的内部安全流程做业处理。
Kubeless (By Bitnami)
Kubernetes原生的Serverless Framework。
Openwhisk (By IBM)
IBM OpenWhisk运行应用程序逻辑,以应对事件或直接经过HTTP调用网络或移动应用。OpenWhisk是开源项目,管理(服务)版本称为IBM Bluemix。
Serverless Inc
Serverless框架,容许部署自动伸缩,pay-per-execution、事件驱动的功能,不受限于公有云、私有云、混合云。Serverless Inc目前支持AWS Lambda,Apache OpenWhisk,微软Azure,扩展以支持其余云提供商。
Stdlib
做为FaaS库StdLib提供了一种简单的方法来建立、分发和发现Web服务。
SPARTA
SPARTA转换一个二进制文件注册lambda函数进入一组独立可寻的AWS Lambda功能。此外,SPARTA微服务做者提供一个机会来知足其余要求,好比在AWS执行自定义,额外的基础设施需求,监控和报警信息。
Stackhut (nstack)
StackHut将代码转变成云API。编写业务逻辑,而无论理服务器逻辑,Python和JavaScript在云中转化为可伸缩的API,方便任意集成。
Gestalt (Galactic Fog)
Gestalt是一组微服务框架,能够帮助公司构建面向将来的云原生应用。框架由三个主要的元数据层组成,负责跟踪和管理全部IT资源,基础架构层是一个可插入的容器和Lambda管理引擎,集成层是一套现成的微服务,旨在解决最多见的企业集成问题。
Effe
用来构建Serverless的开源架构,可运行在单个Lambda的功能上。
APEX
Apex能够轻松地构建、部署和管理AWS Lambda功能。经过节点可以使用由AWS Lambda(如Golang)所不支持的语言,js shim注入到构建中,为测试功能、回滚部署、查看度量、跟踪日志、链接到构建系统以及更多的功能提供了各类工做流相关工具。
Distribyte
Distribyte的目标是引入Serverless的优点,容许应用程序在计算调用之间无缝地存储数据,并将数据添加到Mix Unlocks中,也能够在现有的Serverless的范围以外使用。
Multicolour
REST API生成器,目标是为公司节省90%的成本和开发API的时间,链接功能很是强大,即便是Node.JS生态系统中最成熟的框架也没法匹敌。
Deployd
经过提供知足复杂应用程序需求的重要功能,使构建API变得简单。
Kong
可扩展的开源API层(API网关,或API中间件)。能够在任何RESTful API上运行,经过插件扩展,这些插件提供了核心平台以外的额外功能和服务。
TYK
一个快速、可扩展和开源API网关,提供了一个API管理平台,有API网关、API分析和API管理仪表板。
API Umbrella
位于API以前的代理,能够无缝地添加诸如API Key、速率限制和对任何API的分析等功能。
Fusio
开放源码的API管理平台,能够帮助构建和管理REST API。提供了全部工具快速构建不一样数据源的API,同时能够自定义建立响应。
Kappa
命令行工具,可让AWS Lambda更容易部署、更新和测试功能。开发Lambda功能有不少步骤,Kappa在试图解决这个问题。
Zappa
能够轻松地让全部的Python WSGI应用在AWS Lambda + API网关上构建和部署,将其看做Python应用的“Serverless”Web托管。这意味着无限扩展、零宕机、零维护、以及当前部署成本的一小部分。
Zapier
Zapier的自定义代码操做容许扩展Zapier的平台,使用Web上最经常使用的广泛的编程语言:Javascript作任何事情,运行代码响应Zapier支持的任何触发。
Stamplay
一个基于API的开发平台,受权Web开发人员在记录的时间内构建和发布全功能且基于云的Web应用。
FireBase
Firebase是一个移动平台,能够帮助快速开发高质量的应用,扩大用户群,提升收益,它由互补的功能组成,方便根据须要进行混合匹配。
FaunaDB
一个分布式、多租户、多模型的数据库系统,具备强大的查询语言。
固然,还有 Amazon DynamoDB,Google Cloud Spanner,Microsoft Azure’s CosmosDB 和其它Serverless数据库。
IOpipe
高保真的度量和监控服务,容许在Amazon Lambda功能中,更好的查看的平常维护和开发Serverless应用程序。
Dashbird
Dashbird用来查看AWS Lambda的功能。能够清楚地看到服务器栈上发生的事件。该平台提供自动化的监控、日志和调用数据等服务。
Snyk
在Serverless环境中,Snyk能够帮助理解和保护依赖项,从查询、修复和监控节点中已知漏洞的工具开始。
在将Serverless应用到生产环境以前,不能照搬方法,还需根据自身的实际状况作一些改变,同时还须要一个团队,愿意去面对快速发展的事物,用一些时间去学习钻研和实践测试。无论怎样,已知的一些大公司如:Netflix、Localytics、VidRoll和Square Enix等公司都已应用了Serverless,这是将来的发展趋势,正逐步进入到各个行业领域当中。
原文做者:Jonatas Baldin、Tal Kimhi
原文连接:https://cheesecakelabs.com/bl...
欢迎加小数微信:xiaoshu062讨论更多serverless内容!