对于中小型互联网创业公司来说,在技术人员紧缺的前提下,如果设计系统时需要考虑诸多例如Web应用服务器如何配置、数据库如何配置、消息服务中间件如何搭建等技术问题,那对于他们来说人员成本、系统维护成本会很高。

\\

Serverless架构应时而生,可能会大幅度改善上面提到的问题。2014年Serverless架构进入大众视线,业界普遍认为,Serverless化可大幅降低IT成本,将云的费用减少10%-90%,同时还能提高服务部署效率。

\\

2017年6月腾讯云+未来深圳峰会上,腾讯云技术专家 黄文俊 在开发者论坛分享了腾讯Serverless无服务器架构最佳实践的技术内容,而且腾讯云无服务器云函数(Serverless Cloud Function)也在4月份全国首发,正式推出了Serverless产品。InfoQ有幸采访到黄文俊,请他从Serverless架构、FaaS和微服务等角度来解答一些读者比较感兴趣的话题,内容整理如下。

\\

Serverless发展之现状

\\

在整个业界,大家公认为2014年年底 AWS 推出 Lambda 产品即标志着 Serverless 发展的开端。2016年 Google Cloud Function 和微软 Azure Function 这两款产品的商业化,标志着Serverless 这个产品或者服务达到了成熟期。另外在开源领域,其实还有OpenWhisk、OpenLambda、Serverless framework、Iron.io等项目,这些开源项目发展的也都很迅速。腾讯云在今年4月底正式推出了 FaaS 产品,即无服务云函数。这个产品可以简化用户运维成本,只需要上传代码就可以开发运行,利用腾讯云的全球基础设施帮助客户实现伸缩,降低用户的计算成本。

\\

腾讯云Serverless服务,千呼万唤始出来

\\

Serverless的诞生需要两大因素:一是云产品和整个生态环境的成熟;二是客户提出了实际落地的需求。腾讯云本身拥有丰富的云产品,包括监控、日志、存储、数据库、缓存、消息队列、安全等足够成熟的云产品和服务,它们作为后端服务为云函数提供了有力支撑。同时,腾讯云越来越多的客户提出了需要用云函数产品来解决按需使用、节省费用、简化管理、快速开发的问题。

\\

传统企业在这个过程中需求最强烈,因为他们的产品形态和应用场景更需要通过无服务技术来解决问题:一是定时任务的数据采集、收集、汇聚、计算,实时数据的收集、汇聚、计算和展示,再就是多媒体和图片的转换、优化、美化、分析、抽取,还有部分客户使用云函数进行后端服务或者后端业务的封装和开发,这都是比较典型的无服务计算的应用场景。

\\

正是在这种需求的强烈推动下,腾讯云推出了Serverless服务。

\\

其实很多初创团队和传统企业为了减少运维成本和人力成本,都会采用第三方的CI/CD服务,而Serverless服务在一定程度上也是可以解决初创团队在这方面的需求的。

\\

腾讯云Serverless:三年磨一剑

\\

2014年Serverless发展到现在,这三年里腾讯云做了哪些研发准备,经历了哪些测试阶段?效果如何呢?黄文俊说到,研发准备阶段可以分为两方面:一是底层,二是生态。

\\

从底层来说,需要对资源调度能力不断提升,原有的资源调度粒度较粗,需要提升到更细粒度的资源控制能力;再就是需要做到对用户或者租户更好的隔离,确保函数或数据安全;另外对于屏蔽硬件差异、计算能力动态校正和运行调度平台优化上都做了很多基础能力的提升。从生态上来说,这几年,腾讯云推出了各种云化服务和产品,像对象存储、云数据库、分布式数据库、云缓存和消息队列等,在一定程度上也是对Serverless产品的推出打下了基础。

\\

Serverless和原有的云服务器相比,它的最明显特点就是调度粒度已经细到了函数级别。而且,Serverless天生具有事件触发的属性,对于web服务来说,原有的云服务器,在没有客户访问的时候也需要维持最低的资源消耗;在遇到高并发量、高请求量的时候,则需要弹性伸缩;而Serverless的弹性完全是取决于用户的请求数,没有用户请求的时候没有函数运行,在有高峰来临的时候,相应的弹性也完全适配用户的访问。这个弹性并发数在理论上是没有最高峰值的,而从实际出发,腾讯云为了防止用户超费用、超流量的情况,而做了一些安全策略,有相应的应用防护、流量监控、并发流控的策略。

\\

如何区分FaaS、PaaS和Serverless

\\

Serverless可以说是一种流程、一种工具或是一种架构,而FaaS属于Serverless的子集。Serverless 包含了 FaaS、BaaS这两个概念,FaaS即Function as a Service 函数即服务,BaaS即Backend as a Service 后端即服务。FaaS是云化的函数,把函数放到云端,通过云进行函数级别的调度、弹性;BaaS指的是各种云化的产品和服务,云存储、云数据库、云监控、云告警,都可以囊括在BaaS里面。而PaaS,更多考虑的是提供一个通用平台,把平台提供给用户使用,用户自己去完成计算资源的分配、调度、扩缩容等工作。

\\

黄文俊在这里进一步介绍了FaaS,实际上这个函数是用户自身的一段业务代码,这段业务代码由事件触发,而支持的事件有很多种,最简单的,例如和对象存储对接之后,某个数据文件的上传即可触发函数执行,对文件进行分析,分析之后的结果,可以再次写到对象存储中或者云数据库里。发事件来源有很多种,包括对象存储里面的各种事件、前端HTTP请求、消息队列里的消息,甚至是监控中某个事件告警,均可以用来触发函数的执行。总的来说,FaaS在云里就像粘合剂,把各个云产品或者服务连接在一起,形成一个链条,或类似IFTTT的服务。

\\

FaaS的诞生场景也是为了满足客户不同的需求,从整个云的发展历史来看,最开始的物理机,完全没有弹性能力,或者弹性周期很长,要经历采购、到货、部署上线;再到后来的云服务器,实现了粗粒度的弹性,可以立即申请,立即使用,不再使用时可以立即释放;到容器时,弹性能力就更细了,每个运行的容器都可以弹性伸缩,跨云调度;而到了Serverless,弹性的能力到了函数级别,细到执行的某段代码都可以进行弹性;所以整个云的发展,就是计算能力的粒度细化,同时弹性能力的增强,因此可以说 FaaS 是云发展的必经之路。

\\

Serverless给运维带来的“冲击”不可小觑

\\

有人说Serverless并不等于没有运维,Serverless接下来在发展过程中肯定会给运维带来冲击,对于这一点,黄文俊则解释道,Serverless也需要运维,只不过不像维护传统的服务器或者自己安装的数据库那样去运维。

\\

黄文俊觉得Serverless的运维需要在以下四点有所提升,一是云化运维,要充分运用云上的各种运维产品,包括云日志、监控、告警、短信平台的对接,甚至微信的消息,还可以运用云函数本身来进行运维工作,利用这些工具来搭建和使用运维平台。二是业务运维,不仅要做普通的运维工作,还要从业务角度来去进行更深入的查看,分析业务瓶颈。三是充分利用原有能力的组合,尤其是在新业务开发过程中,如何通过原有的函数组合和模块组合实现功能。四是业务函数或者模块如何进行复杂调用的跟踪和分析。对于这种云化的环境,DevOps优势体现需要更明显,开发和运维都要DevOps,开发和运维两者需要结合得更紧密,两者作为一个团队来负责一个产品或服务的生命周期,两者需要通力合作,对整个产品或服务完整的生命周期持续跟踪、改进。

\\

讲了这么多内容,也许有人会问,这是减轻了运维人员工作量还是增加运维人员的工作量了呢?其实这并不是减轻或增加工作量的问题,黄文俊说,要从全新的角度看待运维,而不是做好传统的服务器或数据库运维工作就行,而是需要提升自己,从业务层面甚至是决策层面来看待平台和整个业务。

\\

微服务会大面积迁移到Serverless上?

\\

微服务和Serverless是比较切合的,都会强调系统的解耦,未来将微服务迁移到Serverless有可能是顺理成章或者很容易的事情,对于这一点,黄文俊认为,微服务也是最近两年才开始火起来的,Serverless和微服务天生都是服务属性。从微服务到Serverless的迁移过程中,还需要对微服务模块更细的拆解,拆解到函数级别,而每个函数就是最简功能,有可能就是微服务里的某个功能点。在拆解过程中,除了服务拆解、功能拆解、函数拆解,对开发者来说,还需要提升其他方面的能力,包括开发管理、上线管理、CI/CD流程,上线之后的版本管理,调用跟踪和bug跟踪等。另外,在转移到Serverless上时还需要考虑服务的安全性,包括应用安全,数据安全。腾讯云在这方面会不断的提升产品能力,协助客户转移到Serverless之后能更容易、更安全,更方便的实现业务或功能。

\\

目前,已经有些公司尝试用Serverless,甚至把Serverless服务用于生产环境里面,还专门成立了Serverless部门,这是不是就代表着Serverless的未来更受欢迎?对于这一点,黄文俊也是认可的。实际上,Serverless作为一套细粒度的标准化计算框架,代表着一种全新的计算提供能力,类似原有的云服务器、容器,都是以计算能力的形式提供,Serverless未来会成为和云服务器、容器一样成为计算提供方式的一种,并且会持续演进。目前来看,Serverless还处在发展早期,各个云厂家都有其各自的产品形态,在业界还没有形成Serverless的统一标准,因此这个行业还会持续发展和演进。

\\

至于这个标准的建立,黄文俊说,不可能是某一个公司独立掌控,而是需要社区共同参与讨论、碰撞才会逐渐形成一些标准,而且这个标准对广大开发者是有好处的,可以帮助开发者脱离行业或者供应商的业务绑定,让函数在一定标准下任意在云端迁移,同时这种标准的推出也能够促使更多开发者转移到Serverless上来。

\\

如果时机成熟的话,腾讯云也会回报社区,开源更多的计算接口标准或者计算实现方式,在Serverless上做一定的开源探索和尝试。

\\

初创团队如何拥抱Serverless?

\\

初创团队使用Serverless需要从两个角度来评估,业务架构角度和开发运维角度。

\\

业务架构角度包含三点:

\\

  • 一是微服务化,首先进行业务拆分,然后服务拆分,拆分之后进行云函数的设计。\\t
  • 二是提升组装能力,拆分之后再进行组装,能够通过各个服务模块、云函数、后端服务例如云数据库、云缓存、对象存储等,组装出新的业务。\\t
  • 三是利用Serverless,业务快速上线和快速迭代,加快反馈速度,加快业务调整速度。\

从开发和运维的角度来说,DevOps是最优的发展方向:

\\

  • 一是做好CI/CD,配置管理,实现 X as Code。\\t
  • 二是运维方面要进行云集成和云能力的探索,充分利用云监控、云日志、告警事件来提升运维能力。\\t
  • 三是提升整个团队的跨界思考能力,开发在最初写代码的时候就要考虑到维护性、安全性,资源利用和费用支出;运维人员要从业务场景、业务瓶颈、业务配置角度提升运维能力。\

对于初创团队来说一开始推行微服务架构是最合适的,因为他们没有历史包袱,能够直接利用云函数和后端服务计算,直接打造整个云化业务,充分利用云计算能力,来节省宝贵人力,加快业务发展,快速迭代、快速反馈。

\\

感谢薛梁对本文的策划和审校。

\\

嘉宾介绍:

\\

黄文俊,腾讯云技术专家。拥有多年企业级系统开发和架构工作经验,研究方向为企业级存储、容器平台、云计算;关注于微服务设计思考,开发流程优化,容器技术应用等领域。

姗姗来迟的Serverless如何助力微服务和DevOps相关推荐

  1. 都 2021 年了,Serverless 能取代微服务吗?

    简介: 马上就要 2021 年了,Serverless 是否终将取代微服务?从微服务到 Serverless 需要经过怎样的路径?本文将对 Serverless 与微服务在优势劣势上进行深度对比. 来 ...

  2. 知乎高赞:Serverless 能取代微服务吗?

    编译| OrangeJ 作者| Mariliis Retter "Serverless 能取代微服务吗?" 这是知乎上 Serverless 分类的高热话题. 有人说微服务与 Se ...

  3. Serverless 实战 —— ​​​​​​​与微服务一脉相承,Serverless适用何种场景?会带来哪些冲击?

    Serverless 实战 -- 与微服务一脉相承,Serverless适用何种场景?会带来哪些冲击? Serverless 架构用来描述那些显著或完全依赖于第三方应用或服务("在云端&qu ...

  4. 微服务、DevOps…不是效率银弹,请同时升级你的管理方式

    " 对于正处于创业期的互联网公司来说,研发效率就是生命线.员工人数的增加并不等于公司在变好,一家没有效率的创业公司,将以最快的方式死去." 在互联网快速发展的这些年,软件工程的协同 ...

  5. docker的文件流处理_迁移到微服务与DevOps,微服务和Docker容器的全面实用指南

    迁移到微服务与DevOps,改变软件开发效能! 一如既往,技术行业正处于巨大的转变之中,物联网.软件定义网络以及软件即服务(SaaS)仅为其中几例.由于这些创新,对能够改进应用开发和部署过程的平台和架 ...

  6. 一文了解四种软件架构:Serverless架构、微服务架构、分布式架构、单体架构

    如果一个软件开发人员,不了解软件架构的演进,会制约技术的选型和开发人员的生存.晋升空间.这里我列举了目前主要的四种软件架构以及他们的优缺点,希望能够帮助软件开发人员拓展知识面. 一.单体架构 单体架构 ...

  7. 是时候转型 Serverless 来玩微服务了吗?

    2021阿里巴巴研发效能峰会来啦 6.23-6.24线上直播 阿里巴巴合伙人&资深技术专家. IBM 副合伙人. 德勤云服务首席架构师. PMI 业务副总裁. eBay 应用研究员 近 30 ...

  8. Serverless 下的微服务实践

    作者 | 弈川 微服务架构介绍 微服务架构诞生背景 在互联网早期即 Web 1.0 的时代,当时流行的是单体应用,研发团队比较小,主要是外部网页,然后新闻门户等:到了新世纪的互联网时期 Web 2.0 ...

  9. 如何通过 Serverless 提高 Java 微服务治理效率?

    作者 | 王科怀(行松) 来源 | 阿里巴巴云原生公众号 微服务治理面临的挑战 在业务初期,因人手有限,想要快速开发并上线产品,很多团队使用单体的架构来开发.但是随着公司的发展,会不断往系统里面添加新 ...

最新文章

  1. java 多线程 原子操作_线程安全之原子操作
  2. Apache将整合Google Wave功能
  3. *1408素数回文数的个数
  4. 基于 ELK Stack 和 Spark Streaming 的日志处理平台设计与实现
  5. wxpython实现界面跳转
  6. webpack打包优化之外部扩展externals的实际应用
  7. ZH奶酪:编程语言入门经典100例【Python版】
  8. Eric的日期选择下拉列表小控件
  9. SSH登录到远程linux机器并执行命令
  10. java 铁路管理信息系统_基于Java铁路售票系统的设计与实现(含录像)(SqlServer)
  11. 移动边缘计算卸载技术笔记(一)
  12. 在windows下编译gmplib并使用vs2010成功调用
  13. ps2023最新调色滤镜插件exposure图片后期处理工具
  14. 校园网下,虚拟机IP与主机IP不一致及nfs挂载
  15. 利用python将txt文本批量转化为excel格式文件
  16. 大行bya412和java513_转:我的折叠生活之大行bya412改装总结
  17. MPEG-4标准定义的音频压缩格式AAC详解
  18. 能不用事务就尽量别用
  19. 【R语言文本挖掘】:n-grams和相关性计算
  20. 【数字信号处理】线性常系数差分方程 ( 使用递推解法求解 “ 线性常系数差分方程 “ | “ 线性常系数差分方程 “ 初始条件的重要性 )

热门文章

  1. 人群运动--Scene-Independent Group Profiling in Crowd
  2. C++ 调试技术:addr2line
  3. LeetCode 905 Sort Array By Parity--Java stream,Python lambda表达式一行 解法
  4. oracle中key,mysql中的key在oracle中是什么
  5. java超级点击器是怎么实现的_超萌新级的Java学习心得——简单监听器
  6. 李艳芳北京应用物理与计算机,太赫兹量子级联激光器有源区增益分析和设计-太赫兹科学与电子信息.PDF...
  7. C++——运算符重载operator
  8. 把ct图像像素值转化为_数字图像概论与基础
  9. 计算机信息技术在教学中的发展,浅析计算机在信息技术教学中的应用
  10. 怎么将文件转换成linux文件,Linux将DOS文件格式转换成UNIX文件格式的方法