『作为不断发展的新兴技术,Serverless热度的制高点已经到来。』或许,三年来GoogleTrends中“Serverless”的搜索量增长了20倍,可以证明Serverless在整个行业的火爆程度。不仅如此,根据KBVResearchCompany发布的2018年版《全球 Serverless 架构市场》和RightScale云服务状态报告,全球Serverless架构的市场渗透率已经超过75%,市场规模有望达到140亿美元到2024年。在预测期内以23.4%的复合年增长率增长。作为云原生架构,Serverless、BaaS、FaaS之间的“爱恨交织”是怎样的?相遇路窄,却能完美解决前后端联调等开发痛点。解决办法是什么?与传统开发模式相比,基于“无服务开发”理念的小程序云开发模式的“新”和优势在哪里?下面详细分析下Serverless架构的演进过程。《Serverless架构详解》近十年来(IaaS诞生于2006年),云计算的过程从物理机到IaaS,再到PaaS。应用程序的运行环境和通用组件已经越来越多地交给云服务商。Serverless进一步将主机管理、操作系统管理、资源分配、扩展,甚至应用逻辑的整个组件交付给云服务商,实现成本和运营效率的显着提升。Serverless作为一种云原生架构,使得开发者在开发应用时,可以依赖第三方服务将代码托管在云平台上,而无需部署、配置和管理传统的服务器。目前业界并没有给出明确的定义,而是分为两种,分别是“BackendasaService”和“FunctionsasaService”。用开发人员更熟悉的表达方式来看,就是“后端即服务(BaaS)”和“功能即服务(FaaS)”。无服务器=BaaS+FaaS?听起来很深奥,其实很容易理解。“BaaS”就是通过统一的云平台解决应用开发中的所有后端需求,让开发者不再需要编写和管理所有的服务端组件。BaaS无需开发人员编写完整的逻辑组件,而是需要将应用程序与云服务提供商提供的特定接口和模型进行集成。而“FaaS”就是将函数作为一种在线服务和远程计算服务,可以通过API、邮件、IoT等方式执行。FaaS是一种构建和部署服务器端软件的新方式,面向部署单一函数或操作,并且是用于运行代码的新托管环境。FaaS本质上是事件驱动的,在功能运行时优化资源使用。它的目标是仅在运行时消耗资源。从表面上看,BaaS和FaaS是两个不同的东西——前者是将应用的各个部分完全外包,后者是运行代码的新托管环境。那么,为什么它们都应该归类为Serverless呢?关键是,它们都不需要开发人员管理自己的服务器主机或服务器进程。Serverless不是serverless,它还是涉及到一个服务器,只不过这个服务器在云端。事实上,这是一种新的服务使用方式。很多时候比自己购买服务器更划算,加快了项目上线的时间,降低了开发、维护、扩容的复杂度。Serverless技术的兴起,不仅让开发者不必过多考虑服务器问题,也完美解决了前后端联调等开发痛点。Serverless作为一种全新的架构,是云计算发展演进的必然结果。《传统开发痛点分析与解决》《Serverless提供的接口简化了云计算的编程,代表着程序员生产力的又一次变革,就像编程语言从汇编时代向高级语言的进化一样时代。”2019年,伯克利在《将云中的编程变得简单:伯克利视角下的 Serverless 计算》的犀利表态,也断言了Serverless云时代的霸主地位。以前,云计算服务并没有从根本上改变应用程序的设计方式。例如,当使用像Docker这样的工具时,开发人员在应用程序周围放置了一个更薄的“盒子”,但它仍然是一个盒子,逻辑架构没有显着变化。再比如,在云端托管一个MySQL实例时,开发者仍然需要考虑工作负载所需的虚拟机资源,以及故障转移等问题。今天,这种情况在Serverless面前很容易解决。甚至前后端分离联调带来的权责、沟通、调试等一系列开发痛点,Serverless也可以从以下五个维度完美解决:?按需计费。不同于IaaS/PaaS预先分配计算资源的计费方式,Serverless按照请求数和运行时间进行计费。一方面,可以最大程度地利用资源。另一方面,真正的按需计费可以降低开发者的资源成本。用户只需为实际执行功能所消耗的资源付费,按量付费;?高效率。在Serverless架构中,用户操作面向服务的组件,如存储服务、授权服务等,缩短了开发周期,降低了开发难度,避免了基础架构带来的延迟;?绿色计算。Serverless架构下,服务商提供细粒度的计算能力,最大程度满足开发的实时性需求,资源利用率将大幅提升;?高可扩展性。Serverless架构的水平扩展是全自动的,弹性的,由服务商管理;?无需操作和维护。运维的发展经历了人工运维、自动化运维、DevOps和AIOps等阶段,Serverless带来了全新的运维模式。在这种模式下,开发者只需要关心业务本身,不需要运维。由于开发中存在诸多痛点,在突破传统开发模式、探索新的开发方案的过程中,开发者借助Serverless技术架构,基于“Serverless开发”的理念,打造了一种全新的开发模式——小程序云开发。小程序云开发是微信与腾讯云联合开发的原生无服务器云服务。融合了微信公众平台和腾讯云两大核心业务的技术能力。API和SDK为核心。以云调用功能为例,只要在小程序端触发云功能,微信自动认证后直接调用,如数据分析、客服信息、插件管理等开放API接口.通过系统配置,这些开放接口将大大提高效率,优化体验,降低运营成本。“那么,小程序云开发在用户量过大或者黑客攻击的情况下,如何保证后台服务的性能和安全性呢?”首先,小程序云开发没有传统的后台服务器,因此不接受DDoS攻击,目标是从产品形态上保证用户业务的安全;其次,小程序和云开发之间的环境相互隔离,即使发生攻击,从架构上也不会相互影响;第三,小程序云开发服务建立在腾讯云基础设施之上,天然具备快速扩展和安全防护的能力。当用户数量突然增加时,小程序云开发的开发者会第一时间通过相应的监控和告警来检测流量变化,进而确认是否需要扩容。腾讯云的基础运维能力也保证了开发者有能力快速扩展服务,避免影响用户的服务。遇到突发性黑客攻击(如DDoS),小程序云开发的开发运维人员首先确认攻击的真实性,并联系腾讯云系统运维、腾讯安全中心确认已加强对小程序云自研服务器的防护,保障系统服务安全。此外,小程序·云开发控制台也有相应的流量实时数据告知开发者,开发者可以通过此了解服务的流量数据,如有异常可联系小程序·云发展官。《小程序云开发架构详解》云开发是BaaS的一种。在引入Serverless技术架构的同时,开发者在构建应用的过程中无需关注计算资源的获取和运维。在应用端,开发者可以直接使用官方提供的接口。在云功能端,开发者可以直接使用官方的NodeSDK来操作云资源。目前,小程序云开发一共提供了三个基础能力,分别是云函数、数据库、文档存储。简而言之,它提供了保存文件、保存数据和运行业务逻辑的能力。其中,云函数能力来自于腾讯云的“ServerlessCloudFunctionSCF”。通过与SCF的深度集成,可以形成一个比较完整的serverless解决方案。?使用SCF让开发者更容易管理服务器代码,无需管理或配置服务器,只需将代码上传到SCF,即可自动运行;?可以更高效地利用资源,按执行时间和调用次数计费,代码不运行时不计费;?可快速建立持续扩展能力,各云功能互不影响,不同逻辑并行处理。此外,小程序云开发的数据库能力基于腾讯云的NoSQL数据库服务,兼容MongoDB协议。每个数据库资源都分配有一个实例ID。每个实例是一个副本集,至少有一个主从,或者一个包含多个副本集的分片集群。数据库反向代理将请求转发到最优副本集。同样,借助腾讯云面向非结构化数据的对象存储(CloudObjectStorage,COS),小程序云开发支持文档存储服务的文件上传、下载、删除功能,可以帮助开发者处理文件-相关问题。商业逻辑。所有上传的文件都会有一个全网唯一的文件ID。使用文件ID可以直接访问小程序组件中的图片、音频等文件。通过小程序云开发上传的文件默认允许在小程序中访问,无需配置CDN域名白名单。2019年1月,腾讯云宣布启动总价值超过10亿元的“小程序云开发”资源扶持计划,为超过100万小程序开发者提供免费资源支持,全力帮助开发者创造优秀小程序。小程序云开发将不断丰富SDK能力,释放腾讯的技术价值,逐步支持多种开发语言,让开发更便捷。不仅如此,腾讯云还将加速丰富云开发的各类行业解决方案,以满足企业业务不同应用场景的需求。未来,新技术会层出不穷,但要知道,技术永远是为人服务的。如果不解决人们的问题,技术就无法发展壮大。解放开发者的精力,让他们投入到业务逻辑等更有价值的工作中,从根本上为技术发展赋能,才是驱动行业“车轮”前行的动力源泉。如果你有任何使用云开发CloudBase的技术故事/技术实践经验想分享给大家,欢迎留言联系我们~比心!云开发腾讯CloudBase关注度可以说是相当爽了~
