干货关于「Serverless」的完整指南:你知道和不知道的
Posted 移动Labs
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了干货关于「Serverless」的完整指南:你知道和不知道的相关的知识,希望对你有一定的参考价值。
文中部分观点略有偏颇,优多劣少,但对于了解和理解Serverless,还是相对较为客观的文章,仅供参考!
多年前,有人觉得Serverless就是瞎扯。然而,最近两年,Serverless已被成功实现并成为了家喻户晓的新技术。过去,你可能会问Serverless是否还需要Server的存在,毫无疑问,答案是肯定的!现在,你关心的问题,可能是个数百万美元的问题,那就是,是否有必要拥抱Serverless。
回顾过去,在很早之前,IT架构全是裸金属服务器,并且全部交由组织结构自己管理,随后来到了基于硬件仿真的虚拟化服务器时代,再后来就是由分布式计算平台衍生出来的云计算时代,最后容器技术(OS-level的虚拟化技术)开始登场并大获成功。不过,由于云计算的迅猛发展和普及,现在的IaaS其实也覆盖了很多领域,随着PaaS成为IaaS的下一代,Server的供给也在平台上被自动化实现了。
就如身边的一切,不论喜欢与否,技术正在不停的演变。在过去的十年里,我们看到了太多技术的变化,网络、计算、存储等领域都发生了极大变化。随着业务开发部门地位的不断提升,Serverless 被不断提及,同时Serverless的出现也加速了人们对PaaS概念的理解和应用的根本性改变。自从2014年AWS在Reinvent大会上发布Lamada Serverless服务以来,Serverless已成为技术转变的必然。直到今天,Serverless仍是软件架构领域最热门的技术趋势。
Serverless是一种应用和服务可以被编译和运行,同时又无需管理任何裸机或虚机服务器的云计算模式。在Serverless云计算模式中,服务器的配置、扩展和管理完全被屏蔽,操作员无需任何干预。Serverless整合了两个不同但重叠的领域,BaaS(Backend as a Service)和FaaS(Function as a Service)。
很多人误以为Serverless是个新发明的概念,实际上,它早已存在,而且也不是什么新玩意了。Zimki 在2006年就提供付费执行代码的平台服务了,但是在2007年底他们取消了这项服务,Salesforce的Heroku自2007年便开始默默地运行其Web应用部署模式了,Google在2008年就发布了功能有限的GAE平台,GAE最初是一个自定义的Python执行框架,现在成为了Web应用程序开发和托管最受欢迎的云平台之一。
随着事件驱动(event-driven)类应用需求的普及,临时性、无状态的容器计算服务的优势开始体现。与传统架构不同,容器计算引擎由第三方事件触发和终止,同时Function as a Service的概念也开始出现,聪明的开发者们开始利用这类服务,以便更好的实现和专注于自己的特定事件触发业务逻辑。对开发者而言,FaaS对底层基础架构设施进行了完全抽象,使用者仅需按使用时间进行付费,无需关注任何基础架构,借用AWS Lamada的话,就是“运行代码时无需考虑服务器,只需支付你的计算时间即可”。从行业发展来看,DevOps向无服务器计算的需求转变是Serverless市场主要推力,Global forecasts预测Serverless市场将以32.7%的速度增长,行业专家对Serverless的发展也持积极正面的观点。
Serverless的出现消除了服务器集群管理和过去必须事先准备服务器的繁琐工作,基于适当的云计算基础设施,Serverless底层服务器集群可以自行扩展,甚至可满足突发的流量高峰。Serverless服务由云计算供应商提供监控和管理,包括安全补丁以及各种防御攻击软件等都由供应商负责,这对用户而言,预算成本得到极大削减,因为Serverless使得用户自身运营成本显著降低,更不用说配置管理基础架构时的各种麻烦事了。
在Serverless中,你只有在真正使用了计算力时才需付费,计费以秒为单位。使用Serverless服务,从起初的产品Idea到成品实现输出将是一个极快的过程。过去,开发者总是在内部各种软件栈的配置使用上苦苦挣扎,使用Serverless,开发者头次使用即可获得极佳体验,AWS和多数Serverless供应商都提供免费语言套餐(除Google Cloud外,大多数供应商都提供了运行时/开发环境),这些使得首次使用的开发者即可获得极佳的体验。
Serverless也并非向神一样十全十美,只不过有些成本费用被隐藏了。通常,Serverless中的成本仍然还是要落到CPU和RAM上的,不仅如此,像API请求、存储和网络其实都是隐式成本。有些时候,根据特定的业务需求,可能需要多个函数,而与单容器相比,多函数实现显然要困难得多。由于业务逻辑在全局上的分布特性,Serverless中多函数实现带来的代码维护可能会占据你全部工作时间,因此对于复杂的使用案例,使用更为成熟的kubernets可能会更有优势。
缺乏本地主机测试工具是目前Serverless供应商的一大缺陷,因此要在本地模拟是很困难的。目前,通过Serverless Framework 和aws-sam-local在一定程度上可进行本地模拟实现。由于Serverless中的Server层是无形的,因此Serverless上的手工服务器配置调整从而适应你在本地开发的程序代码几乎是不现实的。
在迁移升级时候,Serverless厂商锁定将会是个巨大挑战,因为每个Serverless平台由于自身的独特性和局限性,彼此之间相距甚远。由此而造成的冷启动,可能会使应用程序在启动阶段经历较长的延时。
AWS并非市场上唯一的FaaS供应商,其他几家云计算巨头也在磨刀霍霍。Microsoft Azure通过Azure Function增强了事件驱动的Serverless体验,基于开源的OpenWhisk项目,IBM Cloud也在提供Serverless服务,而Google Cloud Functions正是Google的Serverless Beta产品。
不同的提供商在其Serverless平台中提供了一堆完全可直接使用的产品,这些产品无需供给、维护和管理,下图是各个主流Serverless平台提供的服务组件及其描述。
主流Serverless平台的组件描述
另外,Firebase是由Google Cloud Platform支持,并由多个服务组件集成的移动和Web应用程序开发平台。目前,大多数Serverless供应商都展示了其对物联网框架、移动后端和认知应用程序开发的支持。
AWS的大多数服务都是通过Availability Zone的特定入口来弥补全球范围内的应用延时,开发人员自由选择是使用AWS默认的Region还是使用自己指定的Region入口,AWS官网有其Region的详细描述。与此类似,其他Serverless供应商也支持多个AvailabilityZone。
AWS 的Lambda和其他服务都有支持多种编程语言进行Serverless开发的SDK,AWS最近(2018年1月)宣布Go支持。注释中的这篇文章描述了关于不同Serverless供应商所提供服务的详细对比。
Serverless服务让你无需配置和管理服务器即可运行代码,Serverless赋予了无数应用新的机会,以下是Serverless的应用场景和案例:
1、Real-time data processing
Serverless在Real-time data processing领域具有广泛应用,例如:
“西雅图时报”使用AWS Lambda实现图像大小调整,以便在台式电脑、智能手机和平板电脑等不同设备上进行查看。SiteSpirit使用IBM Cloud的数据服务来构建其实时处理的云媒体库。
2、Real-time stream processing
Localytics使用Lambda处理数十亿的历史和实时社交媒体趋势数据,供业务用户查询。 IBM Cloud Functions通过与支持IBM Message Hub的Apache Kafka集成,以处理流数据。 Plexure是新西兰一家从事新零售业务的公司,它使用Azure Serverless技术将客户体验提升到了一个新的层次——借助Azure Functions和Azure Logic Apps,Plexure的客户现在可以接收到和店内情况相关的数字警报。
3、Extract, Transform, Load (ETL)
Zillow是全球最大的房地产品牌之一,利用AWS Serverless 服务,Zillow在房屋估价方面为客户提了近乎实时流畅体验。
4、IoT Backends
在IoT领域,使用Serverless平台的应用程序不断增长。作为一家智能住宅废弃物收集公司,GreenQ利用IBM Bluemix技术,通过IoT与Serverless的结合,为客户提供了快速、高效的服务。
5、Mobile Backends
Bustle.com是一个专为妇女提供新闻、时尚等资讯的网站,他们的ios和网站后端使用了AWS的Lambda和API Gateway服务。Bustle.com的应用和网站迁移到Serverless架构后,开发人员再也不再担心管理和配置基础架构了,他们所关注的仅是如何创新。移动应用APP WeatherGods使了IBM Cloud Functions(原IBM OpenWhisk)通知用户特定的天气事件(例如佛罗里达州的飓风),并根据客户偏好进行天气定制推送。
6、Serverless web applications
用Eric Hammond的话来说,TimerCheck.io是一个“看似简单又超级强大的web服务”,TimerCheck.io的服务完全基于Amazon API Gateway和AWS Lambda,提供了无数可无限次运行的定时器服务。
7、SaaS event processing
San Joaquin Valley College (SJVC)是加利福尼亚州一所私立大专学院,为了简化IT管理并为学生提供更好的体验,他们将学习管理系统迁移到Microsoft Azure和Office 365上,在Microsoft FastTrack的帮助下,SJVC使用了Serverless技术并继续着他们的创新之旅。
Serverless使用案例不仅上述这些,你可以找到更多关于AWS、Azure和IBM的使用案例。
Serverless正在不断吸引着软件架构师们的注意,不过Serverless仍然存在很多Gaps需要填补,因此短期之类也不会立即跨入“Serverless即一切”的时代。目前虽然与Serverless相关的工具也在不断改进,但是Gaps仍然还是存在的,之前曾提到过的Serverless Framwork提供了CLI工具,通过CLI工具,用户可以与多个云供应商集成。
亚马逊在收购了基于云计算的IDE供应商Cloud9后,将其开发部分集成到了AWS的Serverless栈中。但是,现在Cloud9开发环境的设置需要新的Amazon EC2实例或者自己的Linux服务器,因此很多用户反馈新架构下的Cloud9开发环境启用过程比原始Cloud9(c9.io)的更复杂了,要解决这个问题,可以尝试下面这个巧妙的小技巧:
本地构建一个自给自用的Lamada函数,从而避免上传带有第三方依赖项的bundle。Microsoft Azure由Visual Studio提供支持,Visual Studio是另一种功能强大、适合团队协作的云环境IDE。
SLAppForge,一款全新播放器提供商,最近发布了其Sigma测试版,Sigma是一款用于Serverless应用程序开发和部署的可定制编辑器,混合部署模式,Sigma既利用到了拖放式的优雅简洁,又结合了源代码的全部优势。通过“very”Serverless架构,Sigma为开发者隐藏了平台底层复杂的架构,这意味着你再也无需为了使用一个平台而不得不去翻阅与之相关的大量手册资料了。
这款强大的IDE配备了直观的代码建议功能、代码完整性上下文感知、预生成代码片段等功能,但是目前仅只支持Node.js。同时,这款IDE还负责Serverless应用的持续开发与持续交付流程。如果你有一个浏览器、Github账号和AWS账号,那么一切就已经绪了——因为你无需安装任何东西。现在,部署Serverless应用只需几分钟,不是几个小时,也不是几天。
软件架构朝着Serverless转变几乎已成定局,就像传统IT架构从数据中心转到云端一样。多数应用走向Serverless的日子或许并不遥远了,现在正是赶上趋势,成为Serverless开发人员的最佳时机,因为与Serverless有关的一切都在使你的生产力和效率得到提高。抛开对基础设施的担忧,全身心投入业务逻辑,一切都在你的掌控中,立即开始你的Serverless之旅吧!
春
往期精选:
以上是关于干货关于「Serverless」的完整指南:你知道和不知道的的主要内容,如果未能解决你的问题,请参考以下文章
#yyds干货盘点#Console 3000字完整指南,让你不只会用console.log !
干货 | 详解 Serverless 服务,它会颠覆你对云的理解(附视频)