2012年,云基础设施服务商m.smtshopping.cn副总裁Ken谈到软件开发行业的未来和首次提出Serverless的概念。运行在云端的应用描述了一种全新的系统架构。此后,以AWS为代表的云服务厂商逐渐践行Serverless理念,并陆续推出基于Serverless的FaaS(Function as a Service)产品。经过几年的发展,Serverless架构已经被业界认为将引领未来十年云原生的发展趋势。
根据Gartner报告,2020年全球有20%的企业采用了Serverless技术部署。Serverless技术从底层改变了计算资源的形态,将创新的技术设计思想引入到企业的软件架构设计和应用服务部署中。
尽管如此,国内一些公司和开发者面对Serverless仍然抱有观望态度。一方面,国内相关技术起步较晚,部分开发者对新技术的接受度较低;另一方面,国内Serverless生态建设相对落后,市场上相关工具链不完善,导致开发难度大、部署难度大、成本高。
近日,阿里云Serverless技术团队宣布开源Serverless Devs平台,为开发者提供Serverless工具链系统。据介绍,通过该平台,开发者可以一键体验多云Serverless产品,快速部署Serverless项目。
为了进一步了解Serverless Devs项目的特点,以及国内Serverless、微服务等云原生技术生态的发展趋势,开源中国邀请到了阿里云Serverless研发总监杨浩然(没生气)阿里云Serverless产品经理、Serverless Devs项目发起人姜宇为我们分享了Serverless项目的细节以及国内Serverless生态的情况。
以下为采访原文:
<江昱>:团队由阿里云智能云原生中间件前端负责人领衔,由阿里云智能云原生功能计算团队的多名技术专家以及多名社区爱好者。通过开源的思路,项目建设历时120天。
Serverless Devs技术团队的核心研发人员主要包括:
<不嗔>:Serverless作为基础研发基础,被越来越多的企业接受并应用于商业实践。除了最早“尝鲜”的互联网企业之外,传统企业也在探索Serverless的大规模使用。
以世纪联华为例。 2019年双十一期间,函数计算FC帮助世纪联华顺利度过大促销。 2020年双11,世纪联华全面迁移到函数计算2.0,顶住了去年230%以上的业务峰值,研发效率交付提升30%以上,弹性资源成本降低40%以上。如今,阿里巴巴整个经济体都在践行Serverless,包括淘宝、天猫、支付宝、钉钉、飞猪、闲鱼、语雀等,并将Serverless应用场景拓展到前端全栈、小程序、微服务、新零售、游戏等。互动娱乐等领域。具体场景如下:
小程序/Web/手机/API后端服务
小程序、Web/移动应用、API服务等场景,业务逻辑复杂多变,迭代和上线速度要求较高。而且,此类在线应用的资源利用率通常低于30%,尤其是小程序等长程序。对于尾部应用,资源利用率甚至低于10%。 Serverless计算免运维、按量付费的特点非常适合构建小程序/Web/Mobile/API后端系统。通过预留计算资源+实时自动伸缩,开发者可以快速构建时延稳定、能够承载高频的系统。访问在线申请。在阿里巴巴内部,使用Serverless构建后端服务是最常见的场景,包括前端全栈领域的Serverless For Frontends、机器学习算法服务、小程序平台实现等。
大规模批量处理
典型的离线任务批处理系统,例如大规模音视频文件转码服务,包括计算资源管理、任务优先级调度、任务编排、任务可靠执行、任务数据可视化等一系列功能。如果从机器或容器层面构建,用户通常使用消息队列来持久化任务信息和分配计算资源,使用K8S等容器编排系统来实现资源扩展和容错,并自行构建或集成监控和报警系统。如果一项任务涉及多个步骤,则需要集成工作流服务以实现步骤的可靠执行。使用Serverless计算平台,用户只需专注于实现任务处理逻辑,Serverless计算的极致弹性可以很好地满足突发性任务计算的需求。力的需要。
比较项目 |
自建服务 |
无服务器 |
任务处理效率 |
根据用户自建系统的灵活性和任务调度效率,当大量任务进来时,通常需要进行排队延迟处理 |
与弹性计算等底层资源池联动,实时伸缩,及时处理任务。通过无服务器工作流程可以实现复杂的任务编排。支持随时动态调整不同任务的计算资源,轻松实现任务优先级处理 |
费用 |
取决于用户自建系统的任务调度和资源管理效率 |
资源利用率通常比用户自建高10%-30%,成本更有优势 |
开发 |
除了必要的业务逻辑开发外,还需要实现任务处理系统,以保证任务的可靠执行 |
您只需专注于业务逻辑的开发和一键应用部署 |
操作与维护 |
需要用户从头到尾构建,包括相关软件的安装、服务配置、安全更新等一系列问题 |
免运维,并提供强大的问题诊断和数据可视化能力 |
项目启动周期 |
保守估计约30个人日,包括硬件采购、软件及环境配置、系统开发、测试、监控报警、灰度发布系统等。 |
预计3人天,开发调试(2人天)+压测观察(1人天) |
基于事件驱动架构的在线应用和离线数据处理
典型的无服务器计算服务以事件驱动的方式与各类云服务广泛集成。用户不需要管理服务器等基础设施或编写粘合代码来集成多个服务,并且可以轻松构建松散耦合的分布式事件驱动服务。架构应用。
以阿里云函数计算为例,通过API网关与函数计算的融合,用户可以快速实现API后端服务。通过对象存储和函数计算的事件集成,函数可以实时响应对象创建、删除等事件,实现以对象存储为中心的大规模数据处理。通过消息中间件的事件集成和函数计算,用户可以快速处理海量消息。通过与阿里云EventBridge集成,无论是第三方的云服务、第三方的SaaS服务,还是用户自建的系统,所有事件都可以通过函数计算快速、便捷地处理。
运维自动化
通过定时触发器,用户可以使用功能快速实现定时任务,而无需管理执行任务的底层服务器。通过云监控触发器,用户可以接收ECS重启/宕机、OSS对象存储流控等IaaS层服务的运维事件,并自动触发功能处理。
具体案例请参考: http://m.smtshopping.cn/case-study.html
<不嗔>:首先,我们在服务集团内外用户的时候,我们看到工具链是Serverless被用户接受的最大障碍。这主要体现在以下几个方面:
其次,从云原生的发展趋势来看,开发者在构建云原生应用时要解决的问题的范围和复杂度都在不断增加。例如,在构建应用程序时,开发人员仍然需要花费大量精力来处理与业务逻辑无关的细节,包括资源的创建和删除、权限管理等;对于企业级客户来说,除了资源管控之外,还需要保证安全。合规性,比如如何保证敏感数据不被错误授予外部访问权限,VM不被禁止访问公网等等。我们相信在工具层面会有巨大的创新空间。
因此,我们希望根据用户的实际需求和未来趋势,为开发者打造一个工具链,能够帮助用户彻底解决应用开发和运维中的问题,真正连接dev和ops,提高研发效率。我们希望这个工具具有良好的“复杂度扩展性”,这样当问题简单的时候,能够快速上手;当问题变得复杂时,仍然可以使用同一套工具和流程。
<江昱>:虽然Serverless已经发展了很长时间,也不是一个新概念,但Serverless工具链还是相当缺乏。我们不仅意识到这个问题,还和很多用户进行了深入的沟通。我们也非常关心用户在使用Serverless时遇到的问题。最终,我们决定打造一个“开发者视角的Serverless工具链系统”。其目的是让开发者像使用手机一样使用Serverless,给大家更简单、更方便、更快捷的上手体验和实际操作,并能在Serverless项目的整个生命周期中发挥作用。至于和Midway的联系,我觉得是非常密切的,因为Serverless Devs更多的是一个工具级的产品,而Midway则是一个框架级的产品。两者相辅相成,并不冲突。
<不嗔>:与Serverless Framework等流行工具相比,Serverless Devs 有几个明显的区别:
<江昱>:Serverless Devs 从命令行工具和应用中心两个主要部分打开了。 Serverless 实际上是一个非常由开发人员驱动的领域。我们开源整个项目,开放整个想法。主要目的是从开发者的角度为开发者提供他们需要的工具,让开发者可以自己定义和构建Serverless工具链。我们也希望通过这种形式,能够和更多的开发者互动,接触更多的Serverless爱好者,和大家一起进行Serverless工作。
<不嗔>:多云应用迁移涉及很多因素。除了计算平台迁移之外,还包括数据迁移、配置流程迁移等。Serverless Devs的设计理念是帮助开发者统一构建、部署、发布容器或Serverless应用。无论用户使用什么语言(nodejs、python、golang、java)或平台(K8S、阿里云Serverless、谷歌云跑等),研发和操作体验都是一致的,因此Serverless Devs可以简化应用程序迁移到其他应用程序。平台的难度。
Serverless 论文数量(数据来源:https://m.smtshopping.cn/search?q=serverless)
当前学术界/工业界 Serverless 主要研究趋势:
<不嗔>:Serverless 和微服务架构不是对立的,而是不同维度的概念。微服务是一种架构模式,以FaaS为代表的Serverless计算平台是微服务的一种实现方式。微服务可以使用FaaS、SpringCloud PaaS平台、K8S+容器或VM来实现。
确定用什么来实现微服务,必须从可靠性、成本、性能、工程效率、安全性、系统迁移难度等维度入手。不同的场景有不同的权衡。目前,在微服务场景中使用Serverless架构最大的挑战是兼容现有的微服务框架,并能够平滑迁移现有的应用程序。为了解决此类问题,阿里云Serverless应用引擎应运而生。兼容Spring Cloud、Dubbo等流行的微服务框架。传统应用可以平滑迁移。它集成了ARMS等阿里云服务,提供开箱即用的可观测能力和时序。伸缩、基于指标伸缩等弹性能力让微服务场景享受到Serverless带来的好处。
<不嗔>:这种观点是片面的。对于任何技术,你都需要思考它的起源、趋势、优点和缺点,尤其是亲自实践才能做出客观的判断。无服务器并不是一项新技术。阿里云首款云服务对象存储OSS是无服务器存储服务。使用OSS并不会减少后端开发人员的技术开发空间。下图展示了构建灵活、高可用的后端系统需要考虑的因素。只有蓝色虚线框是平台的责任。还有大量其他内容还需要后端开发者设计实现:
无服务器计算只解决对用户来说差异化最小的最基本、最脏的工作,比如基础设施管理。正如目前很少有开发人员基于汇编语言构建应用程序一样,Serverless 也是如此,它希望在云编程时代为用户提供高级语言编程体验。
无服务器开发开源项目:
受访者介绍
2010年加入阿里云,担任阿里云飞天分布式系统核心研发成员。曾担任表存储(NoSQL)和对象存储(OSS)研发经理。推动并深度参与阿里云系统研发和产品迭代的整体发展。过程。对大规模分布式计算、大规模数据存储与处理有非常深入的理解和丰富的实践。现负责阿里云Serverless产品线研发,推动下一代弹性高可用Serverless计算平台的建设,致力于Serverless在中国更好的落地。
阿里云Serverless产品经理,Serverless Devs项目发起人。