【云驻共创】微服务向Serverless演进与场景讲解

举报
SpiderMan 发表于 2022/06/21 11:34:45 2022/06/21
【摘要】 由于需求的与日俱增,随着技术的迭代更新,云托管的新时代是属于Serverless ,由于Serverless 的优势和特质屏蔽越来越复杂的云计算技术细节,让客户更关注上层业务的运行情况,更能让客户聚焦于业务本身。华为云应用引擎CAE可以帮助客户无需理解云技术,即可享受云托管。接下来让我们更加了解微服务的演进过程,更加熟悉Serverless的使用场景。

目录

1.云托管的新时代——Serverless

          1.1 云托管的来源

          1.2 Serverless的定义和特质

2.应用托管向Serverless化方向的演进趋势

          2.1 单体应用托管

          2.2 微服务托管

          2.3 Serverless托管

          2.4 应用托管类产品的意义

3.微服务向Serverless化方向的场景讲解

          3.1 Serverless的使用场景

          3.2 用户场景一:上云简单

          3.3 用户场景二:快速对外开放服务

          3.4 用户场景三:极致弹性伸缩 

4.总结


1.云托的新时代——Serverless

1.1 云托管的来源

决定开发一个应用, 需要思考很多东西。想要一个app来落地,需要一个绝妙的IDEA,也需要准备一个适合的业务方案。

例如开发一个微服务应用,需要考虑部署到哪里?传统情况就会使用虚拟机,如今也有更快更自动化的开发、发布、弹性伸缩流程,因为容器能够解决问题,但是在技术层面很复杂,例K8S 、Docker、 CI/CD等等,这些都是全是云技术的问题,需要了解熟悉这么多的技术,并且处理出现的技术问题。

于是就有了云托管,例如华为云应用引擎CAE就能很好的解决这个问题。它的优势就是:无需理解云技术,即可享受云托管。

CAE可承载Serverless应用的全生命周期管理。支持Java、Go、PHP、Node.js、Docker、Tomcat等运行环境,可无侵入托管Apache ServiceComb、Spring Cloud、Dubbo、服务网格等微服务应用,另外还提供配置管理、监控运维和服务治理等更多功能,让企业微服务应用上云更简单。

1.2 Serverless的定义和特质

Serverless从物理机或虚拟机的使用上进行了分离,更关注上层业务的运行情况。就很好的解决了很多技术层面需要考虑的问题,让开发者更能全身心投入研发。

Serverless(无服务器架构)指的是由开发者实现的业务逻辑运行在无状态的计算容器中,它由事件触发,完全被第三方管理,其业务层面的状态则被存储在数据库和其他存储资源中。Serverless架构包含两块:函数即服务和后端即服务。

函数即服务提供的是计算能力。原有的计算能力,无论是容器也好,虚拟机也好都承载在一定的操作系统之上,函数即服务把计算能力进行了进一步抽象。

另外,Serverless还有后端即服务,比如对象存储,数据库应用,缓存服务,也可以称之为Serverless,因为这些服务也能够在云上提供开通即服务,开通即使用的能力。在使用这些产品时同样不需要关注它的服务器是什么样的,它的服务器部署在哪里,而是服务开通就可以使用了,后面的运维工作都交给了云,所以不用感知它的最底层服务器,因此也可以把它称之为Serverless。这种服务就称之为Serverless后端即服务。这两个合起来可以称为Serverless架构。

Serverless不代表不需要服务器,而是说客户不用过多考虑服务器的问题,计算资源作为服务而不是服务器的概念出现。 Serverless是一种构建和管理基于微服务架构的完整流程,允许开发者在服务级别而不是服务器级别来管理应用部署,这大大降低了软件开发的复杂度,使得开发者可以快速迭代,更快速开发软件。

Serverless 具有的很多与众不同的特质。这里叫特质,而非特性,因为这些属于 Serverless 架构的固有元素,我们无法像处理其它可塑特性那样做出调整。而特质是天然存在的。

  • 免运维:不需要管理服务器主机或者服务器进程。
  • 弹性伸缩:根据负载进行自动规模伸缩与自动配置。伸缩范围零到无穷大。
  • 按需付费:根据使用情况决定实际成本。
  • 高可用:具备隐含的高可用性。

2.应用托管向Serverless化方向的演进趋势

2.1 单体应用托管

在设计系统开发的时候,传统做法就是采用早已烂熟的逻辑三层架构:用户界面层、业务逻辑层和数据访问层,如果遵循领域驱动设计(DDD)的经典分层架构,基本上也就是四层:表现层、应用层、业务层以及基础结构层。多年来,这种架构形式被反复地实现、反复地验证,并且反复地、成功地被应用在很多生产环境中。

这种架构形式具有一定的优点:

  • 结构简单,容易理解
  • 实现数据一致性相对比较容易,通过本地事务或者分布式事务可以方便有效地保证数据一致性
  • 部署简单方便
  • 持续集成策略的设计相对容易

这种架构大致可以使用下图表示,各层组件可以通过相互引用进行相互调用,进而实现应用程序“一体化”,这也是“单体架构”一词的由来。

2.2 微服务托管

早期业务规模比较简单,大多团队开发采用单体应用托管,已经能够很好地满足团队的业务需求,并且能够快速迭代。但随着业务规模的不断增长,系统变得越来越复杂,单体应用逐渐无法满足线上生产的问题。比如电商业务中,如果将交易、支付,商品等所有功能都集中在单体应用中开发,有可能会出现发布简单商品功能影响到交易,从而对整个电商系统产生影响,给企业造成损失。

这个时候很多团队会把单体应用架构改为微服务的架构,解决单体应用的问题。但随着业务进一步发展,系统愈加复杂,加之新技术的到来。

此时的微服务托管的优点是:

  • 半自动弹性伸缩+高可用
  • 容器化+微服务化带来新的
  • 维问题按资源付费

2.3 Serverless托

微服务框架与容器平台是按照天数计算的,然而Serverless使用是按照小时计算的,这种自动高效的弹性伸缩的性能,让用户按照用量付费,给用户带来了极大的便利。

此时的Serverless托管优点:

  • 降低运营复杂度Serverless架构使软件应用和服务器实现了解耦,服务器不再是用户开发和运营应用的焦点。在应用上线前,用户无须再提前规划服务器的数量和规格。在运维过程中,用户无须再持续监控和维护具体服务器的状态,只需要关心应用的整体状态。应用运营的整体复杂度下降,用户的关注点可以更多地放在软件应用的体验、改进以及其他能带来更高业务价值的地方。
  • 降低运营成本服务器不再是用户关注的受管资源,运营的复杂度下降,应用运营所需要投入的时间和人力大大降低。在最好的情况下,可以做到少数几个应用管理员即可管理一个处理海量请求的应用系统。
  •  缩短产品的上市时间Serverless架构下,应用的功能被解构成若干个细颗粒度的无状态函数,功能与功能之间的边界变得更加清晰,功能模块之间的耦合度大大减小。这使得软件应用的开发效率更高,应用开发的迭代周期更短。

2.4 应用托管类产品的意义

应用托管类产品的意义就在于屏蔽越来越复杂的云计算技术细节,让客户聚焦于业务本身。

从一开始的单体应用托管的时候,客户需要完成以下任务:

  • 运行在云端的业务
  •  手动的CI/CD及负载均衡
  • 自运维Language Runtime
  • 手动购买/释放虚机实现弹性伸缩

云厂商需要完成以下任务:

  • 提供已内置的操作系统OS
  • 无需自维护物理机房

随着应用托管发展成容器托管,最后演变为Serverless托管。这个时候,客户只需要关注运行在云端的这一个业务,其他的任务全部让云厂商去完成,极大了减轻了客户的任务量,让客户更关注业务本身。


3.微服务Serverless化方向的场景讲解

3.1 Serverless的使用场景

  • 异步、并发,易于并行化成独立工作单元的工作负载。
  • 低频或有零星请求,但具有较大不可预测扩容变化需求的工作负载。
  • 无状态、短期运行,对冷启动延迟不敏感的工作负载。
  • 业务需求变化迅速,需求快速开发实现的场景。

3.2 用户场景上云简单

支持多种常见业务形态一键部署上云。部署在华为云应用引擎CAE中,进行应用生命周期管理、自动弹性伸缩、标签化环境管理、产品组合管理等。

业务场景示例如下:

  • 代码部署上云(源码)
  • 软件仓库上云(软件包)
  • 镜像仓上云(镜像包)
  • 流水线对接上云(流水线)

3.3 用户场景二:快速对外开放服务

支持仅配置域名or端口,即可对外开放前端or后端业务。

  • WEB用户可以通过以下方式配置域名、端口:前端服务开放域名(console) 可以直接在产品里面勾选https灰度发布
  • API用户可以通过以下方式配置端口:后端服务开放接口(API) 对外https对内nacos http

CAE服务托管环境下的业务管理:

  • 弹性伸缩
  • 监控告警
  • 日志分析
  • 流量指标

3.4 用户场景三:极致弹性伸缩

通过配置业务阈值实现自动化弹性伸缩,按需收费降本增效。

普通用户的痛点和诉求如下:

  • 周期性业务洪峰,需提前预估容星资源
  • 促活流量激增,需临时手动部署应用
  • 业务稳定期,需释放资源降低成本
  • 复杂业务运维,需维持业务稳定

Serverless的解决方案就是将应用部署在云应用引擎CAE中,实现结果将自动化弹性伸缩。具体方案如下:

  • 实时配置规则从容面对流星洪峰
  • 自定义流星阈值自动部署高频访问服务
  • 极致弹性伸缩按需使用
  • 资源聚焦电商业务层运维屏蔽基础设施

4.总结

微服务向Serverless逐渐演进,其原因就是Serverless框架核心理念是让开发者不用关心服务器的存在,专注于业务代码。技术是逐层向上发展,大家都在致力于新技术的创新,以满足更高要求的业务需要,解决 0 到 1 的过程,这个过程往往会带来技术上的复杂性,复杂性积累到一定程度,成为一个不可忽视是痛点,自然就会通过技术手段屏蔽掉不必要透出给开发者的那一部分复杂性。所以Serverless就是屏蔽掉底层服务器的复杂性的最佳解决办法。

任何新概念新技术的落地实现,本质上都是要和具体业务去结合,去真正解决具体业务问题。华为云应用引擎CAE可以帮助客户无需理解云技术,即可享受云托管。其支持多种常见业务形态一键部署上云、 快速对外开放服务、极致弹性伸缩等众多优势,给客户带来无限便利。

Serverless架构让人们不再操心运行所需的资源,只需关注自己的业务逻辑,并且为实际消耗的资源按需付费。随着Serverless架构的兴起,真正的云计算时代才算到来了。我对无服务器计算的未来充满期待,我相信越来越多的软件服务都会使用Serverless。

Serverless在未来还有无限可能!


本文参与华为云社区【内容共创】活动第17期。

https://bbs.huaweicloud.com/blogs/358780

任务16:微服务向Serverless演进与场景讲解

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。