数人云|史上最全,35个平台、框架、数据库细说什么是Serverless

数人云:Serverless,这个新兴的技术正在逐步深刻开发领域,它为应用提供大量基础设施,减小开发人员的部署问题,同时它还能解决敏捷开发中,交付具备预算约束的可伸缩应用的问题。数据库

本文将概述Serverless的发展历史、基本概念、应用、框架和优势。编程

爷爷,啥是虚拟机?

准备好如何回答这个问题吧,没准几十年后就得在饭桌上回答儿孙们,由于将来的开发人员可能永远都不须要启动实例,也不须要去碰大型服务器。后端

(回忆脸)虚拟机呀,就是一切开始的地方,一旦任何人在一台独特又普通的物理机上运行多个操做系统,就如同打开了一扇新世界的大门。api

又过了一段时间,如同亚马逊这些老牌公司,开启了云计算的革命,在任何地方用一张信用卡便可用它们提供的几近无限的虚拟机,啥?你娃说还不够?后来又出现一头鲸鱼,那是容器的黄金时代,最开始的几年是挺难的,由于人们得花一些时间才能真正理解这个概念,而后,而后就是Serverless了……安全

那些孩子们可不会听这些老掉牙的唠叨,他们都去玩虚拟现实游戏去了,独留你在那里唉声叹气不断追忆。服务器

功能即服务

FaaS是理解Serverless的基础概念,其定义为——微信

代码是在事件驱动的、短暂的和无状态的环境中运行,彻底由第三方托管,本文会介绍一些AWS jargons及服务以方便阅读和理解。网络

  • 代码:虽然它仍是那个代码,但仍有细微的差异,必须将全部须要的东西打包,如:External Libraries、ZIP文件,另外功能应该有一个被称之为处理程序的执行入口点。
  • 事件驱动:在FaaS中,每件事都会触发某种行为,举例说明,调整上传图片的大小,不须要写代码对它进行接收、存储、从新调整大小再次存储,能够触发一些代码,每次将新文件发到S3存储库时,都会对图像进行调整。还有各类事件:数据库中插入行,观察日志流、在队列中获取新消息、甚至HTTP请求等。
  • 短暂的环境:FaaS在每次调用功能时,就会构建一个全新的环境,调用处理完成后即销毁,虽然有点悲剧,但并不是没有道理:第一次运行非活跃的功能是有延迟的被称之为冷启动,若过多调用功能,环境可能会进行多个执行,消除冷启动后,不会产生这个问题,另外还有成本:只按执行时间付费。
  • 无状态:在功能调用之间没有任何状态,不能在本地或内存中保存信息,处理请求的全部上下关系必须保证每次执行时可用。
  • 彻底由第三方托管:无需管理服务器,截止目前,大多数Serverless厂商都提供了完整的维护服务,虽然无需搭建基础设施,但弊端是被厂商控制和锁定。

Serverless只需集成外部服务以及开发它们之间的接口,无需担心服务器方面的管理,这也正是用事件驱动架构的关键,这段代码应该本身写仍是交给第三方?某个部分可否被一个事件触发?功能是否具备正确执行所需的上下关系等等,这些问题必需要通过大量的思考和迭代实践。架构

Serverless平台

本文中,收集了一些公司、产品、工具以及Serverless典型的框架。能够看到这个行业随着时间的推移呈指数增加。因此从下图开始,将公司分为几个类别:app

AWS Lambda

Lambda是AWS Serverless 推出的一个事件驱动平台,运行代码以响应事件和自动管理代码所需的计算资源。

IBM Bluemix OpenWhisk

IBM OpenWhisk是一个分布式的、事件驱动的计算服务。OpenWhisk运行应用程序逻辑,以应对事件或直接经过HTTP调用网络或移动应用。

Google Cloud Functions

Google Cloud Functions是一个轻量级的、基于事件的异步计算解决方案,容许开发人员构建小型专用功能响应云事件,不须要管理服务器或运行时的环境。

Azure Functions

Azure Functions是一项PaaS服务,用户无需为峰值用量作准备或者为传统的维护操做担心。经过多种语言(例如 JavaScript、C# 和 F#)以及脚本选项(例如 Python、PHP、Bash、Batch 和 PowerShell)建立功能;一切都在基于 Web 的易用界面中实现。

Webtask

Webtask是简单、轻量级、安全的方式独立运行的后端代码,可有效减小后端需求。支持可扩展性,经过多租户系统的自定义代码,是安全可靠的解决方案。

Serverless开源框架

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框架/库

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的范围以外使用。

Serverless API 框架

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应用。

Serverless 数据库

FireBase

Firebase是一个移动平台,能够帮助快速开发高质量的应用,扩大用户群,提升收益,它由互补的功能组成,方便根据须要进行混合匹配。

FaunaDB

一个分布式、多租户、多模型的数据库系统,具备强大的查询语言。

固然,还有 Amazon DynamoDB,Google Cloud Spanner,Microsoft Azure’s CosmosDB 和其它Serverless数据库。

Serverless 监控工具

IOpipe

高保真的度量和监控服务,容许在Amazon Lambda功能中,更好的查看的平常维护和开发Serverless应用程序。

Dashbird

Dashbird用来查看AWS Lambda的功能。能够清楚地看到服务器栈上发生的事件。该平台提供自动化的监控、日志和调用数据等服务。

Serverless 安全工具

Snyk

在Serverless环境中,Snyk能够帮助理解和保护依赖项,从查询、修复和监控节点中已知漏洞的工具开始。

Serverless 的优势

  • 成本:目前Serverless最大的优点是能够下降成本,例如,在功能运行时,只须要支付从AWS中传输的数据,每100万次请求大约须要0.20美圆,由于它是按需付费的,此外,服务器维护管理的费用也被下降到接近0的水平。
  • 交付时间:在集成和低成本的支撑下,交付到市场的速度快了许多倍。
  • 无限的规模:Serverless在任什么时候间均可以处理任何数量的请求,自动伸缩内置到架构中,无需计划和设置,不过必定要注意的是DDOS攻击。
  • 打包和部署:再也不有分层的Dockerfile和入口,Lambda只须要一个包含代码以及库的ZIP文件便可,部署也是如此。

总结

在将Serverless应用到生产环境以前,不能照搬方法,还需根据自身的实际状况作一些改变,同时还须要一个团队,愿意去面对快速发展的事物,用一些时间去学习钻研和实践测试。无论怎样,已知的一些大公司如:Netflix、Localytics、VidRoll和Square Enix等公司都已应用了Serverless,这是将来的发展趋势,正逐步进入到各个行业领域当中。

原文做者:Jonatas Baldin、Tal Kimhi
原文连接:https://cheesecakelabs.com/bl...

欢迎加小数微信:xiaoshu062讨论更多serverless内容!

相关文章
相关标签/搜索