截至目前,今年最火的科技名词,非AIGC莫属。
从写作到绘画,全新的AIGC改变了我们的生活,也改变了相关行业,更让人看到它所带来的巨大价值——强大的文本处理能力和人机交互功能迅速成为炙手可热的新一代人工智能产品,有望给教育、编程、金融、会计、客服多个领域带来全新的变革。火遍全网的AI绘画,根据短短一段提示词就可以生成一幅充满想象力的作品,效率让人惊叹。
对于企业来讲,想有效地应对这些不确性带来的挑战,就需要让自己变得更加敏捷,把新的业务,新的产品迅速地推向市场,这样才能在激烈的竞争中立于不败之地。
但是说起来容易,实施起来很难,在移动互联网时代,为了应对高并发,大流量,大数据,IT系统变得越来越复杂,设计、开发、测试、部署、运维都需要耗费大量的人力和物力。为了帮助企业摆脱这种繁复的开发方式,Serverless技术应运而生。
作为一种云计算架构,Serverless的核心理念是让开发者只关注编写代码,而不需关注底层的服务器和基础设施。
在Serverless架构中,开发者不需要管理服务器,操作系统,网络,存储等底层设施,而是将应用程序以函数的形式部署到云平台上,由云平台负责根据请求自动扩展。
简单总结的话,Serverless具备四个优势:
•无需管理服务器
•自动扩展与缩减容量
•按使用量付费
•更高的安全与可用性
Serverless的这种特点使客户能够构建更加敏捷的应用程序,从而能够更快地创新和应对变化,是帮助企业应对不确定性最有效的技术手段。
- Serverless是应对不确定性的有效手段
做过互联网应用的都知道,互联网流量有很多突发情况,一个不起眼的小事件就可能导致流量暴增,如果没有提前规划好,导致容量不足,系统大概率就要瘫痪。
但是如果提前预留了很多富裕的容量,在大部分时间内没有对应的流量,又毫无用处,白白浪费。
而Serverless的极致弹性,支持从零到峰值瞬时扩展,可以轻松应对客户需求的激增,当流量下来以后,Serverless应用又可以自动卸载,确保低成本运行,这样的弹性和高性能,将为您的业务发展提供无可比拟的便捷与保障,有效应对市场的不可预测性。
(从上图可以看出,Severless提供的“容量”基本上和实际的流量是一致的)
喜欢思考的程序员肯定会有这么一个问题,应用程序员的冷启动怎么办?尤其是Java的Spring框架,启动初始化阶段有时长达10秒(这包括依赖注入、函数代码编译和类路径组件扫描),这么长的时间,客户肯定是等不及的。
亚马逊云科技发布了一个叫做Lambda SnapStart的技术,它在Serverless应用启动过程中,会获取内存和磁盘状态的不可变的加密快照,缓存起来,以后再次调用该Serverless应用时,直接从缓存中获取快照,填充到执行环境,这就大大加快了应用的启动速度。
测试显示,对于Serverless Spring Boot 2 例子,启用SnapStart以后,启动时间从超过6秒缩短到了不到200毫秒,提升了30倍之多。
由于Serverless帮助企业卸下了构建基础设施的沉重包袱,可以让企业把注意力集中在业务上,就可以帮助企业快速响应,做出更多的,面向客户的业务创新。
Serverless解决错综复杂性
经过多年的发展,现在的IT系统都是错综复杂的,一般都要用到关系数据库、非关系数据库、大数据处理和分析……甚至还有人工智能。公司需要耗费大量的人力和时间来构建这些复杂的系统。
比如数据库,要想支持大规模的数据量,非得分库分表不可,这对人员技能的要求一下子提升了很多,构建起来也麻烦了很多。
对于Serverless,不少人有种“落后”的认知,那就是Serverless就是搞纯计算的,所以对于数据存储,数据分析等场景,Serverless是搞不定的。
实际上,亚马逊云科技从计算、存储、应用集成、数据库、数据分析、人工智能等多个服务领域全面推进了Serverless进程,提供了Serverless全栈服务。
Amazon EMR Serverless实现了大数据处理的Serverless化,Amazon RedShift Serverless实现了数据仓库的无服务器化,Amazon DynamoDB实现了非关系数据库的Serverless化,还有模型推理,实时数据分析,数据集成…..我们现在能想到的,恐怕都Serverless化了。
更重要的是,这些服务之间可以任意组合,来解决企业自身独特的问题。
例如我可以用Amazon Lambda实现一段业务逻辑,把文件、图片数据存放到Amazon S3中,把结构化数据存放到Amazon Aurora Serverless当中。然后用Amazon API Gateway实现一个RESTful API的网关供外界访问。
还可以使用Amazon Glue对Amazon S3建立数据目录,供Amazon EMR做数据处理……
值得注意的是,所有这一切都是Serverless化的,所有组件都具备极致弹性,按需扩展的能力!
Serverless 解决潜在的风险
安全是企业应用非常重要的一个主题,应用中未知风险的积累会给业务带来很多不确定性。
我们知道,潜水艇的安全隔离仓是一种内置的容错机制,当系统面临未知风险时,隔离仓可以为系统提供额外的安全保障,保证系统的稳定性和可靠性。
Serverless计算也融入了潜水艇隔离仓的安全理念,如果Serverless服务是共享操作系统内核,那事实上是没有严格的安全隔离,不同租户使用共享OS内核就会有数据泄漏的隐忧。
亚马逊云科技通过自研的microVM,使得每个Amazon Lambda函数都在独立的microVM执行环境中运行,每个microVM执行环境只在Lambda函数的生命周期内使用,然后被销毁,不留下痕迹。
图片
这样的Serverless执行环境实现了完全的“隔离仓”功能,安全性远远超过普通的虚拟机,它可以保证:
(1)每个函数计算在一个或多个专用执行环境中运行。
(2)每个执行环境承载一个并发调用,但在同一函数的多个串行调用中就地重用。
(3)执行环境在硬件虚拟化虚拟机 (microVM) 上运行,microVM 专用于 Amazon 账户,但可以由账户内跨功能的执行环境重复使用。
(4)MicroVM被打包到亚马逊云科技拥有和托管的硬件平台 (Amazon Lambda Workers) 上。执行环境永远不会跨功能共享,并且microVM永远不会跨亚马逊云科技账户共享。
- 使用事件驱动架构来实现Serverless
事件驱动架构(Event-Driven Architecture,EDA)并不是一个全新概念,在多年的发展过程中,它在云计算时代遇到了Serverless,两者的特性完美契合,可谓绝配。
先来说说什么是EDA,EDA架构下的应用程序组件是通过事件进行通信,而不是直接调用对方的接口或者方法,这样各个组件之间就做到了最大程度的解耦。
EDA有三个主要组成部分:事件生成器、事件路由器和事件使用者。生成器将事件发布至路由器,由路由器对事件进行筛选并推送给使用者。
这么说有点抽象,举个例子就明白了。
例如有个电商应用,包含三个组件:
订单系统:处理客户下单和订单状态更新。
库存系统:处理库存更新和库存预警。
通知系统:向客户发送订单状态更新通知。
在事件驱动架构下,当客户下单时,订单系统将“订单创建事件”发给事件路由器,路由器会查找那些系统订阅了该事件(假设有库存系统和通知系统),然后把“订单创建事件”发给它。
库存系统一个Amazon Lambda函数接收到“订单创建事件”后,检查库存并更新库存数据。如果库存不足,Lambda 函数还可以触发库存预警事件。
通知系统的一个Amazon Lambda 函数会在收到“订单创建事件“,向客户发送订单确认通知。
当订单状态发生更改(如发货)时,订单系统会将“订单状态更新事件”发送给路由器,相应的系统就可以响应该事件进行处理。
可以看出,使用EDA,不同系统之间完全、彻底解耦,它们能够独立扩展、更新和部署。
EDA和Serverless天生就是绝配,想想看,事件驱动的逻辑模块都是可以异步调用的,也就是说事件不发生,对应的处理逻辑根本不用执行,甚至不用加载!这不就是Serverless嘛!有请求就加载运行,没请求就卸载,根据流量弹性扩展。
所以我们看到,很多用Serverless的系统都是EDA架构。
EDA架构需要考虑事件的发布、订阅、转换、路由等诸多要素,它们都需要可靠、稳定的基础设施,如果让企业去做这些事情,就不能把主要的精力集中到业务开发上了。所以围绕事件驱动架构,亚马逊云科技衍生了一系列的产品和服务:
图片
用户可以根据自己的需求和场景选择合适的服务组合,构建高度可扩展、低延迟的应用程序,并确保在处理大量事件时仍具有高性能和可靠性。
- 总结
亚马逊云科技17年的发展史(2006到2023年),也是一部亚马逊云科技创造和深耕Serverless的历史,Serverless进化的历史。
亚马逊云科技不断在数据库、数据分析、人工智能领域扩展Serverless版图,17年的技术沉淀无法超越。
亚马逊云科技提供的Serverless全栈服务让Serverless无处不在,它的极致弹性,自动扩展,安全护栏可以有效地帮助企业应对这个时代的不确定性,让企业把注意力集中在业务的创新上。
现在正是拥抱Serverless的时候,强烈建议大家关注Serverless,尝试Serverless,用Serverless给自己的公司带来更大的价值。
人工智能不应该只局限于写作和绘画,我们都希望它能够在改变生活的同时,最大限度的简化我们的工作,实现真正意义上的智能管理、智能运维。而我们上面提到的,只是Serverless的冰山一角,在亚马逊云科技创新大会上,有更多更精彩的Serverless内容,30+热点技术话题,涵盖了Serverless应用战略、架构进化、数据与分析、开发工具,可谓是一场Serverless盛宴,不容错过。