当前位置: 首页 > 科技观察

从单体到Serverless的避坑指南

时间:2023-03-14 00:26:14 科技观察

用户需求和云发展两条线推动了云原生技术的兴起、发展和规模化应用。本文将主要讨论什么是云原生应用,构成云原生应用的要素有哪些,什么是serverless计算,以及serverless如何简化技术复杂性,帮助用户应对快速变化的需求,实现弹性和高度可用的服务。描述了具体的案例和场景。如今,各行各业都在谈论数字化转型,尤其是新零售、媒体、交通等行业。数字化业态成为主流,逐渐取代传统业态。在其他行业(如工业制造),虽然企业的业务形态并未以数字化的形式表现出来,但在数字孪生的概念下,充分利用数据技术优化生产运营正在成为研究热点和行业共识。企业数字化转型可以从生产资料、生产关系、战略规划、增长曲线四个层面来看:生产资料:数据成为最重要的生产资料,需求/风险随时变化,而企业面临巨大的不确定性;生产关系:以数据为中心,不以流程和规则为基础的固定生产关系,网络效应使生产关系跨越时间和空间的限制,多连接方式催生新的业务和物种;战略规划:基于数据决策,快速应对不确定的商业环境;增长曲线:数字技术带来触及大量用户的能力,可以带来突破性增长。从云服务提供商的角度看云的演进趋势,在Cloud1.0时代,基础设施云化是主题,采用云托管模式,云上云下应用兼容,传统应用可以直接迁移到云端这种方式的核心价值在于资源的灵活性和低成本;在基础设施提供海量算力后,如何帮助用户更好地利用算力,加快企业创新速度,成为云的核心能力。如果基础应用还是建立在服务器上,研发成本高,管理难度大,所以就有了Cloud2.0,也就是云原生时代。云原生时代,云服务商提供丰富的托管服务,助力企业数字化转型创新。用户可以像搭积木一样基于各种云服务构建应用,大大降低研发成本。云原生应用的要素云原生应用具有三个关键要素:微服务架构、应用容器化和无服务器以及敏捷的软件交付流程。1、微服务架构单体架构和微服务架构各有特点,它们的主要特点对比如下图。总的来说,单体架构易学难维护,微服务架构部署难,但更独立敏捷,更适合云原生应用。▲单体架构VS微服务架构二、应用容器化与Serverless容器化是目前最流行的代码封装方式。借助K8s及其生态能力,大大降低了整个基础设施的管理难度,程序中容器的支持在性能上提供了极佳的灵活性和可移植性,越来越多的用户开始使用容器来封装整个应用程序。无服务器计算是另一种形式。做了很多端到端的集成和云服务集成,大大提高了研发效率。但是对传统应用的兼容没有容器那么灵活,但是也带来了很大的整洁性,用户只需要专注于业务逻辑的编码和业务逻辑的创新。3、敏捷的应用交付流程敏捷的应用交付流程是一个非常重要的要素,主要包括流程自动化,注重功能开发,快速发现问题,快速上线。Serverless计算1.阿里云函数计算Serverless是一个新概念,但它的内涵已经存在。阿里云或AWS的第一个云服务是对象存储,实际上是存储领域的serverless服务;另外,serverless指的是一个产品系统,而不是一个单一的产品。目前,业界云服务商推出的新功能或新产品,大多都是以Serverless的形式出现。阿里云的Serverless产品体系包括计算、存储、API、分析、中间件。目前,云的产品体系正在向Serverless方向发展。阿里云的无服务器计算平台函数计算有四大特点:与云端无缝集成:以事件驱动的方式将云端的各种服务与函数计算无缝集成。用户只需要专注于功能开发和事件触发。它由服务提供商完成;实时弹性伸缩:系统自动完成函数计算的弹性伸缩,速度非常快,用户可以在在线应用中使用该能力;亚秒级计量:亚秒级计量方式提供了完整的按需计量方式,资源利用率可达100%;高可用:函数计算平台在帮助用户构建高可用应用方面做了大量工作。那么,阿里云函数计算是如何做到以上四点的呢?阿里云函数计算的产品能力如下图所示。首先,函数计算产品是基于阿里巴巴基础设施服务的产品。上面的计算层已经过大量优化。然后在应用层开发了大量的能力和工具。基于以上产品能力,为用户提供各种场景的完整解决方案,才有了完整的卓越功能计算产品。函数计算是阿里云非常基础的云产品。阿里云的很多产品和功能都是基于函数计算的。目前,阿里云函数计算已在全球19个地区提供服务。▲阿里云函数计算产品能力大图2.Serverless帮助用户简化云原生应用高可用设计和实现的复杂度云原生应用高可用是一个系统工程,包括很多方面,构建一个整体完整的高可用性系统需要大量的时间和精力。那么Serverless计算如何帮助用户简化云原生应用的高可用设计和实现的复杂性呢?如下图所示,构建高可用系统需要考虑的点包括基础设施层、运行时层、数据层和应用层。为了实现高可用性,每一层都有很多工作要做。函数计算在容错、弹性、流控、监控四个方面做了大量的工作来实现高可用。下图中蓝色虚线框对应的功能都是平台实现的,用户无需考虑。蓝色实线框虽然做了一些简化用户工作难度的工作,但仍然需要用户注意,而橙红色实线框则代表了一些需要用户自行负责的功能。结合平台提供的功能和用户的部分精力投入,可以大大降低用户搭建高可用系统的难度。▲函数计算高可用函数计算在多方面进行了优化,帮助用户构建高可用系统。下图展示了函数计算在容灾方面的能力。从图中可以看出,函数计算实现了相应的负载均衡,大大提高了容灾能力。▲函数计算多可用区容灾下图是函数计算对事件的异步处理。它的处理流水线主要包括事件队列、事件分发、事件消费三个环节。每个链接都可以水平缩放。一个关键点是事件的分发需要匹配下游的消费能力。此外,通过为不同的功能指定不同数量的计算资源,用户可以方便地动态调整不同类型事件的消费速度。另外,还可以自定义错误重试逻辑,并且有背压反馈和流量控制,这样在短时间内产生大量请求时不会压垮下一个服务。▲函数计算事件的异步处理在函数计算的可观察性之上,提供日志收集和查询功能。除了默认的简单日志查询功能外,还提供高级日志查询功能,让用户更方便的进行日志分析。在指标采集和可视化方面,函数计算提供了丰富的指标采集能力,并提供标准指标、概览信息等视图,方便用户运维。下图是应用交付的示意图。在整个应用交付流程中,只有做好每一个环节,才能构建敏捷的应用交付流程。核心是自动化。只有实现了自动化,才能改进整个??流水线。效率和敏捷性。▲敏捷应用交付流程下图展示了自动化应用交付流水线中各个环节的具体任务。需要注意的是,基础设施即代码可以通过定义模板,自动搭建应用运行环境,从而实现自动化持续集成。▲自动化应用交付流水线实现应用的自动化交付后,对整体研发效率有很大帮助。针对Serverless应用,阿里云提供了多种工具帮助用户实现基础设施即代码。Serverless模型有一个很好的能力,就是同一个模板可以传入不同的参数,生成不同环境的定义,然后自动管理这些环境。针对应用本身不同服务版本的交付和灰度发布,函数计算提供服务版本和服务别名来提供相应的服务。可以将整个应用的灰度发布过程简化为一些API操作,大大提高业务效率。通过无服务器计算平台提供的这些能力,大大提高了整个软件应用交付流水线的自动化程度。函数计算还有一个非常有用的功能——兼容已有的应用。通过Customruntime,可以适配很多流行的框架,兼容传统应用,轻松适配Serverless平台。控制台提供应用创建、部署、关联资源管理、监控等一系列服务。除了函数计算,Serverless工作流还可以用来安排不同的应用环节和不同的功能,通过描述性语言来定义工作流,并可靠地执行每一步,这大大减少了用户执行复杂任务的需要。编排难度。应用场景案例函数计算有几个典型的应用场景。一种是Web/API后端服务。阿里云已经有石墨文档、微博、世纪华联等多个成功的应用案例。函数计算的另一个应用场景是大规模数据并行处理,比如将大量的图片、音频、文本等数据上传到OSS,可以触发函数进行自定义处理,比如转码、抓帧等。这方面的成功案例有虎扑、分众传媒、百家网等。函数计算的另一个应用场景是数据的实时流处理。例如,将不同设备产生的消息和日志发送到消息队列和类似管道等服务中,可以触发功能进行流处理。最后一个应用场景是运维自动化。通过定时触发、云监控事件触发、流程编排等方式调用函数完成运维任务,大大降低运维成本和难度。典型的成功案例包括图森未来。图森未来是一家专注于L4级无人卡车技术研发与应用的人工智能公司。向全球提供无人卡车技术的规模化商业运营,为全球物流运输行业赋能。路测过程中会产生大量数据,对这些数据的处理复杂多变。即使是同一批数据,不同的业务组也会有不同的使用和处理方式。如何有效地管理不同的数据处理过程,减少人为干预的频率,可以大大提高生产效率。路测运行不规律,使得流程编排任务的运行时间和运行时间非常不确定。在本地机房单独建立流程管理系统,难以优化机器利用率,造成资源浪费。未来图森在本地已经有很多单元化的业务处理脚本和应用,但由于种种限制,无法完全迁移到云端,这也给如何合理使用云服务带来了挑战。针对上述情况,图森未来将开始探索数据处理平台的自动化。阿里云的Serverless工作流是按照执行调度的数量计费的。具有使用方便、易于集成、运维简单等诸多优点。可以很好的解决以上场景遇到的问题,非常适合这种运行不规律的离线任务。场景。Serverless工作流还支持本地或自建机房任务的编排。未来途胜将使用Serverless工作流原生支持的消息服务MNS来解决云与云之间的数据连接问题,让原本本地的任务可以很好的编排。和管理。除了调度,Serverless工作流还支持维护任务状态和执行过程中产生的数据。TuSimple通过使用任务输入输出映射和状态报告机制,高效地管理流程中每个任务的生命周期以及它们之间的数据传递。未来,随着业务规模的扩大,图森未来将继续优化离线大数据处理的运行效率和自动化水平。通过多方探索,图森未来将进一步提升工程团队的工作效率,将更多的精力和资金投入到业务创新上。总结Serverless工作流是阿里云Serverless产品体系的重要组成部分。通过Serverless工作流,用户可以将函数计算、视觉智能平台等多种阿里云服务,或者自建服务以简单直观的方式编排到工作流中,快速构建弹性高可用的云原生应用。函数计算自2017年上线以来,根据应用负载变化,实时智能弹性伸缩,一分钟完成万级实例的扩容,时延稳定。目前已支持微博、芒果TV、华大基因、图森未来、石墨科技等用户重点应用,轻松应对业务高峰。