文档章节

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

数人云
 数人云
发布于 2017/08/07 18:10
字数 3165
阅读 14
收藏 0

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

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

爷爷,啥是虚拟机?

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

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

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

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

功能即服务

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

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

  • 代码:虽然它还是那个代码,但仍有细微的差别,必须将所有需要的东西打包,如:External Libraries、ZIP文件,另外功能应该有一个被称之为处理程序的执行入口点。

  • 事件驱动:在FaaS中,每件事都会触发某种行为,举例说明,调整上传图片的大小,不需要写代码对它进行接收、存储、重新调整大小再次存储,可以触发一些代码,每次将新文件发到S3存储库时,都会对图像进行调整。还有各种事件:数据库中插入行,观察日志流、在队列中获取新消息、甚至HTTP请求等。

  • 短暂的环境:FaaS在每次调用功能时,就会构建一个全新的环境,调用处理完成后即销毁,虽然有点悲剧,但并非没有道理:第一次运行非活跃的功能是有延迟的被称之为冷启动,若过多调用功能,环境可能会进行多个执行,消除冷启动后,不会产生这个问题,另外还有成本:只按执行时间付费。

  • 无状态:在功能调用之间没有任何状态,不能在本地或内存中保存信息,处理请求的所有上下关系必须保证每次执行时可用。

  • 完全由第三方托管:无需管理服务器,截止目前,大多数Serverless厂商都提供了完整的维护服务,虽然无需搭建基础设施,但弊端是被厂商控制和锁定。

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

Serverless平台

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

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/blog/what-is-serverless-all-about/?utm_source=tuicool&utm_medium=referral

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

© 著作权归作者所有

共有 人打赏支持
数人云
粉丝 16
博文 101
码字总数 328110
作品 0
朝阳
架构师
私信 提问
Meetup北京报名开启|一起吹响Container+集结号

Meetup北京报名开启|一起吹响Container+集结号 数人云博客2017-08-0112 阅读 container开启 Container技术在国内的落地实践, 已进阶Container+ 8月阅兵仪式,一睹超强装备的风采, 技术圈也...

数人云博客
2017/08/01
0
0
数人云Meetup|一起吹响Container+集结号

Container技术在国内的落地实践, 已进阶Container+ 8月阅兵仪式,一睹超强装备的风采, 技术圈也不落人后, 8月19日的Meetup邀请到了来自微软、当当、京东、数人云的四位IT老兵, 一起吹响进...

数人云
2017/08/04
1
0
微服务架构企业级增强产品,数人云推出统一配置中心Hawk

微服务架构企业级增强产品,数人云推出统一配置中心Hawk 数人云博客2017-11-221 阅读 架构服务产品配置 11月16日,数人云在PaaS Innovation大会上,正式发布企业应用架构管理体系EAMS,这是数...

数人云博客
2017/11/22
0
0
数人云Meetup|Building Microservice NO.1 深圳站

发展变革,容器化的兴起,带来应用开发部署的变革,也带来应用设计架构和运维部署变化; 敏捷为王,造就Cloud Native技术及文化大势已成,云原生不仅是技术,在技术之上更是一种团队技术文化...

数人云
2018/01/04
8
0
DevOpsSRE超越传统运维之道(上海站)

5月&6月, 优维科技与数人云分别在深圳和上海, 做了两场关于DevOps&SRE落地实践的深度分享, 带着大家的期待, 我们将《DevOps&SRE超越传统运维之道》话题在上海继续。 匡云竹@优维科技、张...

优维科技
2017/06/22
1
0

没有更多内容

加载失败,请刷新页面

加载更多

深入理解JVM—JVM内存模型

深入理解JVM—JVM内存模型 我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存...

onedotdot
42分钟前
1
0
MVC、MVCS、MVVM、MVP、VIPER等这么多架构模式哪一个好呢?

在项目开启阶段,其中一个很重要的环节就是选架构。 那么面对目前已知的这么多架构模式我们该怎么选择呢?这确实是个很让人头疼的问题! 下面我就在这里梳理一下目前常见的一些架构模式。 先...

Java干货分享
今天
4
0
简单模仿配置文件的反射机制

//Student类 public class Student { public void love() { System.out.println("python"); } } //Tesy类 public class Tesy { public static void main(String[] args) throws Exceptio......

南桥北木
今天
3
0
你真的需要了解一下CSS变量 var()的用法

当Web项目变得越来越大时,他的CSS会变得像天文数字那么大而且还变得混乱。为了帮助我们解决这个问题,新的CSS变量很快就会出现在主流浏览器中,它让开发人员能够重用并轻松编辑重复出现的C...

前端小攻略
今天
2
0
嵌入式应用选择合适的微控制器

为嵌入式应用选择微控制器有几个原因,即低成本,高集成度,增加可靠性,节省空间等。 准备所需硬件接口列表使用微控制器的基本硬件框图,准备一份微控制器需要支持的所有外设接口的列表。微...

linux-tao
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部