简述电子商务网站建设的主要步骤,静海商城网站建设,营销网站案例什么意思,网站建设每月工作多少随着时间的推移#xff0c;Serverless 架构变得越来越火热#xff0c;凭借着极致弹性、按量付费、低成本运维等特性#xff0c;在很多领域发挥着越来越重要的作用#xff1b;机器学习领域在近些年也非常火热#xff0c;并在越来越多的行业中得到应用。
实际上#xff0c…随着时间的推移Serverless 架构变得越来越火热凭借着极致弹性、按量付费、低成本运维等特性在很多领域发挥着越来越重要的作用机器学习领域在近些年也非常火热并在越来越多的行业中得到应用。
实际上机器学习项目中一直存在两大难题
资源占用率高、利用率低尤其在流量波峰和波谷差值较大的项目中资源浪费更为显著部署、更新、维护复杂度高
而 Serverless 具有极致弹性、按量付费、低成本运维等特性若将 Serverless 架构应用在机器学习项目中在保证机器学习项目性能的同时降低成本又能提高资源利用率是非常值得研究和探索的课题。
前言
本书是一本关于 Serverless 架构下机器学习实战的技术书通过对 Serverless 架构的基础介绍、项目开发经验总结以及常见的机器学习算法、模型、框架的学习对将机器学习项目应用到 Serverless 架构、不同机器学习项目与 Serverless 架构结合以及基于 Serverless 架构进行机器学习应用开发等内容进行了探索。
我们希望通过简单明了的语言、真实的案例以及开放的源代码为读者介绍 Serverless 架构与机器学习相关的基础知识。希望读者可以通过本书真正理解 Serverless 架构与机器学习结合的重要价值并能顺利在 Serverless 架构下开发、上线机器学习项目从而更加直接地获得云计算带来的技术红利。 本书不仅有基础理论知识还有大量的经验分享以及对最新技术点的实践应用包括但不限于 Serverless 架构下 GPU 实例的上手、多维度的冷启动优化方案、Serverless 架构多模调试能力等。
我们希望读者通过对本书的学习可以对 Serverless 架构有一个更加全面、直观的了解对 Serverless 架构下的机器学习有更加深入的认识。同时希望通过本书的抛砖引玉帮助读者将机器学习项目在 Serverless 架构下落地获得云计算发展的技术红利。
初识 Serverless 架构
本章通过对 Serverless 架构概念的探索对 Serverless 架构的优势与价值、挑战与困境进行分析以及 Serverless 架构应用场景的分享为读者介绍 Serverless 架构的基础内容。通过本章的学习读者将对 Serverless 架构的理论基础有一定的了解和认识。
Serverless 架构的概念
随着云服务的发展计算资源被高度抽象化从物理机到云服务器再到容器服务计算资源逐渐细腻化。
2012 年http://Iron.io 的副总裁 Ken Form 在 “Why The Future of Software and Apps is Serverless” 一文中首次提出了无服务器的概念并指出 “即使云计算已经逐渐兴起但是大家仍然在围绕着服务器转。不过这不会持续太久云应用正在朝着无服务器方向发展这将对应用程序的创建和分发产生重大影响”。
2019 年UC Berkeley 发表论文 “Cloud Programming Simplified: A Berkeley View on Serverless Computing”。在文章中作者犀利断言 “新的 BaaS 存储服务会被发明以扩展在 Serverless 计算上能够运行更加适配的应用程序类型。这样的存储能够与本地块存储的性能相匹配而且具有临时和持久可供选择特性。基于 Serverless 计算的价格将低于 ServerFul 计算至少不会高于 ServerFul 计算。Serverless 计算一旦取得技术上的突破将会导致 ServerFul 服务的下滑。Serverless 将会成为云时代默认的计算范式将会取代 ServerFul 计算这也意味着服务器—客户端模式的终结”。
Serverless 架构从 2012 年首次走进大众视野到 2019 年成为 UC Berkeley 对云计算领域犀利断言的主角完成了从一个 “新的观点” 向 “万众瞩目的架构” 转身。在这 7 年时间里Serverless 架构从鲜为人知到被商业化应用再到头部云厂商纷纷布局 Serverless 架构作为云计算战略逐渐成为人尽皆知的新技术范式。
当然在这 7 年间Serverless 不仅仅在技术架构方面逐渐升级和完善概念也越来越明确发展方向也逐渐清晰、明朗。关于 Serverless 的定义Martin Fowler 在 “Serverless Architectures” 一文中指出 Serverless 实际上是 BaaS 与 FaaS 的组合。
这个简单明了的定义为 Serverless 架构组成结构奠定了基础。如图 1-1 所示Martin Fowler 认为在 Serverless 架构中应用的一部分服务器端逻辑依然由开发者完成但是和传统架构不同它运行在一个无状态的计算容器中由事件驱动、生命周期很短甚至只有一次调用、完全由第三方管理这种情况被称为 Functions as a ServiceFaaS。
除此之外Serverless 架构还要有部分依赖第三方云端应用或服务来管理服务器端逻辑和状态的应用这些应用通常是富客户端应用单页应用或者移动端 App建立在云服务生态之上包括数据库Parse、Firebase、账号系统Auth0、AWS Cognito等而这些服务最早被称为 Backend as a ServiceBaaS。 1-1 Serverless 架构组成结构
同样认为 Serverless 是 FaaS 与 BaaS 结合而成的 CNCF 在 CNCF WG-Serverless Whitepaper v1.0 中对 Serverless 架构的定义进行了进一步完善Serverless 是指构建和运行不需要服务器管理的应用程序概念它描述了一种更细粒度的部署模型其中将应用程序打包为一个或多个功能模块上传到平台然后被执行、扩展和计费以响应当时确切的需求。
与此同时2019 年 UC Berkeley 的文章 “Cloud Programming Simplified: A Berkeley View on Serverless Computing” 中同样从 Serverless 架构特性角度对什么是 Serverless 进行了补充描述和定义简单地说Serverless FaaS BaaS必须具备弹性伸缩和按量付费的特点。
在中国信息通信研究院以下简称“信通院”云原生产业联盟所发布的《云原生发展白皮书2020 年》中对 Serverless 的概念也有相关的描述无服务器即 Serverless是一种架构理念其核心思想是将提供服务资源的基础设施抽象成各种服务以 API 接口的方式供给用户按需调用真正做到按需伸缩、按使用收费。
这种架构体系消除了对传统的海量持续在线服务器组件的需求降低了开发和运维的复杂度降低运营成本并缩短了业务系统的交付周期使得用户能够专注在价值密度更高的业务逻辑开发上。
至此Serverless 架构从结构、行为以及特性方面的定义可以总结为图 1-2。 1-2 从不同角度对 Serverless 架构进行定义
Serverless 架构的特点
众所周知事物具有两面性。时至今日云计算的发展已经取得了巨大的进步但是作为云计算最新产物的 Serverless 架构在巨大的优势背后仍然面临着不可忽略的挑战。
优势与价值
亚马逊 AWS 首席云计算技术顾问费良宏曾说今天大多数公司在开发应用程序并将其部署在服务器时无论选择公有云还是私有的数据中心都需要提前了解究竟需要多少台服务器、多大容量的存储和数据库的功能等并需要部署、运行应用程序和依赖的软件到基础设施之上。
假设不想在这些细节上花费精力是否有一种简单的架构能够满足这种需求时至今日伴随 Serverless 架构逐渐 “走进寻常百姓家”答案已经很明显了。
在项目上线过程中我们一般需要申请主机资源这时候需花很多时间和精力去评估峰值最大开销即使给某些服务按照最大消耗申请资源也要有专人在不同时间段进行资源的扩容或缩容以达到保障业务稳定与节约成本的平衡。
对于一些服务来说有时候申请的资源还需要在最大开销基础上评估即使可能出现很多流量波谷并产生大量的资源浪费也不得不这样做比如数据库这种很难扩展的应用就是 “尽管浪费资源也比峰值到来时应用程序因为资源不足而无法服务好”。
正如费良宏所说在 Serverless 架构下这个问题得到了比较好的解决不用计划到底需要使用多少资源而是根据实际需要来请求资源根据使用时间来付费根据每次申请的计算资源来付费且让计费的粒度更小更有利于降低资源的开销。
Serverless 架构具有 6 个潜在优势
按需提供无限计算资源。消除云用户的前期承诺。根据需要在短期内支付使用计算资源的能力。大规模降低成本。通过资源虚拟化简化操作并提高利用率。通过复用来自不同组织的工作负载来提高硬件利用率。
相对于传统架构Serverless 架构确实具备业务聚焦、弹性伸缩、按量付费等优势。这些优势往往是开发者在技术选型时的重要参考。
1. 业务聚焦
所谓的业务聚焦指的是让开发者将更多精力放在自身的业务逻辑之上而不需要再花费更多精力关注底层资源。
众所周知单体架构时代应用比较简单物理服务器的资源足以支撑业务的部署。随着业务的复杂程度飙升功能模块复杂且庞大单体架构严重阻塞了开发部署的效率。于是业务功能解耦可并行开发和部署单独模块的微服务架构逐渐流行开来。业务的精细化管理不可避免地推动着基础资源利用率的提升。
如图 1-3 所示虚拟化技术不断被完善和广泛运用之后打通了物理资源隔阂减轻了用户管理基础架构的负担。容器和 PaaS 平台则进一步抽象提供了应用的依赖服务、运行环境和底层所需的计算资源。这使得应用的开发、部署和运维的整体效率再度提升。Serverless 架构则将计算抽象得更加彻底将应用架构堆栈中的各类资源的管理全部委托给平台免去基础设施的运维使用户能够聚焦高价值的业务领域。 1-3 虚拟机、容器、Serverless 架构演进简图
2. 弹性伸缩
所谓的弹性伸缩指的是可以根据业务流量波动自动进行资源的分配和销毁以最大限度地实现平衡稳定、高性能以及提高资源利用率。
众所周知从 IaaS 到 PaaS 再到 SaaS 的过程中去服务器化越来越明显。到了Serverless架构去服务器化已经上升到一个新的高度。相对于 ServerFul 而言Serverless 对业务用户强调的是 Noserve r的心智。
所谓的 Noserver不是说脱离了服务器或者说不需要服务器而是去除有关对服务器运行状态的关心和担心这也就意味着原先需要对服务器进行扩容和缩容的操作也都不再需要业务人员关注了都交给云商场进行管理。如图 1-4所 示折线为一个网站在某天的流量走势。 1-4 传统云主机架构与Serverless架构弹性模式下流量与负载对比示意图
图 1-4a 的分析如下
技术人员需要对网站资源用量进行评估评估结果是这个网站最大的流量峰值为 800PV/小时所以购买了对应的云服务器。但是在当天的 10 时运维人员发现网站流量突然增加逐渐临近 800PV/小时。此时运维人员在线上购买了一台新的云主机并进行了环境的配置最后在 Master 机器上添加了对应的策略度过了 1015 时的流量峰值。过了 15 时运维人员发现流量恢复正常对后加入策略的云主机进行停止并将额外的资源释放。到了 18 时再次发现过载流量的到来……
从图 1-4b 可以清晰地看到负载能力始终和流量是匹配的当然这个图本身存在一定问题即真实的负载能力在一定程度上可能略高于当前流量即并不需要像传统云主机架构那样在技术人员的干预下应对流量的波峰和波谷其弹性能力包括扩容和缩容均由云厂商提供。
通过对图 1-4 的分析不难看出Serverless 架构所具备的弹性能力在一定程度上来源于厂商的运维技术支持。
Serverless 架构所主张的 “把更专业的事情交给更专业的人让开发者更加专注自身的业务逻辑即可”在弹性模式上也是一个非常直观的体现。
3. 按量付费
所谓的按量付费指的是 Serverless 架构支持用户按照实际的资源使用量进行付费可以最大限度提高用户侧资源使用效率降低成本。
在传统云主机架构下服务器一旦被购买和运行就在持续消耗资源并且持续产生费用。尽管每台服务器的可用资源是有限的通常也是固定的但是服务器每时每刻的负载是不同的资源使用率也是不同的这就导致传统云主机架构下会比较明显地产生一定的资源浪费。
一般情况下白天资源利用率相对较高资源浪费少一些夜间资源利用率较低资源浪费会相对高一些。按照《福布斯》杂志的统计商业和企业数据中心的典型服务器仅提供 5%15% 平均最大处理能力的输出这无疑证明了刚刚对传统云主机架构的资源使用率和浪费程度分析的正确性。
Serverless 架构则可以让用户委托服务提供商管理服务器、数据库和应用程序甚至逻辑。这种做法一方面减少了用户自己维护的麻烦另一方面用户可以根据自己实际使用的粒度进行成本的支付。
对于服务商而言它们可以将更多的闲置资源进行处理。这从成本、“绿色” 计算角度来说都是非常不错的。 1-5 传统云主机架构与 Serverless 架构弹性模式下流量与费用支出对比示意图
如图 1-5 所示折线为一个网站在某天的流量走势图。
图 1-5a 是传统云主机架构下流量与费用支出示意图。通常业务在上线之前是需要进行资源使用量评估的。工作人员在对该网站的资源使用量评估之后购买了一台可以承受每小时最大 1300PV 的服务器。
在一整天内这台服务器所提供的算力总量为阴影面积所需要支出的费用也是阴影面积对应算力的费用。但是很明显可以看出真正有效的资源使用与费用支出仅仅是流量曲线下的面积而流量曲线上方的阴影部分则为资源损耗与额外的支出部分。
图 1-5b 是 Serverless 架构弹性模式下费用支出示意图。可以清晰地看到费用支出和流量基本是正比关系即当流量处于一个较低数值时对应的资源使用量是相对较少的对应的费用支出也是相对较少的当流量处于一个较高数值时资源使用量和费用支出为正相关增长。
在整个过程中可以清晰地看出 Serverless 架构并未像传统云主机架构样产生明显的资源浪费与额外的成本支出。
通过对图 1-5 的分析不难看出 Serverless 架构所具备的弹性伸缩能力与按量付费模型进行有机结合可以最大限度地避免资源浪费、降低业务成本。
4. 其他优势
除前面所说的业务聚焦、弹性伸缩、按量付费等优势Serverless 架构还具备其他优势
缩短业务创新周期由于 Serverless 架构在一定程度上是 “云厂商努力做更多让开发者更关注自身的业务” 的模式因此我们可以认为开发者将会付出更少的时间、精力在 ServerFul 架构所需要关注的 OS 层面、云主机层面、系统环境层面更专注自身的业务逻辑这带来的直接效果就是提高项目的上线效率、降低业务的创新周期、提高研发交付速度。系统安全性更高虽然 Serverless 架构在一定程度上有一种 “黑盒” 即视感但正因为如此Serverless 架构往往不会提供登录实例的功能也不会对外暴露系统的细节。同时操作系统等层面的维护也都交给云厂商这意味着在一定程度上 Serverless 架构是更加安全的一方面表现在 Serverless 架构只对外暴露预定的且需要暴露的服务和接口相对云主机在一定程度上免去了被暴力破解的风险另一方面表现在云厂商有 更加专业的安全团队和服务器运维团队来帮助开发者保障整体的业务安全与服务稳定。更平稳的业务变更Serverless 架构是由云服务商提供的一种天然分布式架构同时又因为 Noserver 的特性免除了开发者对服务器运行状态的关心和担心所以在 Serverless 架构下开发者对业务代码、配置的变更操作非常简单只需要通过云厂商所提供的工具进行更改即可待新的业务逻辑平稳生效后则不再需要开发者关注。所以Serverless 架构在业务的平滑升级、变更、敏捷开发、功能迭代、灰度发布等多个层面有着极大的优势。
当然即使上面已经举例说明了很多 Serverless 架构的优势我们仍然没办法枚举出其全部的优势和价值。但不可否认的是Serverless 架构正在被更多人关注也正在被更多团队和个人所接受和应用其价值已快速突显出来。
原文链接
本文为阿里云原创内容未经允许不得转载。