© Ross Findon

本文来源「Hello Java」,原文标题《Serverless:云时代的软件架构核心思想》。

Serverless绝对是这两三年来业界最火的词(UC Berkley写的一篇新的Serverless的观点的文章里提到:Serverless的搜索热度和当年MapReduce最热的时候一样),在AWS这几年的reInvent大会上也是绝对的主角,各种挂着Serverless xx的产品也层出不穷,但是估计你问十个人,会有十种解读,我认为目前Serverless更主要的是一种思想,但具体怎么实践还在探索期,这篇文章就来讲讲我认为的Serverless。

AWS 眼里的 Serverless

讲自己的观点之前先引用一些AWS的观点,毕竟目前Serverless主要是AWS在引领:

"大概12年之前,我们深知云将给软件带来翻天覆地的变化,我们创造了AWS。一直以来AWS希望与软件开发者密切合作,打造出一个现代化的软件开发框架。而不是告诉客户,你们需要什么工具。在AWS的信念中,我们认为真正知道软件应该如何开发的只有一个人,就是客户本人。"

“现代化的架构是使用AWS的服务、Lambda的功能,把它们连接在一起。没有中间层、没有应用层,也没有数据库层,它是一系列web服务连接在一起,由功能连接在一起,无需服务器,而安全、可靠性、规模、性能、成本管理这些事项由AWS做好”。

这两段话是AWS的CTO在2018年8月中国的AWS Summit上讲的,在AWS的观点里,我认为Serverless不是指FaaS,而是指上面讲的这个现代化架构。

"Everyone wants just to focus on business logic."

这句话是在刚过去不久的AWS reInvent 2018大会上讲到的,这句话其实对应了前面的现代化架构的价值点。

从上面这些引用的观点,我们能看到对于AWS而言,并不是FaaS或者说Lambda==Serverless,而是很多的东西组合在一起才是Serverless,它的最大价值则是让使用者能够just to focus on business logic,而要做到这样的效果其实是需要业务系统的架构演进到AWS所说的现代化架构。

UC Berkley 一篇关于 Serverless 观点的文章

除了主导者AWS外,UC Berkley最近也发表了一篇关于Serverless观点的文章:"Serverless Computing: One Step Forward, Two Steps Back",大家可以点击阅读原文来看这篇文章,文章里首先阐述了下Serverless:

"As a result, cloud providers are quick to emphasize that serverless is not only FaaS. It is FaaS supported by a 'standard library': the various multitenanted, autoscaling services provided by the vendor. In the case of AWS, this includes S3 (large object storage), DynamoDB (key-value storage), SQS (queuing services), SNS (noti- fication services), and more. This entire infrastructure is managed and operated by AWS; developers simply register FaaS code that uses these services and receive 'pay-as-you-go' bills that scale up and down according to their storage and compute usage."

这个观点和前面说的FaaS!=Serverless是一个意思。

关于One Step Forward的观点为:

“By providing autoscaling, today’s FaaS offerings take a big step forward for cloud programming, offering a practically manageable, seemingly unlimited compute platform.”

可以看到这里的观点是Serverless带来的主要是云资源的弹性的使用。

关于Two Steps Back的观点为:

“First, they painfully ignore the importance of efficient data processing.”

这个观点指的主要是他们认为Function的情况下,每个Function是独立的,Function之间的交互是通过持久或临时的存储、事件驱动来完成,导致了完成交互的时间比以前慢了很多很多。

“Second, they stymie the development of distributed systems.”

这个观点指的主要是通常分布式系统会依赖很多的类似leader election协议、数据一致性、事务机制等,而这些在目前的FaaS类型的平台里是很难去实现的。

我眼里的Serverless

看到Serverless现在的状况,太像当年的SOA时代了,我在07年加入淘宝做服务化,那几年SOA思想满天飞,但真的要开始做服务化的时候,会发现完全不知道该怎么做,因为压根就没有地方定义清楚什么是服务化,用什么框架来开发服务化的业务系统,于是当年淘宝完全是自己摸索,做了HSF来作为服务化的开发框架,演进形成了经典的Service Provider/Service Consumer、Soft Load Balance服务框架结构,再后来又做了各种工具来满足服务化后的Tracing、排查问题、服务治理等诉求,服务化现在基本成为了大部分业务系统的核心架构思想,它解决了超百人规模的研发团队协作效率问题、以及单体系统的水平伸缩问题。

对于Serverless,我也认为是新时代的一个核心架构思想,业务系统的架构要演进,需要非常强的动力,例如服务化架构演进的动力通常就是超百人规模的研发团队或者是单体系统的水平伸缩问题,那么业务系统演进为Serverless架构的动力是什么呢?

软件发展到今天,多数企业的业务系统开始越来越复杂,开发一个业务系统需要掌握和关注的知识点越来越多,并且系统中出现了越来越多的非业务的基础技术系统,例如分布式Cache等,在这种情况下,研发的门槛在上升,效率在下降,而Serverless思想我觉得很重要的就是可以解决研发门槛和效率的问题,让业务系统研发能更专注的关注在业务逻辑上(和AWS说的现代化架构的观点一致),而不仅仅是按量付费。

那么Serverless思想怎么来解决研发门槛和效率的问题,我觉得核心的点就在于把业务系统开发时需要用到的各种基础技术产品都隐藏起来,并将要用到的一些基础技术进行归纳抽象,例如存储、服务交互,这样,开发人员要学习的东西可以大幅减少,并且也不用管一堆项目依赖的基础技术产品的运行状况了,如果能做到这样,意味着在开发业务系统时可以更加聚焦的关注业务逻辑,目前看到的各类FaaS平台思想上很像这种,但我觉得做的很不够。

为什么我说这是云时代的软件架构思想呢,因为Serverless这种思想我觉得只适用于云时代,要把一堆的基础技术产品隐藏,并提供丰富的选择,这个基本只有在云时代才有可能做到,在以前各自部署业务系统的情况下,这个模式很难去做到规模化。但在云时代,这就完全有可能了,其实可以认为现在已经在使用一些云存储服务、中间件服务、数据库服务的业务系统或多或少已经进入Serverless时代了,只是由于目前一方面还很难做到高度抽象,另一方面很难做到完全不用管依赖的基础云服务,以及云服务的选择还是不够丰富,导致离Serverless的价值实现还有距离。

我非常看好Serverless这样的思想最终能落地成一个开发框架,并将目前的业务系统演进到Serverless架构,基于这个框架可以很容易的去实现一个基于Serverless架构的业务系统。这将意味着大多数的企业,以后不用自己组建基础技术的团队,可以依靠强大的云厂商的基础技术团队(当然,这个框架一定不能是lock-in某家云厂商的,并且要能非常容易的切换,这个只要框架够强大,就可以倒逼各云厂商支持事实标准),所有的研发只需专注在企业的业务逻辑上。从事实情况上看,目前的各类FaaS平台差距还很大。

Serverless为什么到现在还没怎么流行起来呢,我觉得非常大的原因是:目前,复杂的企业业务系统完全还无法基于一个简单的FaaS平台方式来实现,这个观点和UC Berkley那篇文章里的The Second Step Back很一致,目前使用Serverless的多数用户只是把它用于一些非关键场景。一个架构级的思想、框架要成为主流,必须是应用到企业业务系统的主流程中,所以怎么结合Serverless的思想、目标落地到企业业务的核心系统中,展现价值,并沉淀出Serverless开发框架(就像阿里当年做服务化,沉淀的HSF、Dubbo、SOFA),Serverless才能成为新一代的业务系统的主流架构,我很坚信这一天不会太远,所以我是强烈推荐各位开发者们从现在开始就应该多学习和试用Serverless,按照这个标准,能看出目前市场上其实完全没有类似的东西(iron.io在做的open source serverless computing在探索支持request/response这种类似在线业务系统的典型结构方式),架构级的演进机会可不是年年都有,甚至是5年/10年都不一定能碰到一次,所以这也同样意味着这是个巨大的机会,几年后再来看看这篇文章,这个市场是谁家的,一定会很有意思。

结合历史经验来看,软件架构的发展很多时候都是在围绕研发门槛和研发效率(最典型的就是各种基础技术产品:TensorFlow等等,让业务研发更聚焦业务逻辑),并推进形成更大规模的社会协作和分工而进行的,所以技术创新能持续围绕这个本质问题,将一定能推进软件架构的发展。

参考资料:

亚马逊CTO 沃纳·威格尔:AWS不是技术导向而是客户导向" https://www.iyiou.com/p/79020.html

"Serverless Computing: One Step Forward, Two Steps Back" https://arxiv.org/pdf/1812.03651.pdf

春节前的小礼物 | 阿里家书

阿里家书是春节前给员工家属寄送的一份家书,包含了台历、春联、明信片、对联、红包封和公仔等,是阿里多年的传统。本期抽奖活动,我们将送出一(套)阿里家书,希望能把我们的祝福带给您的家人。(亲,包邮)

参与方式:

# 点下“好看” ❤️

# 然后,公众号对话框内发送“家书” ?

Serverless 是云时代软件架构的未来么?相关推荐

  1. 西安活动 | 云时代,享未来 .NET 线下沙龙

    活动介绍: 在云时代到来的今天,越来越多的应用已经依赖于云而构建,这正得益于云给软件开发带来的低成本,易扩展,可重用的便捷之处..NET Core平台就是为云而诞生的,毫无疑问它是构建云应用的首要之选 ...

  2. Serverless:云时代的软件架构核心思想

    作者:bluedavy 来源:HelloJava Serverless绝对是这两三年来业界最火的词(UC Berkley写的一篇新的Serverless的观点的文章里有Serverless的搜索热度和 ...

  3. 阿里毕玄:阿里十年,从分布式到云时代的架构演进之路

    这是一篇来自鲲鹏会的文章,其内容是毕玄在TGO 鲲鹏会杭州分会活动现场分享的<云时代的软件架构>的整理.特别转载到云栖社区,让更多开发者深入了解阿里架构的变迁和对云技术的一些新的想法. 2 ...

  4. 决战云时代--“微服务”连接企业级应用(SaaS)与云计算平台之间最后一公里

    一.背景 Martin Fowler 在 2014 给出了"微服务"架构(microservice)定义,现以是国内软件产业界最火热的名词之一.无论是刚毕业的学生,还是做应用开发的 ...

  5. 伯克利论断:Serverless 才是云时代的主宰

    编者按: 来自伯克利的犀利断言:Serverless 计算将会成为云时代默认的计算范式,将会取代 Serverful (传统云)计算模式,因此也意味着服务器-客户端模式的终结. 你准备好了吗? 引言 ...

  6. 为什么说 Serverless 是云的未来?

    作者 | 不瞋 阿里云高级技术专家 每隔几年,IT 界就会出现新突破性的进展.回望整个计算机技术发展史,我们会发现"抽象.解耦.集成"的主题贯穿其中.产业每一次的抽象.解耦.集成, ...

  7. 为什么说Serverless是云的未来?

    作者 | 不瞋  阿里云高级技术专家 每隔几年,IT 界就会出现新突破性的进展.回望整个计算机技术发展史,我们会发现"抽象.解耦.集成"的主题贯穿其中.产业每一次的抽象.解耦.集成 ...

  8. 任正非:未来是云时代,华为也要转向云战略

    日前,华为心声社区发表任正非在"GTS云与终端云合作与融合进展"汇报会上的讲话文件.他表示,未来是云时代,华为也要转向云战略. 任正非表示,端管云要协同,力出一孔,华为再通过2-3 ...

  9. 后疫情时代,华为云会议如何定义未来会议?

    摘要:有着超过20年视频会议产品研发经验的华为云会议来说,华为做的视频会议系统有点不一样. 疫情过后,火了什么?视频会议系统! 不可否认,疫情让很多人知道了视频会议,并在相当长的一段时间成为了我们工作 ...

最新文章

  1. 2018usnews计算机专业排名,2018年研究生计算机专业前50排名(美USNews版)
  2. spring boot 打包jar,jar没有主目录清单
  3. CENTOS安装ElasticSearch
  4. python退出程序-Python退出命令的总结
  5. Linq查询语法(2)
  6. 同时查找数组中最大和最小值
  7. 8.2 动力系统的贝叶斯推理
  8. websocket中发生数据丢失_tcp协议;websocket协议;同源策略和跨域
  9. 让 AI 为你写代码 - 体验 Github Copilot
  10. RabbitMQ 最新版安装 (Linux环境)
  11. python进度条 pyqt_pyqt中的进度条没有正确更新以读取fi
  12. 不写代码不用Excel,销售总监的数据分析,10分钟你就可以学会
  13. 第三:启发式搜索:A* 算法
  14. 聚类算法-k均值聚类(K-means)
  15. 锂电池电量百分比计算_锂电池容量计算的方法
  16. 知其然更要知其所以然
  17. 如何下载网页上的的FLASH
  18. jQuery第5章上机练习3(使用jQuery变换网页效果)
  19. 阮一峰访谈问题有奖征集(图灵访谈)
  20. 5个超好用的自媒体网站,免费用

热门文章

  1. 化装晚会(costume)暴力题解
  2. 在APPLE从创建ID到申请发布AppStore账户(五)登记前D-U-N-S® 编号申请
  3. 金升阳率先推出无电解电容AC-DC电源模块LNxx-12Bxx技术手册
  4. 多人在线网络游戏的同步算法一 基础篇
  5. 【Java面试题】《尚硅谷Java大厂面试题第2季,面试必刷,跳槽大厂神器》学习笔记
  6. lightgb原理_污染治理设施监管平台原理,智慧安全用电订制
  7. Qt编写物联网管理平台1-项目框架
  8. stm32/gd32电动车控制器资料
  9. python 欧氏距离_计算Python Numpy向量之间的欧氏距离实例
  10. 微信小程序左侧竖形滑动菜单(淘宝京东)