腾讯云授权服务中心

免费提供腾讯云部署方案,上门服务,技术支持

免费咨询热线:13829777525

Serverless 减低成本和提高效率,无服务器正走向成

  6月24日,在上海召开的KubeCon2019大会上,腾讯云技术总监YunongXiao发表了《BackFromtheFuture:ATimeTraveler'sTakeonServerless》的演讲主题。他表示:Serverless带来了成本和效率的改变,无服务器的产品和生态正走向成熟,并逐步承载起企业核心业务。
 
腾讯云技术总监YunongXiao
 
Serverless2.0重磅发布
 
  Serverless服务帮助用户从繁冗的开发配置工作中解放出来,没有任何的基础设施建设、管理与运维开销,开发者仅需关注业务代码逻辑的编写,这种模服务式能够极大降低研发门槛,并提升业务构建效率,获得了大量企业和开发者的支持。
 
  Serverless无疑是下一代云计算服务形态的趋势,但当前复杂的企业业务系统并不能完全基于无服务来实现,我们分析主要有以下几方面的原因:
 
  1.性能问题。目前无服务器尚未完全成熟,在性能方面仍存在诸多问题,如同步业务的冷启动延时、高并发的函数实例扩缩容,大规模业务下函数实例的集群管理等
 
  2.缺乏成熟的开发者生态。企业和研发采用无服务器,需要用监控、Debug调试、DevOps等上下游的支持;
 
  3.需要理解和管理底层的基础设施。当前Serverless架构下,客户依然会感知到无服务器集群和资源的存在。
 
  而针对当前企业业务系统不能全面向无服务器转移的问题,腾讯云正在进行持续探索研究,并在上海召开的KubeCon2019大会上,重磅发布了下一代无服务器的发展形态:Serverless2.0。
 
关于Serverless2.0
 
  对于Serverless的概念、发展、形态、应用及优劣对比等问题,腾讯云高级产品经理黄文俊也在大会上发表了主题为《下一代无服务器的发展形态:Serverless2.0》的演讲,以下是具体的内容
 
腾讯云高级产品经理黄文俊
 
 Serverless及其发展 
 
  Serverless无服务器概念,是指满足无需购买、管理、运维服务器,用户按需使用、按使用量付费,同时平台或产品可以根据使用量自动弹性扩缩容等这几个特性的产品或服务。
 
  目前,Serverless又被分为了BaaS和FaaS,Baas包含了存储、数据库、队列、缓存等各种形态的Serverless服务;而FaaS通常指的是函数即服务FunctionasaService产品。
 

 
  在目前云中提供的计算产品形态中,包含了虚拟机、容器与云函数。无论使用虚拟机还是容器,除了要关注自身业务代码之外,还需要有复杂的运维管理工作,例如管理启动进程、打安全补丁、选择开发框架、控制访问权限等等。
 
  而通过使用云函数,用户仅需按规范进行业务代码的编写,就可以对外提供服务。进程的启动时机以及运行所在的服务器运维可以完全交给平台。但当前的云函数产品,在开发方式上和已有的基于VM或容器的开发方式有所不同。
 
  在基于VM或容器的开发模式中,通过使用框架处理http请求,启动监听,并由外部命令或脚本来启动进程,是当前开发者都熟悉的业务编写模式。
 

 
  而使用云函数,http请求会被转变为一个个的事件,业务代码可以直接针对事件进行处理,并按要求返回数据即可。这种由事件触发,接收event消息,并根据业务逻辑进行数据处理的云函数模型,是当前Serverless的主要模式。这种模式的函数,我们称为eventfunction。
 
 
  事件驱动的核心要素,是能够有丰富的事件源,通过打通各种产品和云函数,使得各产品均可以成为云函数的事件源。这种情况下,函数就成为了产品间的粘合剂,通过承载事件或数据从一个产品流转到另外一个产品,一个函数流转到另外一个函数,在这个过程中实现数据处理,最终建立业务逻辑。
 
  当前的事件触发的FaaS形态,在针对业务的削峰填谷、为无状态应用提供弹性的并行处理能力,以及类似crontab定时任务这些场景中,提供了极大的优势。
 
  但是同时,当前的云函数,具有访问延时高、运行时长受限、无法直接访问、状态持久化等问题,同时由于开发方式的变化,导致已有的业务,也无法直接向Serverless架构迁移,无法做到类似从虚拟机到容器的迁移。
 
 腾讯云Serverless2.0 
 
  对于已有的Serverless产品,以及在产品推广过程中的业务上线的痛点、客户声音,我们重新梳理了Serverless产品的发展路线,并将其定义为Serverless2.0。
 
 
  eventfunction
 
  在Serverless2.0中,团队从客户的实际使用场景出发,进行了产品的梳理。针对事件驱动的函数,定义为eventfunction。
 
  事件函数仍然遵循现有的函数触发模式,并将持续增加与腾讯云其他各产品的对接,持续丰富应用场景,例如与日志服务对接,提供日志记录处理;与数据库对接,由数据修改动作触发函数运行;与云监控告警对接,针对告警事件可以进行自动化代码处理等。
 
  而针对http场景,通过提供httpfunction和httpservice两种形态,更好的支持网络访问处理的场景。
 
  接下来,将对httpfunction和httpservice两种模式进行进一步的解读说明。
 
  httpfunction
 
  通过使用httpfunction,函数可以直接提供外部可访问到的url地址,无论是app应用,web应用,还是微信小程序,都可以通过发起http调用,访问url来调用函数。
 
  而云函数开发中通常的event事件结构,优化为httprequest、httpresponse结构,更符合Web服务开发的习惯。通过request结构,可以获取到http请求的相关信息,而通过response结构,可以自行构造出所需的http响应。
 
 
  通过这种模式,用户可以专注于业务逻辑的开发,而将原有基于VM或容器中需要考虑的扩缩容、进程启动、并发处理等事情都交给平台来解决。
 
  而针对实际业务,通常不仅仅是单个函数就可以实现。在Serverless架构中,单个function通常仅提供独特单一的功能实现,整个应用通常是由多个函数、以及围绕着函数的数据存储、文件存储、消息队列、API管理等多种资源构成。
 
  团队从面向Application角度出发,基于全套Serverless架构,进行了Serverless编排框架的设计。通过编排框架,我们可以将应用相关的资源统一到一起,不仅包括了函数,同样会包含数据库、文件存储、消息队列、API管理等多种资源。无论从应用开发、还是调试部署,开发部署框架均将为我们带来难度的降低、效率的提升。
 
 
  httpservice
 
  产品形态中提供的httpservice,在同样对外提供url访问地址,支持应用直接访问的基础上,我们提供了针对已有代码或框架的支持。
 
  基于常用框架已经开发完成的业务代码,可以无缝迁移至httpservice中,直接开始以Serverless模式对外提供服务。而服务中原有提供的高性能通讯协议如websocket,gRPC,同样可以通过httpservice对外提供。
 
 
  通过使用httpservice形态,用户无需理解容器、镜像,而是仍然同当前Serverless的使用模式一样,同使用云函数一样,通过提交已经开发完成的代码包,就可以开始对外提供服务。
 
 Serverless2.0上下游能力 
 
  Serverless2.0,关注的不仅仅是计算、开发模式、使用方式,而是要从更全面的角度来支持Serverless架构或应用的发展。通过协助开发者更好的使用产品、提供全流程的开发管理支持、运维监控、调试支持等,进行全方面的发力,真正去推动Serverless架构或应用的落地。
 
 
  工具建设
 
  为了协助开发者更好的进行开发、调试、上线、发布,腾讯云Serverless团队从多个方面入手,提供可以满足多种开发场景的相关工具或能力。
 
 
  通过提供命令行工具,我们可以在本地开发环境中实现项目创建、本地调试打包、一键部署上线
 
  而通过vscode插件以及正在持续扩展的更多开发IDE插件,函数的本地管理、开发调试、上线发布,可以通过开发IDE直接可视化操作。将函数的线上线下管理,与代码的编写调试,都整合在一个界面中完成。
 
  为了方便用户进行代码的调整或查看,我们也通过提供webide,可以在控制台上实时的开发调试,达到与本地开发调试的相同体验。
 
  针对已经进行了git托管的代码,团队增加了git对接能力;通过与用户git打通,以及依赖包的在线安装,提供了更简单的代码提交部署能力,进一步简化操作过程。
 
  DevOps
 
  在Serverless的DevOps方面,通过与coding.net的合作,我们提供了Serverless的DevOps方案。通过打通coding.net的DevOps平台,从项目创建开始,我们就可以进入完全适配Serverless的全管理流程中。
 
 
  无论是项目管理、需求管理、代码管理,还是CI持续集成、test测试管理、制品库管理、CD持续部署,Serverless架构应用都可以适配整个DevOps流程,协助用户构建完全云原生的ServerlessDevOps过程。
 
  而如果已有DevOps或CICD系统的用户,Serverless2.0也可以通过提供通用方案及工具,协助用户完成整合及融入,在已有流程中实现针对Serverless应用的适配。
 
  由于Serverless本身的平台调度、按需启动的特性,无法提供和虚拟机或容器类似的登录到环境、手工操作的能力。因此,在协助用户排障、保障运行的透明性方面,Serverless平台需要做的更多。
 
  运维监控
 
  除了通过对接云的日志服务和监控服务,支持基于日志和监控的多种查询、过滤、告警之外,我们还在规划更多为用户提升调试能力的工具建设,例如通过调用链追踪,可以跟踪请求的经过的各个产品、服务或函数;通过故障现场捕捉,可以抓取函数运行失败时的现场及事件,便于进一步分析代码故障;而应用性能分析,可以了解到函数内部的代码或模块性能,便于进一步提升应用性能。
 
 
  多种工具的建设,目标都是期望为客户提供更多的分析排障支持,提升运行的透明性,降低对于Serverless架构的运维担忧。
 
  技术能力
 
  回到产品实现的底层技术上,针对腾讯云Serverless2.0中提供的三种形态,目前采用了相同的技术架构,包括了微虚拟机、容器、调度平台等多种基础能力;通过采用相同底层能力,提供了高度的产品可扩展能力。
 
 
  在Serverless平台通常碰到的延迟性能方面,通过应用机器学习,预热,扩展策略等多种技术,极大的降低了冷启动。通过当前平台分析,目前97%的事件型函数启动延迟均低于200ms,对业务基本做到了极低感知,满足了各种场景的应用。
 
  多可用区、多集群、自动运维、平台监控技术的应用,进一步的在提升整体产品的可靠性及安全性。
 
 应用案例 
 
  2018年9月,由腾讯云和微信联合推出的小程序云开发解决方案,将Serverless概率推向了广大的国内小程序开发者,获得了大量的客户及使用。小程序云开发解决方案,通过整合腾讯云的对象存储,云数据库,云函数,形成了一套可以直接提供给最终开发者的解决方案,带来了一站式的开发体验。
 
 
  原有小程序开发过程中,针对后端服务,用户需要自行完成服务器搭建,存储选择,数据库配置、负载均衡配置等各种操作。
 
  而通过使用小程序云开发,用户可以直接获得开箱即用的云能力。存储、数据库、以及作为后台服务的函数,直接由小程序端发起调用,而无需自行管理通讯链路、业务扩缩、访问安全等问题。
 
  通过与小程序开发IDE整合,用户可以在IDE中同时完成小程序端,以及后端云函数的开发、调试、部署,以及文件存储、数据库的的管理工作,大大减轻了开发及管理工作量。小程序云开发为Serverless概念及应用在国内市场中的推广,起到了及其重要的作用。
 
  结 语  
 
  Serverless2.0在已有的事件触发函数的基础之上,根据实际的用户使用场景,进一步提供了面向HTTP场景的HTTPFunction和HTTPService,提供了高层次的通用开发框架,不仅更好的支持开发者面向WebService的开发诉求,也可以支持已有业务代码向Serverless架构的无缝迁移。
 
  在技术上,我们在控制流和数据流的模块、虚拟化层、网络层、调度层都做了彻底的重构优化,在安全,可用性,性能上也进行了全面升级。通用统一的底层架构通过采用轻量级虚拟化技术、VPCproxy转发方案等多种优化手段,以及针对实时自动扩缩容核心的能力优化,彻底规避了传统无服务器架构中,饱受诟病的冷启动问题。
 
  除此之外,Serverless2.0还关注开发者从本地开发、代码调试、到业务的持续集成、上线运维等整个软件开发生命周期。围绕着Serverless产品,腾讯云构建了全面的开发支持、DevOps、运维监控等能力,协助开发者可以更好的向Serverless架构迁移,为Serverless承载起企业核心业务奠定基石。
 
  去年腾讯云团队与微信小程序进行了深度合作,推出了小程序云开发Serverless服务,帮助企业和开发者快速构建小程序核心应用。我们相信,随着Serveless2.0的发展,无服务器不仅可以逐渐承载起企业核心业务,并且能帮助打通监控、Debug调试、DevOps等上下游生态,助力互联网和传统企业业务的快速建设与迭代。

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。