2017年会是Serverless爆发之年吗?
《2017年会是Serverless爆发之年吗?》要点: 中小型公司,尤其是互联网行业的创业公司,本身并没有太多的技术人员,如果设计系统时需要考虑诸多的技术问题,例如Web应用服务器如何配置、数据库如何配置、消息服务中间件如何搭建等等,那对于他们来说人员成本、系统成本会很高,Serverless架构的出现,让这种情况可能可以大幅度改善. 初识Serverless?在目前主流云计算IaaS(Infrastructure-as-a-Service,基础设施即服务)和PaaS(Platform-as-a-Service,平台即服务)中,开发人员进行业务开发时,仍然需要关心很多和服务器相关的服务端开发工作,比如缓存、消息服务、Web应用服务器、数据库,以及对服务器进行性能优化,还需要考虑存储和计算资源,考虑负载均衡和横向扩展能力,考虑服务器容灾稳定性等非专业逻辑的开发.这些服务器的运维和开发知识、经验极大地限制了开发者进行业务开发的效率.设想一下,如果开发者直接租用服务或者开发服务而无须关注如何在服务器中运行部署服务,是否可以极大地提升开发效率和产品质量?这种去服务器而直接使用服务的架构,我们称之为Serverless架构(无服务器架构). Serverless架构的问世2014年,云厂商AWS推出了“无服务器”的范式服务. 其实,最初“无服务器”意在帮助开发者摆脱运行后端应用程序所需的服务器设备的设置和管理工作.这项技术的目标并不是为了实现真正意义上的“无服务器”,而是指由第三方供应商负责后端基础结构的维护,以服务的方式为开发者提供所需功能,例如数据库、消息,以及身份验证等.这种服务基础结构通常可以叫做后端即服务(Backend-as-a-Service,BaaS),或移动后端即服务(MobileBackend-as-a-service,MBaaS). 现在,无服务器架构是指大量依赖第三方服务(也叫做后端即服务,即“BaaS”)或暂存容器中运行的自定义代码(函数即服务,即“FaaS”)的应用程序,函数是无服务器架构中抽象语言运行时的最小单位,在这种架构中,我们并不看重运行一个函数需要多少CPU或RAM或任何其他资源,而是更看重运行函数所需的时间,我们也只为这些函数的运行时间付费.无服务器架构中函数可以多种方式触发,如定期运行函数的定时器、HTTP请求或某些相关服务中的某个事件. Serverless案例以带有服务功能逻辑的传统面向客户端的三层应用为例(一个典型的电子商务应用网站).一般来说包含客户端、服务端程序、数据库,服务端用Java开发完成,客户端用JavaScript. 采用这种架构,服务端需要实现诸多系统逻辑,例如认证、页面导航、搜索、交易等都需要在服务端完成.如果采用Serverless架构来对该应用进行改造,则架构如图所示: Serverless架构相比于传统面向客户端的三层应用架构,有以下几方面的差异:
常见的Serverless框架介绍1. Amazon的Lambda产品 2014年11月14日,AWS发布了AWS Lambda.AWS Lambda是市面上最早,也是最为成熟的Serverless框架之一.该服务最迟支持Node.js,现在也支持Java和Python.它与Alexa Skills Kit(软件开发工具包)紧密集成,亚马逊提供交互式控制台和命令行工具,以便上传和管理代码片段. 2. Google Cloud Functions Google是为服务架构的最前沿公司,除了推动Kubernetes,Google还投资了Cloud Functions,该架构可以在其公共云基础设施上运行. 3. Iron.io Iron.io最初是为企业级应用提供微服务.Iron.io是用Go语言编写的,用于处理高并发、高性能计算服务,并已经集成Docker服务,提供一种完整的微服务平台. 4. IBM OpenWhisk 2016年2月的InterConnect大会,IBM发布了OpenWhisk,这种事件驱动型开源计算平台可以用来替代AWS Lambda.OpenWhisk平台让广大开发人员能够迅速构建微服务,从而可以响应诸多事件,比如鼠标点击或收到来自传感器的数据,并执行代码.事件发生后,代码会自动执行. 5. Serverless Framework Serverless Framework是无服务器应用框架和生态系统,旨在简化开发和部署AWS Lambda应用程序的工作.Serverless Framework作为Node.js NPM模块提供,填补了AWS Lambda存在的许多缺口.它提供了多个样本模板,可以迅速启动AWS Lambda开发. 6. Azure WebJobs Azure Web的应用功能,可以与Web、API应用相同的上下文中运行程序或脚本.可以上传并运行可执行文件,例如cmd、bat、exe、psl等等.WebJobs提供SDK用于简化针对Web作业可以执行的常见任务,例如图像处理、队列处理、RSS聚合、文件维护,以及发送电子邮件等等. Serverless架构原则1. 按需使用计算服务执行代码 Serverless架构是SOA概念的自然延伸.在Serverless架构中,所有自定义代码作为孤立的、独立的、细粒度的函数来编写和执行,这些函数在AWS Lambda之类的无状态计算服务中运行.开发人员可以编写函数,执行常见的任务.在比较复杂的情况下,开发人员可以构建更复杂的管道,编排多个函数调用. 2. 编写单一用途的无状态函数 (编辑:ASP站长网) |