作者:bluedavy

来源:HelloJava

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、排查问题、服务治理等诉求,服务化现在基本成为了大部分业务系统的核心架构思想,它解决了超百人规模的研发团队协作效率问题、以及单体系统的水平伸缩问题。

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

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

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

可以依靠强大的云厂商的基础技术团队(当然,这个框架一定不能是lock-in某家云厂商的,并且要能非常容易就切换,这个只要框架强大,就可以倒逼各云厂商支持事实标准)。

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年都不一定能碰到一次,所以这也同样意味着这是个巨大的机会,几年后再来看看这篇文章,这个市场是谁家的,一定会很有意思。

结合Serverless、还有之前各种的软件架构发展来看,其实软件架构的发展很多时候都在围绕着研发门槛和效率(最典型的就是各种基础技术产品:TensorFlow等等,让业务研发更聚焦业务逻辑),并推进形成更大规模的社会协作和分工,所以很多的技术创新如果能围绕好这个本质问题,是一定能推进软件架构发展的。

References

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

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

延伸阅读

1

长按二维码
了解及购买

《深入浅出Serverless技术原理与应用实践》

作者:陈耿

微软全球黑带技术专家撰写。详细介绍Serverless 技术原理、应用架构,以及容器、微服务、PaaS、FaaS等与之相关的技术主题;

深入讲解公有云和私有云下的各种主流Serverless平台、架构和工具的原理和使用细节,如AWS Lambda、Azure Functions、OpenWhisk、Kubeless、Fission及OpenFaaS等。

2

长按二维码
了解及购买

《Serverless架构》

作者:卡格特·古尔图克

译者:周翀 栾云杰 姜明魁

本书由eBay资深软件工程师撰写,全面、系统阐述无服务器架构设计的基础知识、实用技术及实践,是快速掌握无服务器架构的入门指南。通过本书,你不仅可以学到AWSLambda功能,还可以看到如何通过Lambda函数将其他AWS服务粘合在一起。你将通过CRUD应用的例子,学到如何轻松构建可扩展的软件系统。

3

长按二维码
了解及购买

《Service Mesh实战:基于Linkerd和Kubernetes的微服务实践》

作者:杨章显

作者是思科的高级工程师,是国内Service Mesh领域的早期实践者,是的架构师和微服务技术专家。  详细讲解Linkerd的配置、部署、管理、运维和监控,以及它的工作原理,对理解其他Service Mesh产品也有帮助。

你与世界

只差一个

公众号

Serverless:云时代的软件架构核心思想相关推荐

  1. Serverless 是云时代软件架构的未来么?

    © Ross Findon 本文来源「Hello Java」,原文标题<Serverless:云时代的软件架构核心思想>. Serverless绝对是这两三年来业界最火的词(UC Berk ...

  2. 当飞猪遇上 Serverless | 云原生 Talk

    来源 | 阿里巴巴中间件 责编 | 晋兆雨 头图 | CSDN付费下载于视觉中国 前言 2019 年 3 月,我们跟随着集团的步伐,将 Serverless FaaS 引入到飞猪,并取得了一定的阶段性 ...

  3. 热度3年猛增20倍,Serverless云开发的技术架构全解析

    『 作为一个不断发展的新兴技术, Serverless 热度的制高点已然到来.』 或许,Google Trends 所显示的 3 年猛增 20 倍的" Serverless " 搜 ...

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

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

  5. (文中有惊喜)走进云时代的数据库

    数据技术嘉年华等你来 云时代的数据库 最近几年,随着云计算相关技术的发展,各种不同类型的云层出不穷,服务越来越多不同类型的企业业务,传统企业也渐渐开始探索上云的道路.在云上,作为业务最核心的数据库,相 ...

  6. 未来已来——云应用引擎CAE开启应用Serverless新时代

    云计算的未来,微服务的下一跳 十余年前,UC Berkeley 的一篇<Above the Clouds: A Berkeley View of Cloud Computing>一声炮响, ...

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

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

  8. 技术沙龙 | 云时代下的架构演进—企业云及云原生技术落地实践

    云改变了IT行业的形态和市场格局,催生了应用的发展.随着云计算技术的不断演进,作为一名优秀的架构师,必须深入了解云计算平台的特点及架构设计,包括构建数据库.大规模落地微服务.Service Mesh和 ...

  9. 云架构的一些核心概念

    云架构的一些核心概念 1. What 1.1 什么是云架构? 1.2 云原生 1.3 微服务 1.3.1 微服务中核心概念 1.4 DevOps 1.5 容器云 1.5.1 Kurbernates 概 ...

最新文章

  1. 国外厂商在行业客户上输单的原因
  2. Java注释@interface的用法
  3. 后端开挂:3行代码 = 8个接口
  4. 【Linux网络编程】组播
  5. Angular应用的部署方式
  6. ASP.NET读取(导入)CSV文件[献给菜鸟的我们]
  7. 【从零开始搭建自己的.NET Core Api框架】(二)搭建项目的整体架构
  8. 信息学奥赛一本通(1136:密码翻译)
  9. layui 监听表单提交form.on(‘submit(sub)‘,function (){}) ajax请求失败问题
  10. 泰森怎么会输给道格拉斯_揭秘:泰森惨败给道格拉斯之后,为何不去打二番战复仇...
  11. Springboot毕设项目基于springboot的小区旧物交易系统的设计与实现j8o94java+VUE+Mybatis+Maven+Mysql+sprnig)
  12. 记录成功通过CSP接口获取Ukey的X509数字证书过程
  13. 百度文库复制文字(一个按钮,关闭JS功能即可,浏览器100%有效)2021年
  14. Android 文件管理器 文件缩略图标显示流程
  15. Excel 获取工龄公式
  16. python中randint是什么意思_python中random.randint和random.randrange的区别详解
  17. 二手图书交易网站-图书发布图书购买评价购物车-计算机毕业设计基于javaWebSSMspringboot框架idea开发工具asp.net和PHP
  18. python金融分析小知识(30)——比较常见的pd.set_option的使用
  19. Magic Mouse无法左右滑动
  20. 程序员面试题目:请实现一个函数,把字符串中的每个空格替换成20。

热门文章

  1. 基于 Amazon Amplify 构建自己的首个 iOS 应用程序(二)
  2. jQuery弹幕插件
  3. 英国主要跨境电商平台简单介绍
  4. 操作系统的发展历程及linux的发展
  5. [AGC048D]Pocky Game
  6. 小米10s开启录屏方法详细介绍
  7. 剑灵万事屋服务器维护,《阴阳师》手游4月22日维护更新公告
  8. 深度学习图像分类:植物幼苗图像分类入门(Plant Seedlings Classification)
  9. 工作纪实_17-正则表达式收藏
  10. ec12编码器电路图_光电编码器电路图.DOC