概念

Serverless 圈内俗称为“无服务器架构”,它是一种软件系统架构思想和方法,它的核心思想是用户无须关注支撑应用服务运行的底层主机。

所谓“无服务器”,并不是说基于 Serverless 架构的软件应用不需要服务器就可以运行,其指的是用户无须关心软件应用运行涉及的底层服务器的状态、资源(比如 CPU、内存、磁盘及网络)及数量。软件应用正常运行所需要的计算资源由底层的云计算平台动态提供。

演化

基础架构即服务(Infrastructure as a Service, IaaS)

容器即服务(Container as a Service,CaaS)

平台即服务(Platform as a Service,PaaS)

软件即服务(Software as a Service,SaaS)

函数即服务(Function as a Service,FaaS)+ 后台即服务(Backend as a Service,BaaS)

Serverless 无服务化

业务开发的本质是交付服务和功能——七念。

业界进展

Top Growing Cloud Services

Place

Service

Growth Rate

2017 Use

2018 Use

#1

Serverless

75%

12%

21%

#2

Container-as-a-service

38%

14%

19%

#3

DBaaS SQL

26%

35%

44%

#4

DBaaS NoSQL

22%

23%

28%

大公司

  • AWS Lambda,最早被大众所认可的 Serverless 实现。
  • Function Compute,阿里云自研的Serverless平台
  • Azure Functions,来自微软公有云的 Serverless 实现。
  • OpenWhisk,Apache 社区的开源 Serverless 框架。
  • Kubeless,基于 Kubernetes 架构实现的开源 Serverless 框架。
  • Fission,Platform9 推出的开源 Serverless 框架。
  • OpenFaaS,以容器技术为核心的开源 Serverless 框架。
  • Fn,来自 Oracle 的开源 Serverless 框架,由原 Iron Functions 团队开发。

必要性

诉求

  • API
  • 调试
  • 监控
  • 排查
  • 性能优化
  • 数据源合并:接口合并与数据补全
  • 数据协议转换
  • 中间层:平台间对接差异性磨平
  • 数据透传:端侧脏逻辑下沉

成本

  • 服务器成本

    • 部署策略(多机房)
    • 部署模型(流量均衡)
    • 机器、带宽等成本
  • 运维成本

    • 缩扩容(估不准)
    • 治理成本
      • 机房搬迁
      • OS、基础镜像升级
      • 框架升级
      • 中间件、依赖成绩
  • 人力成本
  • 机会成本
  • ……

服务器成本

现状

68%的应用qpm<50

阿里Node.js应用1600+,BFF应用占约70%,常年水位在10%以下

预期降低成本

按照网上 Serverless 的降低成本率能达到 90% 以上,不过导购业务比较特殊,流量比较大,不像那些需要弹性的应用,根据测算,单进程下函数的性能非常不错,但是由于大促要提前预留一些资源,整体机器成本只降低到了平时的 70%,而在非大促期间,不需要预留这些资源,就能更低,降到 40% 以下。

人力成本&机会成本

技术特点

按需加载

在 Serverless 架构下,应用的加载(load)和卸载(unload)由 Serverless 云计算平台控制。这意味着应用不总是一直在线的。只有当有请求到达或者有事件发生时才会被部署和启动。当应用空闲至一定时长时,应用会到达或者有事件发生时才会被部署和启动。当应用空闲至一定时长时,应用会被自动停止和卸载。因此应用并不会持续在线,不会持续占用计算资源。

事件驱动

Serverless 架构的应用并不总是一直在线,而是按需加载执行。应用的加载和执行由事件驱动,比如HTTP请求到达、消息队列接收到新的信息或存储服务的文件被修改了等。通过将不同事件来源(Event Source)的事件(Event)与特定的函数进行关联,实现对不同事件采取不同的反应动作,这样可以非常容易地实现事件驱动(Event Driven)架构。

状态非本地持久化

云计算平台自动控制应用实例的加载和卸载,且应用和服务器完全解耦,应用不再与特定的服务器关联。因此应用的状态不能,也不会保存在其运行的服务器之上,不能做到传统意义上的状态本地持久化。

非会话保持

应用不再与特定的服务器关联。每次处理请求的应用实例可能是相同服务器上的应用实例,也可能是新生成的服务器上的应用实例。因此,用户无法保证同一客户端的两次请求由同一个服务器上的同一个应用实例来处理。也就是说,无法做到传统意义上的会话保持(Sticky Session)。因此,Serverless架构更适合无状态的应用。

自动弹性伸缩

Serverless 应用原生可以支持高可用,可以应对突发的高访问量。应用实例数量根据实际的访问量由云计算平台进行弹性的自动扩展或收缩,云计算平台动态地保证有足够的计算资源和足够数量的应用实例对请求进行处理。

应用函数化

每一个调用完成一个业务动作,应用会被分解成多个细颗粒度的操作。由于状态无法本地持久化,这些细颗粒度的操作是无状态的,类似于传统编程里无状态的函数。Serverless 架构下的应用会被函数化,但不能说 Serverless 就是 Function as a Service(FaaS)。Serverless 涵盖了 FaaS 的一些特性,可以说 FaaS 是 Serverless 架构实现的一个重要手段。

隔离/沙箱

每个应用都在一个独立的沙箱中运行,应用的运行状态不会影响其他应用。

局限性

控制力

Serverless 的一个突出优点是用户无须关注底层的计算资源,但是这个优点的反面是用户对底层的计算资源没有控制力。对于一些希望掌控底层计算资源的应用场景,Serverless 架构并不是最合适的选择。

可移植性

Serverless 应用的实现在很大程度上依赖于 Serverless 平台及该平台上的 FaaS 和 BaaS 服务。不同IT厂商的 Serverless 平台和解决方案的具体实现并不相同。而且,目前 Serverless 领域尚没有形成有关的行业标准,这意味着用户将一个平台上的 Serverless 应用移植到另一个平台时所需要付出的成本会比较高。较低的可移植性将造成厂商锁定(Vendor Lock-in)。这对希望发展 Serverless 技术,但是又不希望过度依赖特定供应商的企业而言是一个挑战。

管理

FaaS函数过于分散,不易进行管理,随着应用越来越多,这个现象会越来越严重。

并且不利于集成测试

安全性

在 Serverless 架构下,用户不能直接控制应用实际所运行的主机。不同用户的应用,或者同一用户的不同应用在运行时可能共用底层的主机资源。对于一些安全性要求较高的应用,这将带来潜在的安全风险。

性能

当一个 Serverless 应用长时间空闲时将会被从主机上卸载。当请求再次到达时,平台需要重新加载应用。应用的首次加载及重新加载的过程将产生一定的延时。对于一些对延时敏感的应用,需要通过预先加载或延长空闲超时时间等手段进行处理。(尤其是深度学习算法相关的初始化过程)

执行时长

Serverless 的一个重要特点是应用按需加载执行,而不是长时间持续部署在主机上。目前,大部分 Serverless 平台对 FaaS 函数的执行时长存在限制。因此 Serverless 应用更适合一些执行时长较短的作业。

技术成熟度

虽然 Serverless 技术的发展很快,但是毕竟它还是一门起步时间不长的新兴技术。因此,目前 Serverless 相关平台、工具和框架还处在一个不断变化和演进的阶段,开发和调试的用户体验还需要进一步提升。Serverless 相关的文档和资料相对比较少,深入了解 Serverless 架构的架构师、开发人员和运维人员也相对较少。

难点

监控

监控应用的运行状态,调用次数、运行时长、占用资源等

调度

动态伸缩

冷启动

Serverless探秘相关推荐

  1. 火出边际的Serverless,你居然还不了解?

    摘要:图灵奖获得者David A. Patterson和Spark共同创始人Ion Stoica,在19年伯克利的会议上发布Serverless将是下一代默认的计算范式. 本文分享自华为云社区< ...

  2. 3月18日云栖精选夜读 | 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!...

    [点击订阅云栖夜读周刊] 开发者分会场致力于帮助开发者学习了解阿里云最新技术,为开发者设计全方位的技术成长与进阶之路. 热点热议 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起! 作者 ...

  3. 3月18日云栖精选夜读 | 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起!... 1

    [点击订阅云栖夜读周刊] 开发者分会场致力于帮助开发者学习了解阿里云最新技术,为开发者设计全方位的技术成长与进阶之路. 热点热议 开发者必看!探秘阿里云Hi购季开发者分会场:海量学习资源0元起! 作者 ...

  4. 一键部署dns服务_OpenShift : 通往云原生、DevOps、微服务和Serverless的大门

    新书速递 查尔斯·狄更斯的<双城记>中有句耳熟能详的名言:"这是一个最好的时代,也是一个最坏的时代."作为技术从业者,在这个数字化浪潮和技术变革接连发生的时代,我对这句 ...

  5. 二:serverless网站数据库操作

    操作数据库API文档 第一篇,搭建一套免费的serverless网站 一,创建集合,进入控制台 登录腾讯云后台 打开云开发控制台 可以新建集合,新建集合后点击集合名称即可批量导入导出数据库集合的数据, ...

  6. 一:搭建一套免费的serverless网站

    因为公司需求,需要快速搭建一个公司内部能够访问的资源查看管理的 PC网站,因为没有服务器,没有后端开发,又要快速上线使用,那么 serverless 就成了我的首选方案,下面从零开始搭建. 步骤一. ...

  7. 现在,Serverless 真的已经成熟了吗?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者 | Justin Etheredge 策划 | Ti ...

  8. 图解 Serverless!秒懂!

    作者 | 江昱(阿里云 Serverless 产品经理) 抛砖引玉:从云计算到 Serverless 2009 年,UC Berkeley发表了:Above the Clouds: A Berkele ...

  9. Serverless 下的微服务实践

    作者 | 弈川 微服务架构介绍 微服务架构诞生背景 在互联网早期即 Web 1.0 的时代,当时流行的是单体应用,研发团队比较小,主要是外部网页,然后新闻门户等:到了新世纪的互联网时期 Web 2.0 ...

最新文章

  1. leetcode-225 队列实现栈
  2. python-sendcmd主动模式访问ftp——修改port中IP地址信息
  3. Django源码分析9:model.py表结构的初始化概述
  4. 原生、无依赖的web弹层组件——HLayer.js
  5. elasticsearch 第二篇(配置篇)
  6. [Lua]弱引用table
  7. 开源项目托管GitHub简单使用
  8. c语言在win8系统不兼容,Win8系统中存在不兼容软件怎么办?
  9. 服务器装系统用哪个好,服务器系统重装用哪个系统
  10. 计算机专业买win,新买的电脑是win10系统,有的人却费尽心思重装成win7,为什么呢...
  11. CSS3 弹性盒子模型
  12. 实现2个整形变量的交换
  13. zend studio mysql 配置_php 在Zend Framework中配置数据库参数
  14. 协程是什么?怎么来的?它有什么作用?
  15. C++编程实现单链表的逆置
  16. BZOJ 2763[JLOI2011]飞行路线 - 最短路
  17. 微服务学习之Gateway服务网关【Hoxton.SR1版】
  18. Winform开发框架的重要特性总结
  19. 怎样用matlab画斜条纹图案,CorelDRAW制作简单的均匀倾斜条纹
  20. 数理逻辑习题集(9)

热门文章

  1. 基于hibernate和struts的网上书店系统的设计与实现
  2. Linux设置固定IP连接wifi
  3. 音乐特斯拉初步测试: 系列短片脚本
  4. python如何赚外快 淘宝_业余时间怎么赚外快?用Python赚钱的5个方法!
  5. PHP截取特定字符前面或后面的内容
  6. 股票交易就是在走台阶
  7. FFplay源码分析-音视频同步1
  8. Linux C/C++ 崩溃诊断大师:解锁软件问题定位与修复的秘密武器
  9. word自带符号的字符代码
  10. 尝试搭建webgl游戏引擎-起头