1995年,在Amazon.com相对简单、原始首页的背后有着另外一个开发理念:将其作为一个单体或者说是紧耦合应用。不过随着新功能的多样且复杂化,亚马逊很快就意识到紧耦合架构会带来沉重的成本压力。
因此,亚马逊做了两件事:第一件事,将紧耦合架构拆分成松耦合架构,单体应用变成微服务;第二件事,将研发团队打散成“小而精”,并定义每个研发团队负责的事情。如今,Amazon.com电商网站已经拥有了数百万个微服务,每个微服务都通过标准化的接口来定义,而且有非常多的微服务是通过Serverless来实现的。
事实上,从2006年亚马逊推出第一个Serverless服务Amazon S3到今天,不仅仅是在计算领域,在存储、数据库、大数据、人工智能等其他领域都会看到非常丰富的Serverless产品和应用。而刚刚推出的Amazon OpenSearch Serverless,它代表着亚马逊云科技在大数据分析补上了最后一块拼图。也就是说,亚马逊云科技提供的所有大数据分析的产品,全部都提供Serverless选项了。
亚马逊云科技大中华区产品部总经理陈晓建
“只做一件事情并且把这件事情做好,这就是Serverless在整个开发的理念中最重要的思想。” 亚马逊云科技大中华区产品部总经理陈晓建日前在亚马逊云科技创新大会上表示,Serverless具有四大优势特征:无需管理服务器,自动扩展与缩减容量,按使用量付费,更高的安全与可用性。它是描述云服务、应用开发实践和云原生应用架构的一种方式,能够帮助客户更加敏捷地构建应用程序,从而更快地创新和应对变化。
当前的商业社会充满了不确定性:硅谷银行在48小时之内就没有任何征兆地倒闭了,当然也有很多创新的技术包括像生成式AI帮助我们产生连肉眼都难以分辨的非常逼真的图片和动画。
“Serverless 应用无需管理 API、消息队列、存储、数据库,企业只需要专注于业务逻辑,将更多的精力放在业务创新上,加速应用推出时间。”陈晓建表示,在2022 re:Invent 全球大会上推出的Amazon Lambda Snapstart可将Lambda函数的冷启动时间降低90%,实现10倍的快速启动性能,消除在系统启动的时候带来的突发延时,客户不需要做任何的代码改变,也不需要支付任何的费用。该功能帮助智能支付平台Bill.com提高了95%的冷启动性能。
丰富的Serverless服务帮助开发了《 弹壳特工队 》和《 弓箭传说 》初创游戏公司Habby大幅缩短新游戏的部署和上线时间;帮助《Marvel Snap》卡牌游戏在半年达成全球5000万美元的总营收;帮助可口可乐在 100 天内构建了新应用程序,允许客户在不接触自动售货机的情况下订购和支付饮料。
另一方面,Serverless可以消除业务不稳定起伏带来的隐性成本,轻松应对峰值、非频发的复杂工作负载;还可以消除数据管理系统按需扩展的复杂实施难题,无需考虑计算和存储资源的比例,也不会出现节点读写状态不一致等问题。
亚马逊云科技可以提供全栈Serverless Data服务——六大Serverless 数据库:Amazon Aurora Serverless、Amazon DynamoDB、Amazon Timestream、Amazon Keyspaces和Amazon Quantum Ledger Database (Amazon QLDB)和Amazon Neptune。2023年3月15日,Aurora Serverless V2在中国区正式上线: 可在几分之一秒内自动扩展到数十万个事务; 以细粒度的增量扩展容量,与为峰值负载预置数据库容量的方式相比,可帮助客户节省高达90%的成本。
全部的分析服务:交互式查询服务Amazon Athena、大数据处理服务Amazon Managed Streaming for Apache Kafka (Amazon MSK)、实时分析服务Amazon Kinesis和Amazon MSK、数据仓库服务Amazon Redshift、数据集成服务Amazon Glue、商业智能服务Amazon QuickSight以及运营分析服务Amazon OpenSearch Service。
此外,Amazon Lambda融入了潜水艇隔离仓的安全理念,满足企业级生产所需的99.99%高可用:执行环境在硬件虚拟化虚拟机(microVM)上运行;每个Amazon Lambda运行的microVM不会跨亚马逊云科技账户共享;每个执行环境只处理一个并发调用。
无服务器消除了管理基础架构的需要,也就是说使用无服务器架构,更多的责任例如给服务器扩容或者打补丁,由亚马逊云科技承担。
“过去17年,我们持续推进Serverless的发展,将Serverless提供的极致弹性和自动扩展能力带给越来越多的客户。此外,亚马逊云科技大规模云服务的运营能力以及标准、安全的产品API体系,确保了Serverless服务为客户提供极致的瞬间并发能力,应对极端业务激增,并帮助他们实现大规模部署,把应用快速部署到全球。”在陈晓建看来,大家可能没有意识到有非常多的应用,现在都可以使用Serverless来实现,而且不需要花非常大的力气去了解新服务,或是更改架构才能实现。很多客户的场景其实也证明了这一点。
首先,第一条路径,从迁移开始,无需代码改造。对于后端服务的无服务器化重构,亚马逊云科技开发了开源工具Lambda Web Adapter,客户无需修改代码,可以随意切换应用程序在Lambda和容器之间转换,基于容器开发的代码,经过镜像打包,可以交付到Lambda里执行;相反基于Lambda开发的Web应用,也可以通过web adapter选择采用Lambda还是采用容器部署和执行。
对于后端数据管理无服务器化迁移,亚马逊云科技提供与标准接口全面兼容的Serverless数据云服务:关系型数据库Amazon Aurora全面兼容MySQL 和 Postgres;非关系型数据库Amazon Keyspaces 兼容Apache Cassandra等。
第二条路径,拥抱事件驱动架构,灵活应对不确定性。事件驱动架构基于事件来解耦应用程序组件,由事件生产者、事件路由和事件消费者三个关键组件构成。例如,航空公司订票系统、餐厅服务的点单系统,和大量的银行保险业务,都是事件驱动的。
事件驱动型的好处是在于它可以独立部署和更新,可以避免不同的模块之间的变化给整个系统带来的问题,同时可以最大限度的去降低风险。也就是说,事件驱动型的好处在于更少的依赖,有故障隔离,同时是可进化的架构。
以Amazon S3为例,亚马逊云科技的Amazon S3的设计就是依照一个异步的并发的微服务的架构去开发的,正是基于微服务的一种分布式的异步的架构,可以在保证业务的持续服务的同时,可以不断增加新的功能。从2006年刚开始的时候,只有8个微服务的模块,到今天已经有超过了235个微服务模块,而整个过程对于用户的服务都没有产生任何影响。
第三条路径,Serverless First,降低应用成本。Serverless First就是在构建新的应用时首先考虑是否可以用Serverless 来实现。从而面向应用场景选择各种所需云原生Serverless服务来设计架构,充分发挥服务之间的功能集成和协同治理优势。
需要注意的是,Serverless 应用拥有极致弹性和成本优化:相对于容器和有EC2模式,Serverless可以以更细的颗粒度来做资源的部署,提供资源利用率,降低成本。用户意识到有的非常多的应用现在已经可以通过亚马逊云科技丰富的Serverless服务来实现,而且不需要很深的技术背景,或是需要更改架构才能实现。
写在最后
“经验没有压缩算法。我们的全栈Serverless 服务,是长期云服务运营经验的结晶。”陈晓建始终认为,所有工作的复杂系统都是从工作的简单系统演变而来:亚马逊云科技首个Serverless计算服务Amazon Lambda现在每月被调用的次数超过10万亿次;Serverless 数据库Amazon DynamoDB每天发起10万亿次请求;Serverless 容器Amazon Fargate计算每周新发布的任务超过22.5亿。
在这一趋势下,企业需要重新思考Serverless First策略:避免之前的紧耦合的单体的思维;主动拥抱事件驱动的模式,异步的事件驱动本身就是自然世界的逻辑;无状态是扩展的关键,比如计算和存储分离来解决横向扩展业务的健壮性问题,以及避免重复造轮子,应该更好地使用已经有的专业的解决方案。