前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >开发运维配置繁杂,是时候给应用架构做减法了

开发运维配置繁杂,是时候给应用架构做减法了

作者头像
深度学习与Python
发布于 2020-09-04 06:35:18
发布于 2020-09-04 06:35:18
1.2K0
举报

“Less is more”是路德维希·密斯·凡德罗在建筑领域提出的观点,近些年来,这一观点不断被用于生活中的其他领域。在软件开发世界中,也有对“Less is more”这一观点的架构理念,这就是如今逐渐盛行的“Serverless 架构”。

十多年前,主流的应用架构都是单体应用,当时的开发者们既要关注所需的计算、存储资源,还要关注最底层的服务器等资源,同时当企业业务规模开始激增,导致开发和运维难度更大。随着容器技术的衍生及应用,虽然用户可以从对基础服务器关注中抽离出来,但其投入的运维精力依然绕不开的是与业务相关的 CPU、内存、网络等资源。

如今在资源投入、架构理念、架构模式向越来越精简,越来越“物尽其用”的演进中,Serverless 可以说是“Less is more”的最佳实践。它让开发人员不再操心运行所需的资源,精简自己的开发流程,将关注点重点放在产品代码、业务逻辑上,同时只需为实际消耗的资源付费。它使得程序开发架构中只保留了重要的、有价值的资源;其余的资源要么从开发主体中精简剔除,要么隐藏在选择性可见的界面中,用户随用随取。

1 Serverless 是“速度”与“激情”的再现

Serverless 是随着云计算虚拟化的延伸发展历程演进而来的。有人说,未来将是 Serverless 的天下。那么,Serverless 究竟有哪些优势,使得它受到开发者们如此高的重视呢?

  • 节省维护成本,可实现自动伸缩

首先,Serverless 是一个基于云的服务,服务提供者帮助处理了服务器端的基础 IT 工作,比如把云部署从 x86 机器码(99% 的云计算机使用 x86 指令集)提升到了高级语言层面、管理操作系统、数据库版本升级等等。因而开发者们只要编写代码并部署它即可,不需要处理任何后端服务器的任务。

同时,相比于传统的非 Serverless 架构,这种架构模式带来的另一大优势是,开发者无需为过度配置或意外的负载峰值提前做好分配计划。因此,在企业级架构侧常常会遇到的服务伸缩性等问题,Serverless 也可以做到自动伸缩,或方便开发者对容量进行简单的手动设置。

  • 节省人工成本,复杂工作都可以交给机器

一方面,Serverless 有相对标准的编程环境,减少了对服务器和容器部署所耗费的操作成本。另一方面,在所有的应用程序架构中,Serverless 应用程序拥有的代码量最少,且恰当的 Serverless 架构在相互依赖性上较少。

对于开发者来说,这意味着更少的开发逻辑,用更少的代码来定义开发、测试、部署、运维。另外从应用程序角度来看,无服务器的功能基本上是一种外部服务,它不需要紧密集成到应用程序的容器生态系统中。

  • 缩短交付时间与周期,节省开发成本

随着产品及软件版本迭代周期的速度越来越快,一些云厂商在面向客户的咨询调研中发现,越来越多的客户已不满足于缩短开发与测试的周期,而是需要更短的交付周期——从新产品或功能的概念化到以 MVP 部署到生产环境的整个时间。

在应对该问题的解决方案上,Serverless 提供了巨大的作用。部分客户在使用该架构及应用程序后,能实现在几天时间内完成项目的部署。

总的来说,Serverless 可以称得上是当前各类新架构中“激情与速度”的再现——在降低人工成本、降低风险、降低基础设施成本、提高扩展性、缩短交付时间上,都形成了绝对的杠杆力。目前,Serverless 的适用场景非常广泛,或者说它或将成为大多数交付链中的一部分。

不过,必须要提的一点是,Serverless 所具备的优势并不等于它是万能的。很多开发者基于对 Serverless 优势的理解,容易陷入“它是容器替代方案”的认知误区。而实际上,Serverless 与容器针对的是不同的用户需求。

2 AWS Serverless 的基础技术革新之旅

1. Lambda 开启 Serverless 商业化进程

Serverless 商业化进程的真正开启,起源于 AWS 在 2014 正式推出的 AWS Lambda 计算服务。随后,各大巨头也都相继推出了相关服务,遂而将 Serverless 的市场竞争推向白热化,Serverless 是云服务商提供云服务能力的试金石,如何兑现向客户承诺的 Serverless 构建能力,需要云服务商的众多云服务能力作为支撑。

Lambda 的诞生,可以说是云计算技术的一次跃进式发展。正如上文所说,让开发者从对虚拟机、服务器机群容量、集群扩展这些细碎的关注点中抽离出来,Lambda 帮助其真正实现了按需执行、按需计费、按需自动弹性扩展和高可用能力。

值得一提的是,一些人更喜欢用缩写 FaaS(Function as a Service,函数即服务) 来描述 Lambda 这类技术,对于无服务器技术来说,FaaS 只是无服务器技术和架构中必须提供的众多能力中的一种。但 Lambda 是 FaaS 的典型代表,它允许用户仅仅上传代码而无需提供和管理服务器,由它负责代码的执行、高可用扩展,支持从别的 AWS 服务或其他 Web 应用直接调用等。

Lambda 能和大量的 AWS 服务进行整合。这里,我们将 AWS Lambda 放在若干个实际应用场景中,来向开发者们解释,基于它,能构建哪些内容,并如何和 AWS 的其他服务进行联动应用,加速开发。

  • 数据处理与操作

Lambda 和 AWS 服务非常适用于构建用于处理数据的事件驱动管道。开发者可以使用 AWS Lambda 执行代码以响应数据更改、系统状态变化或用户操作等触发器,AWS 中的 S3、Amazon DynamoDB、Kinesis、SNS 和 CloudWatch 等服务,都可以作为 Lambda 的直接触发“机关”。

在数据处理管道中,许多用户会遇到数据上传后需要得到立即处理的场景,例如需要将视频从一种格式转换成另一种格式,或者即时调整图像大小以匹配不同设备。Lambda 则可以实现实时创建缩略图、转换视频代码、聚合和筛选数据等,并且可以由 S3 或 Kinesis 触发。

一个模拟数据处理流中,Lambda 在各环节中的作用示意

  • 实时数据流处理

很多 AWS 用户会使用 Lambda 和 Kinesis 处理实时流数据,从而跟踪应用程序活动、处理事务处理顺序等。其中,Kinesis 服务可以对数据(如日志、系统事件、用户点击等)的摄入进行处理,Lambda 函数则可以对数据流中的新记录做出反应,并能快速处理、保存或丢弃数据。

Lambda 和 Kienesis 的组合很适合会产生大量需要被分析、汇总并存储数据的应用程序。在应用程序产生的大量数据中,Lambda 可以随负载自动扩展和缩减,月度处理数据点可达百亿级。

  • 后端

Lambda 还被用于构建无服务器后端,以处理 Web、移动、物联网(IoT)和第三方 API 请求。在很多客户场景中,可能会通过无服务器架构将前端直接连接到数据库,允许前端与服务进行安全通信,这里面只要通过 API Gateway,即可调用 Lambda 函数,Lambda 函数可以执行自定义任务并与其他服务通信。

2.Fargate 与 Firecracker 的诞生——Lambda 在“进化”

Lambda 所具备的丰富特性和应用场景的背景,让其成为一度流行于 FaaS 届的、可以称得上完美的方案。实际上,Lambda 当然也存在一些缺点与问题。例如迁移难度大、自动扩展性差、应用语言种类较少、计算规模受限、冷启动(函数未被运行一段时间后需要重新启动容器运行,而造成的函数调用被延迟)、不断膨胀的代码库维护等。

直至 2017 年年底的 AWS re:Invent 大会上,AWS 宣布针对容器的无服务器计算引擎推出 AWS Fargate,云计算技术尤其是 Serverless 架构和应用的演进,才算真正迎来了一次新的机遇点。

Fargate 不仅可以抽象出运行容器的服务器,还可以提供服务器编排的抽象,作为容器的免编排计算。

这也意味着,当 K8s 等容器编排工具的使用度越来越高,乃至成为开发中的一项“基础设施”时,开发者们可以将创建和管理容器的事情交给云服务商(Fargate)来处理,就好像今天的服务器虚拟化一般,容器也越来越“隐形”。

此外,相比于 Lambda 在自动伸缩、灵活定制资源等特征,Fargate 还可以通过与其他 AWS 服务(包括 Amazon CloudWatch Container Insights)的内置集成获得开箱即用的可观测性。Fargate 可以让开发者通过具有开放式界面的大量第三方工具来收集指标和日志,从而监控应用程序。

随后 2018 年的 AWS re:Invent 大会上,AWS 又开源了 Firecracker——AWS 容器安全沙箱的基础组件。它是 AWS 针对无服务器计算设计的虚拟化技术(利用 KVM 的新虚拟化技术,专门用于创建和管理多租户容器以及基于函数的服务)。目前,Firecracker 已为 Lambda 和 Fargate 在内的多个高容量 AWS 服务提供支持。Firecracker 诞生的内因,也是 Lambda 演进的结果。

从 Lambda 到 Fargate,再到 Firecracker,显示了 AWS 在 Serverless 架构等"基础服务"方面的革新能力。对于用户而言,这些服务的提供,正在让开发者逐步对其带来的安全、高性能、低开销等特性感知更加明显。

3 更多服务及工具,帮助开发者更高效地上手 Serverless

当然,除了 Lambda、Fargate 这类计算类服务外,AWS 可提供与之相关各个维度的一系列完全托管的服务。开发者可以使用这些托管服务构建和运行无服务器应用程序,从而解决一些特定问题。这里,我们列出了一份服务清单:

以上分类及工具清单来源于 AWS 官网( https://aws.amazon.com/cn/serverless/ )

有了 AWS 上述服务的支持,开发者无需为后端组件(如计算、数据库、存储、流处理、消息排队等)预置、维护和管理服务器。同时,应用程序的容错能力和可用性也可以变得更强。

此外,AWS 及合作伙伴生态系统也在开发者工具上提供了多样化使用组合,包括框架、软件开发工具包、IDE 插件和监控解决方案等。

例如框架层面,AWS 兼容了 AWS SAM(用简单方式定义 Lambda 函数、API、数据库以及事件源映射)、Apex、Chalice 等近十款 AWS 自研、开源或第三方的框架供开发者使用。持续集成和部署层面,AWS CodePipeline、AWS Serverless Application Model、AWS CodeBuild 等一系列工具可以帮助开发者自动化构建、测试和部署无服务器应用程序。监控及日志记录与诊断层面,也有 Amazon CloudWatch 和 AWS X-Ray 等辅助进行函数性能监控或故障排除。

归纳来看,无论是扩充提供不同的服务还是丰富的开发者工具,AWS 都是尽可能地帮助开发者在应用 Serverless 架构的过程中,降低其遇到不同场景下处理复杂问题的难度,从而让为“高效”而生的 Serverless 技术能更高效的让开发者上手,更高效的解决问题,从而带来更高效地用户体验。

最后要提的是,Serverless 是利用云的要素帮助用户实现价值交付的颠覆式创新。

因为用户价值交付涉及方法论、开发者工具、应用交付体系、商业模式设计等多个维度,所以 Serverless 是顶层设计的产物。它并不是任何企业在任何场景下都必须要“跟风”应用的时髦技术,毕竟它从真正诞生到至今应用,还只有短短 6 年而已。开发者们一定要选最合适,而非最流行的架构方式。

而一旦当你下定决心全面应用 Serverless,也一定要在这项新兴技术得到普及之前,学会借助实用的服务或工具来应对复杂问题,进而帮助你更快地创建高效、高性能的新架构及软件系统,让你的“酷想法”更快成真。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【玩转腾讯云】我的 Serverless 实战——引领云计算的下一个十年
以前很多开发者都是采用的单体架构,为了保证服务的稳定性,只需要维护一台服务器及数据库就可以啦,但是随着业务的增长会面临两个问题,如果流量比较大,这个服务器可能顶不住这么大的流量,其次硬件啥的损坏也会导致整个系统瘫痪。
孙叫兽
2021/05/09
7920
【玩转腾讯云】我的 Serverless 实战——引领云计算的下一个十年
看懂 Serverless,这一篇就够了
云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务,无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。
全栈程序员站长
2022/09/06
1.4K0
看懂 Serverless,这一篇就够了
通通透透看无服务器计算:由来、场景和问题
云计算涌现出很多改变传统IT架构和运维方式的新技术,比如虚拟机、容器、微服务,无论这些技术应用在哪些场景,降低成本、提升效率是云服务永恒的主题。过去十年来,我们已经把应用和环境中很多通用的部分变成了服务。Serverless的出现,带来了跨越式变革。Serverless把主机管理、操作系统管理、资源分配、扩容,甚至是应用逻辑的全部组件都外包出去,把它们看作某种形式的商品——厂商提供服务,我们掏钱购买。过去是“构建一个框架运行在一台服务器上,对多个事件进行响应”,Serverless则变为“构建或使用一个微服务或微功能来响应一个事件”,做到当访问时,调入相关资源开始运行,运行完成后,卸载所有开销,真正做到按需按次计费。这是云计算向纵深发展的一种自然而然的过程。 Serverless是一种构建和管理基于微服务架构的完整流程,允许你在服务部署级别而不是服务器部署级别来管理你的应用部署。它与传统架构的不同之处在于,完全由第三方管理,由事件触发,存在于无状态(Stateless)、暂存(可能只存在于一次调用的过程中)计算容器内。构建无服务器应用程序意味着开发者可以专注在产品代码上,而无须管理和操作云端或本地的服务器或运行时。Serverless真正做到了部署应用无需涉及基础设施的建设,自动构建、部署和启动服务。 国内外的各大云厂商 Amazon、微软、Google、IBM、阿里云、腾讯云、华为云相继推出Serverless产品,Serverless也从概念、愿景逐步走向落地,在各企业、公司应用开来。
孙杰
2019/10/29
1.9K0
通通透透看无服务器计算:由来、场景和问题
Serverless时代已经全面到来:冷启动时间降低90%,数据分析All on Serverless
作者 | Tina 亚马逊云科技已经将数据分析产品全面Serverless化,并拓展到全栈,率先完成了包括计算、存储、数据库、数据分析等领域服务的Serverless 化。 Serverless 已经不再是一个未来概念了。多年来,我们目睹了各种技术的兴起和普及。20 世纪 90 年代后期,Linux 受到了空前的关注,并最终成为业界领先的服务器操作系统。在 2000 年代初期,虚拟化提高了服务器利用率,为云计算铺平了道路。如今,Linux 和虚拟化作为云计算的基础已经无处不在。而现在,最热的技术话题都是围
深度学习与Python
2023/03/29
8920
Serverless时代已经全面到来:冷启动时间降低90%,数据分析All on Serverless
从aws lambda谈serverless
一、基于aws lambda构建监控告警的思考二、什么是serverless?三、serverless解决了什么问题四、常见serverless应用场景五、为什么serverless淡出视野?六、参考
叔牙
2023/06/21
3720
从aws lambda谈serverless
Serverless安全研究 — Serverless概述
在“云”的概念还没有产生之前,开发者购买物理机,并在其上部署应用程序,企业将购买的机器放置数据中心,其网络、安全配置均需要专业的技术人员管理,在这种高成本运营模式下,虚拟化技术应运而生。
绿盟科技研究通讯
2020/09/08
2.1K0
(译)无服务器架构
无服务器运算,或者简单说无服务器,是软件架构界的一个新热点。三大云——亚马逊、谷歌以及微软都在无服务器方面下了重注,我们会看到很多的书籍、开源项目、会议以及软件供应商,都不约而同的关注这一主题。但是什么是无服务器?是否值得重视?为什么值得重视?本文中我希望能在这一问题方面给读者一些启迪。
崔秀龙
2019/07/23
3.2K0
(译)无服务器架构
Serverless架构:用服务代替服务器
还记得在十多年前,SaaS鼻祖SalesForce喊出的口号『No Software』吗?SalesForce在这个口号声中开创了SaaS行业,并成为当今市值520亿美元的SaaS之王。今天谈谈『No Server』有关的事, 继OpenStack、Docker 、MiscroService、Unikernel、Kubernetes和Mesos之后,ServerLess正成为Google、AWS乃至创业公司暗战的新战场,它能否成为云计算领域的颠覆性趋势? 我相信大家也会存在一些疑问: Serverless到
yuanyi928
2018/04/02
3.7K0
Serverless架构:用服务代替服务器
无服务器架构的开源框架:OpenFaaS、Knative等等
作者:Ran Ribenzaft,Epsagon联合创始人兼首席技术官。最初发表在Epsagon博客上。
CNCF
2020/04/20
8.2K0
Serverless安全研究 — Serverless安全防护
通过上一篇《Serverless安全研究 — Serverless安全风险》,相信各位读者已经对Serverless的风险及威胁有了大致了解,本文为Serverless安全研究系列的安全防护篇,笔者将针对 上一篇文章中提到的风险及威胁提出相应的防护思路。
绿盟科技研究通讯
2020/12/30
3.8K0
Serverless安全研究 — Serverless安全防护
2024年无服务器计算与事件流状况报告
将事件流与无服务器计算相结合,常常能产生一个高效低成本的解决方案,用于处理流数据,极大地减少了基础设施管理和维护的复杂性。这种协同作用使开发人员能更专注于应用程序逻辑,而减少对基础操作问题的关注,从而加快开发速度。
云云众生s
2024/03/28
1730
备受云厂商们推崇的 Serverless,现在究竟发展到什么水平了?
作者 | 舒超 Serverless 是什么 根据 CNCF 的定义,Serverless 的概念是指构建和运行不需要服务器管理的应用程序。它描述了一种更细粒度的部署模型,在该模型中,应用程序被捆绑为一个或多个功能,被上传到一个平台,然后根据当前所需的确切需求执行、扩展和计费。所以首先需要明确的一点是,Serverless 并非指托管和运行我们的应用程序不再需要服务器,而是指从前耗费研发和运维人员无数精力和资源的 CI/CD、服务器配置维护更新、IT 资源容量的规划和伸缩等工作,被 Serverless
深度学习与Python
2023/03/29
1.1K0
备受云厂商们推崇的 Serverless,现在究竟发展到什么水平了?
应用技术架构 —— 无服务器架构
2012 年,iron.io 首次提出 Serverless 概念。2014 年,AWS 发布 Lambda 开启 Serverless 商业化时代,AWS Lambda,最早被大众所认可的 Serverless 实现。随后各大云厂商争相推出自己的 Serverless 服务、框架或工具。
腾讯云 CODING
2022/03/16
2K0
应用技术架构 —— 无服务器架构
什么是无服务器架构?
无服务器计算(Severless computing,简称 Serverless)现在是软件架构圈中的热门话题,国外三大云计算供应商(Amazon、Google 和 Microsoft)都在大力投入这个领域,涌现了不计其数的相关书籍、开源框架、商业产品、技术大会。到底什么是 Serverless?它有什么长处/短处?我希望通过本文对这些问题提供一些启发。
物流IT圈
2019/07/16
4.4K0
什么是无服务器架构?
微服务与Serverless
如果/login的请求剧增,需要扩容,而/register搭了顺风车,但是却没有利用到这些资源,则会造成资源浪费。
IT大咖说
2019/08/05
4.9K0
微服务与Serverless
Serverless:微服务架构的终极模式
微服务的生态和实践已经比较成熟,其设计方法、开发框架、CI/CD工具、基础设施管理工具等,都可以帮助企业顺利实施微服务。然而,微服务远没有达到完美,它在架构、开发、基础设施方面仍然面临新的挑战。
程序猿DD
2021/12/01
9810
Serverless:微服务架构的终极模式
Serverless架构实践初探|洞见
随着云计算技术的进步,软件系统的架构方式也因此发生着一些变化,其中Serverless架构就是这里的一个典型的例子。 (图片来自:http://t.cn/RadEFqr) 什么是Serverless架
ThoughtWorks
2018/04/17
1.5K0
Serverless架构实践初探|洞见
我的Serverless实战——能掰扯面试官的SSVM超详细解析!
Serverless 应用引擎(Serverless App Engine,简称 SAE)是面向应用的 Serverless PaaS 平台,帮助 PaaS 层用户免运维 IaaS,按需使用,按量计费,实现低门槛微服务应用上云,有效解决成本及效率问题。支持 Spring Cloud、Dubbo 和 HSF 等流行的开发框架,真正实现了 Serverless 架构和微服务架构的完美融合。除了微服务应用外,您还能通过 Docker 镜像部署任何语言的应用。
灰小猿
2021/09/14
3740
我的Serverless实战——能掰扯面试官的SSVM超详细解析!
无服务器架构下的运维 | 洞见
在介绍运维之前,大家先来快速了解一下无服务器(serverless)的概念。由于笔者的实战经验是在AWS平台上,本文中出现的无服务器均指使用AWS Lambda构建的serverless应用。Serverless的特点是用户无需预配置或管理服务器,只需要部署功能代码,服务会在需要的时候执行代码并自动伸缩,从每天几个请求到每秒数千个请求,轻松地实现FaaS(Function as a Service)。如下图所示:
ThoughtWorks
2018/07/23
2K0
无服务器架构下的运维 | 洞见
4000字8分钟带你理解Serverless架构
我们要上线一个系统,需要考虑的是需要多少台服务器或者多少容器资源,还有多大的存储,以及上线之后运行的过程中当需要扩容的时候,到底需要新增多少资源,而且流量高峰之后还需要缩掉多少资源。
王新栋
2019/10/14
1.2K0
4000字8分钟带你理解Serverless架构
推荐阅读
相关推荐
【玩转腾讯云】我的 Serverless 实战——引领云计算的下一个十年
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文