关于serverless:从单体迈向-Serverless-的避坑指南

51次阅读

共计 4545 个字符,预计需要花费 12 分钟才能阅读完成。

作者 | 不瞋

导读 :用户需要和云的倒退两条线推动了云原生技术的衰亡、倒退和大规模利用。本文将次要探讨什么是云原生利用,形成云原生利用的因素是什么,什么是 Serverless 计算,以及 Serverless 如何简化技术复杂度,帮忙用户应答疾速变动的需要,实现弹性、高可用的服务,并通过具体的案例和场景进行阐明。### 现在,各行各业都在谈数字化转型,尤其是新批发、传媒、交通等行业。数字化的商业状态曾经成为支流,逐步代替了传统的商业状态。在另外一些行业里(如工业制作),尽管企业的商业状态并非以数字化的模式体现,然而在数字孪生理念下,充分利用数据科技进行生产经营优化也正在成为钻研热点和行业共识。

企业进行数字化转型,从生产资料、生产关系、战略规划、增长曲线四个层面来看:

  • 生产资料:数据成为最重要的生产资料,需要 / 危险随时变动,企业面临微小的不确定性;
  • 生产关系:数据为核心,非基于流程和规定的固定生产关系,网络效应令生产关系逾越时空限度,多连贯形式催生新的业务和物种;
  • 战略规划:基于数据决策,疾速应答不确定的商业环境;
  • 增长曲线:数字化技术带来触达海量用户的能力,可带来突破性的增长。

从云服务商的角度来看云的演进趋势,在 Cloud 1.0 时代,基础设施的云化是其主题,采纳云托管模式,云上云下的利用放弃兼容,传统的利用能够间接迁徙到云上,这种形式的外围价值在于资源的弹性和老本的低廉;在基础设施提供了海量算力之后,怎么帮忙用户更好地利用算力,减速企业翻新的速度,就成为云的外围能力。

如果仍在服务器上构建根底利用,那么研发老本就会很高,治理难度也很大,因而有了 Cloud 2.0,也就是云原生时代。在云原生时代,云服务商提供了丰盛的托管服务,助力企业数字化转型和翻新,用户能够像搭积木一样基于各种云服务来构建利用,大大降低了研发老本。

云原生利用因素

云原生利用有三个十分要害的因素:微服务架构,利用容器化和 Serverless 化,麻利的软件交付流程。

1. 微服务架构

单体架构和微服务架构各有各的特点,其次要特点对比方下图所示。总的来说,单体架构上手快,然而保护难,微服务架构部署较难,然而独立性和敏捷性更好,更适宜云原生利用。

▲ 单体架构 VS 微服务架构

2. 利用容器化和 Serverless 化

容器是以后最风行的代码封装形式,借助 K8s 及其生态的能力,大大降低了整个基础设施的治理难度,而且容器在程序的撑持性方面提供十分杰出的灵活性和可移植性,越来越多的用户开始应用容器来封装整个利用。Serverless 计算是另外一种状态,做了大量的端到端整合和云服务的集成,大大提高了研发效率,然而对传统利用的兼容性没有容器那么灵便,然而也带来了很大的整洁性,用户只须要专一于业务逻辑的编码,聚焦于业务逻辑的翻新即可。

3. 麻利的利用交付流程

麻利的利用交付流程是十分重要的一个因素,次要包含流程自动化,专一于性能开发,疾速发现问题,疾速公布上线。

Serverless 计算

1. 阿里云函数计算

Serverless 是一个新的概念,然而其外延早就曾经存在。阿里云或者 AWS 的第一个云服务都是对象存储,对象贮存实际上就是一个存储畛域的 Serverless 服务;另外,Serverless 指的是一个产品体系,而不是单个产品。以后业界云服务商推出的新性能或者新产品绝大多数都是 Serverless 状态的。阿里云 Serverless 产品体系包含计算、存储、API、剖析和中间件等,目前云的产品体系正在 Serverless 化。

阿里云 Serverless 计算平台函数计算,有 4 个特点:

  • 和云端无缝集成:通过事件驱动的形式将云端的各种服务与函数计算无缝集成,用户只须要关注函数的开发,事件的触发等均由服务商来实现;
  • 实时弹性伸缩:由零碎主动实现函数计算的弹性伸缩,且速度十分快,用户能够将这种能力用在在线利用上;
  • 次秒级计量:次秒级的计量形式提供了一种齐全的按需计量形式,资源利用率能达到百分之百;
  • 高可用:函数计算平台做了大量工作帮忙用户构建高可用的利用。

那么,阿里云函数计算是如何做到以上 4 点呢?阿里云函数计算的产品能力大图如下图所示,首先函数计算产品是建设在阿里巴巴的基础设施服务之上的产品,对在其之上的计算层进行了大量优化。接着在应用层开发了大量能力和工具,基于以上产品能力,为用户提供多种场景下残缺的解决方案,才有了整个优良的函数计算产品。函数计算是阿里云的一个十分根底的云产品,阿里云的许多产品和性能均是建设在函数计算的根底上。目前阿里云函数计算曾经在寰球 19 个区域提供服务。

▲ 阿里云函数计算产品能力大图

2. Serverless 帮忙用户简化云原生利用高可用设计、施行的复杂度

云原生利用的高可用是一个零碎的工程,包含泛滥方面,残缺的高可用体系构建须要很多工夫和精力。那么 Serverless 计算是如何帮忙用户简化云原生利用高可用设计、施行的复杂度呢?如下图所示,高可用体系建设要思考的点包含基础设施层、运行时层、数据层以及应用层,且每一层都有大量的工作要做才能够实现高可用。函数计算次要是从容错、弹性、流控、监控四方面做了大量工作来实现高可用,下图中蓝色虚线框所对应的性能均由平台来实现,用户是不须要思考的。蓝色实线框尽管平台做了一些工作来简化用户的工作难度,然而仍须要用户来进行关注,而橘红色的实线框代表须要用户去负责的局部性能。联合平台提供的性能和用户的局部精力投入,能够极大地加重用户进行高可用体系建设的难度。

▲ 函数计算高可用

函数计算在很多方面做了优化来帮忙用户建设高可用体系。下图展现了函数计算在可用区容灾方面的能力。从图中可知,函数计算做了相应的负载平衡,使得容灾能力大大晋升。


▲ 函数计算多可用区容灾

下图展现的是函数计算对事件的异步解决,其解决流水线次要包含事件队列、事件散发、事件生产三个环节,在每一个环节上都能够进行程度伸缩,其中一个比拟要害的点是事件的散发须要匹配上游的生产能力。另外,通过为不同函数指定不同数量的计算资源,用户能不便地动静调整不同类型事件的生产速度。此外,还能够自定义谬误重试逻辑,并且有背压反馈和流控,不会在短时间内产生大量申请时压垮下一个服务。

▲ 函数计算事件异步解决

在函数计算的可观测性下面,提供了日志收集和查问性能,除了默认的简略日志查问性能外,还提供了高级日志查问,用户能够更不便地进行日志剖析。在指标收集和可视化方面,函数计算提供了丰盛的指标收集能力,并且提供了规范指标、概览信息等视图,能够更不便用户进行运维工作。下图是利用交付的一个示意图,在整个利用的交付过程中,只有每个环节都做好,才可能建设一个麻利的利用交付流程,其外围是自动化,只有做到了自动化,能力晋升整个流水线的效率和麻利度。


▲ 麻利的利用交付流程

下图展现了自动化利用交付流水线在每个环节的具体任务。其中须要留神的是做到基础设施即代码,能力进行模板定义和自动化设置利用运行环境,进而实现自动化的继续集成等。

▲ 自动化利用交付流水线

做到了利用的自动化交付之后,对整个研发效率的帮忙是十分大的。在 Serverless 利用上,阿里云提供了多种工具来帮忙用户实现基础设施即代码。Serverless 的模型有一个很好的能力,就是同一份模板能够传入不同的参数,进而生成不同环境的定义,而后通过自动化地治理这些环境。

对于利用自身不同服务版本的交付和灰度公布,函数计算提供了服务版本和服务别名来提供相应的服务,整个利用的灰度公布流程能够简化成一些 API 的操作,大大晋升业务的效率。通过 Serverless 计算平台提供的这些能力,整个软件应用的交付流水线自动化水平失去了大幅度的进步。

函数计算还有一个很有用的性能——对存量利用的兼容性。通过 Custom runtime,可能适配很多的风行框架,兼容传统利用,使其可能很容易地适配到 Serverless 平台下面,由控制台提供利用的创立、部署、关联资源管理、监控等一系列服务。

除了函数计算,还能够用 Serverless 工作流对不同的利用环节、不同的函数进行编排,通过描述性的语言去定义工作流,由其牢靠地执行每一个步骤,这就大幅度降低用户对于简单工作的编排难度。

利用场景案例

函数计算有几个典型的利用场景,一个就是 Web/API 后端服务,阿里云曾经有包含石墨文档、微博、世纪华联在内的多个胜利利用案例。

函数计算的另外一个利用场景就是大规模的数据并行处理,比方往 OSS 下面上传大量的图片、音频、文本等数据,能够触发函数做自定义的解决,比方转码、截帧等。这方面的胜利案例包含虎扑、分众传媒、百家互联等。

函数计算还有一个利用场景就是数据实时流式解决,比方不同的设施产生的音讯、日志发送到音讯队列等管道相似的服务中,就能够触发函数来进行流式解决。

最初一个利用场景就是运维的自动化,通过定时触发、云监控事件触发、流程编排等形式调用函数实现运维工作,大大降低运维老本和难度,典型的胜利案例有图森将来等。

图森将来是一家专一于 L4 级别无人驾驶卡车技术研发与利用的人工智能企业,面向寰球提供可大规模商业化经营的无人驾驶卡车技术,为寰球物流运输行业赋能。在路测过程中会有大量数据产生,而对这些数据的解决流程复杂多变,即便对于同一批数据,不同的业务小组也会有不同的应用及解决形式。如何无效治理不同的数据处理流程、升高人为染指频率可能大幅的进步生产效率。

路测不定时运行的特点使得流程编排工作运行工夫点、运行时长具备极大的不确定性,本地机房单独建设流程管理系统难以最大优化机器利用率,造成资源节约。而图森将来本地已有许多单元化业务解决脚本及应用程序,但因为各种限度而无奈全量的迁徙上云,这也对如何合理化应用云上服务带来了挑战。

针对上述情况,图森将来开始摸索数据处理平台的自动化。阿里云 Serverless 工作流按执行调度的次数计费,具备易用易集成、运维简略等诸多长处,可能很好地解决上述场景中所遇到的问题,非常适合这类不定时运行的离线工作场景。

Serverless 工作流还反对编排本地或自建机房的工作,图森将来通过应用 Serverless 工作流原生反对的音讯服务 MNS 解决了云上云下的数据买通问题,使得本地的原有工作失去很好的编排及治理。

除了调度外,Serverless 工作流也反对对工作的状态及执行过程中所产生的数据进行保护。图森将来通过应用工作的输入输出映射及状态汇报机制,高效地治理了流程中各工作的生命周期及相互间的数据传递。

在将来,随着业务规模的扩充,图森将来将继续优化离线大数据处理流程的运行效率及自动化程度。通过各种摸索,图森将来将进一步晋升工程团队的效率,将更多的精力和资金投入到业务翻新中去。

总结

Serverless 工作流是阿里云 Serverless 产品体系中的要害一环。通过 Serverless 工作流,用户可能将函数计算、视觉智能平台等多个阿里云服务,或者自建的服务,以简略直观的形式编排为工作流,迅速构建弹性高可用的云原生利用。

自 2017 年推出函数计算起,该服务依据利用负载变动实时智能地弹性扩缩容,1 分钟实现上万实例的伸缩并保障稳固的延时。目前曾经撑持微博、芒果 TV、华大基因、图森将来、石墨科技等用户的要害利用,轻松应答业务洪峰。

正文完
 0