Serverless架构在IT行业蓄势待发,并非没有道理。尽管这是一个相对较新的技术,但已引起了广泛的关注。专家指出,Serverless架构具有缩短交付时间,改善操作和安全实践等功能,以及创造出一种革命性的付费模式——按资源消耗付费。Serverless从底层开始变革计算机资源的形态,为软件架构与应用服务部署带来新的设计思路。
你或许已经了解了Serverless架构,但它具体的生态系统是什么样的,开发者又如何利用Serverless快速进行应用落地……本文整理了Hello Serverless北京站的部分精彩内容,从Serverless架构设计的核心要点出发,为你解析Serverless开发,需要掌握的关键点。
腾讯云卢萌凯:一个工程师如何在2周内制作出用户过亿的小程序
随着小程序生态的逐渐繁荣,2019年将是小程序大爆发的一年。在公司人力不足的情况下,工程师怎样在极短的研发周期内,开发出一款支撑海量用户的小程序?腾讯云高级产品架构师卢萌凯以腾讯相册为例,现场分享了Serverless开发模式下,系统架构如何帮助用户实现高并发、负载均衡等,并保证系统的安全稳定。
据了解,腾讯相册团队初始阶段仅几位前端和后台开发,但目标是要支撑过千万的用户,且后台开发无法百分百能够投入到此项目,大部分时间要抽身支援其它项目,人力非常紧缺。此外,原有后台系统有不少历史包袱,在原有架构上做新的社交化功能开发是不现实的。
为了解决腾讯相册团队遇到的难题,腾讯云推荐了基于Serverless的小程序·云开发模式,通过提供较完整的云服务架构,简化小程序开发过程中复杂的后端操作,让开发者无需关心底层服务器资源部署运维,极大节约服务器架构搭建维护成本。基于云开发,腾讯相册团队用不到2周时间上线了第一版小程序。
小程序·云开发集成于小程序控制台的原生Serverless云服务,包括云函数、云数据库和云存储三大核心功能。
那么,如何利用云开发系统完成业务逻辑的开发呢?这里,以点赞评论和分享功能为例。
新增小程序评论、点赞等操作需要用户的鉴权信息,腾讯相册原有的后端服务架构太复杂,增加新功能非常困难。我们采用的解决方案是通过云函数的路由功能,在原有的相册服务端获取用户的鉴权信息,匹配原有后台服务,判断该用户在小程序端是否有权限进行敏感操作。
分享功能里,小程序码不能存太多信息,而二维码中包含了name, ownerid, page等大量信息,在某些机型上无法有效识别。在云函数中,可以通过调用微信生成小程序码的接口,将图片存储至云文件存储,获取临时图片URL。这样小程序码只需记下一个ID,具体信息存储在小程序云的数据库中,大大提升识别度大幅。
在传统的开发模式中,有三大功能小程序无法绕开后台的帮助:数据读取、文件管理、敏感逻辑的处理(如权限)。因此,在小程序端都必须发送请求到后台进行鉴权,并且处理相关的文件或者数据。如果用 Node 来搭建后端服务,基础架构搭建、后期运维需要耗费不少时间和精力。基于 Serverless 的云开发方式下,新开发的小程序后端与原有的后端服务互不冲突,可节省排期和联调的时间,提升开发效率,同时,只需在云函数中完成鉴权,即可打通原有的数据资源。
截止2018年12月,腾讯相册累计用户量突破 1亿,月活 1200万,阿拉丁指数排行Top30,已经成为小程序生态的重量级玩家。腾讯相册通过小程序和空间相册打通,实现了在小程序端的照片上传、下载、 分享好友、点赞、评论、生成小程序码等功能。
除了小程序跟Serverless深度结合之外,腾讯云还基于Serverless为企业和开发者们打造了一套无服务器执行环境(Serverless Cloud Function,SCF)。用户只需使用平台支持的语言编写核心代码并设置代码运行的条件,SCF平台就会根据触发器事件,完成代码运行环境的准备、调度、触发,执行、扩容。
据介绍,SCF已经可以成熟应用于 Web 服务、Websocket、 消息处理/流事件处理、 对象存储COS回调等多个场景当中。感兴趣的读者可以点击阅读原文
了解详情!
腾讯云李晓慧:使用DBaaS打造热门应用
随着DataBaaS Serverless服务的兴起和发展,用户不需要关注数据库实例及其扩展,能够将精力用来创造更多的业务价值。腾讯云数据库MongoDB产品负责人李晓慧,现场就DBaaS服务如何帮助用户构建高并发、安全、稳定的应用主题进行了深入浅出的分享。
李晓慧认为,当前用户业务绕不开两大问题:高昂的成本以及糟糕的敏捷性。因为在产品初期,数据库实例的使用率不会很高,但需要有专门的DBA来运维,且研发需要学习数据库的使用,因此数据库使用的学习成本和人力成本就上来了,这对系统的敏捷性有非常大的伤害。而DBaas的意义,就是解决系统的敏捷性和成本问题。
DBaaS是一种允许用户通过使用自助服务供应框架从预定义的服务目录中进行请求的数据库服 务。其主要优势是敏捷性,通过资源池来提供服务可以针对用户跟踪计算成本并对其收费,并降 低成本。DBaaS具备五大能力:
随后,李晓慧分享了腾讯云DaaS团队基于现有大用户服务的一些优化经验,第一点是DBaaS提供的一种资源池化技术,分热池和冷池,这个池子对用户无感知,用户只需要使用服务,池子有后台的紧密监控,发现用户的数据、服务变得很热之后系统会做迁移,把上面热服务迁走,这里用户是无感知的,同时假如其他的用户很久不再访问,这里会有一个冷池子,专门存储用户的冷环境。这样设计,能够使资源利用最大化。
第二个的是在服务游戏用户时,游戏用户请求业务量高峰来临,业务在高请求、高并发的时候,会进行很频繁的操作,此时大量的无任务请求可能会被锁住。系统在这里做了一个优化,我们提出了一个读快照的特性,通过读快照功能,避免读操作在高并发读写时被锁住,进而提高服务的吞吐量。通过下图可以看到,业务量大的时候,系统性能提升还是非常明显的。
腾讯云DBaaS服务的适用非常广泛,包括文章及日志服务、相册服务、游戏类服务以及电商类服务等。后续,DBaaS服务会陆续完善触发器功能,并与云函数一起,在公有云控制台上将这些功能展示出来,为大家提供更好的创建服务。
竹间科技朱峰:从 MVC 到 FaaS,如何开发企业级 FaaS 应用
简单心理是从去年第三季度开始尝试 Serverless 的,今年正式全面转向 Serverless 架构,用了大约半年的时间,摸索出一整套企业级 Serverless 应用框架。竹间科技技术负责人朱峰现场从什么是 FaaS、为什么使用 FaaS以及如何使用 FaaS三个方面分享了简单心理从 MVC 到 FaaS的研发历程。
Serverless 按照托管的对象来区分,有两个子集。一个是函数托管服务,也就是 FaaS(Function as a Service)。一个是应用托管服务,通常被称为 PaaS(Platform as a Service)。FaaS 是专指 Serverless 服务中的函数服务,开发者只需上传函数,剩下由服务商来负责按需执行和横向扩容等事情。目前大多数云服务商提供的 Serverless 服务都是 FaaS 服务,比如腾讯云的云函数,PaaS 主要的服务商是 Google 的 App Engine。
那么比起单体应用、微服务架构等,FaaS 架构的优势究竟在哪里呢?朱峰从三个层面进行了总结:
在FaaS的使用方面,朱峰分别从知识储备、框架以及命令行三个维度进行了深度分享。
腾讯云李艳博:无服务器云函数网络架构演变
最后分享的是腾讯云高级工程师李艳博,李艳博从Serverless的定义、Serverless传统网络架构以及云函数新网络架构三个方面分享了腾讯云无服务器云函数网络架构演变。
云函数即用户将业务代码委托给平台,配置事件触发方式。平台根据触发器事件,完成运行环境的初始化、网络的打通、代码的执行和扩容操作。
网络需求分两大类,第一类是访问公网,例如通过公网访问自己的数据中心;另外一类需求是访问VPC,VPC是云上逻辑隔离的网络空间。访问公网的需求中,有一类特殊需求是固定公网出口IP,例如客户通过公网访问存有敏感数据的数据时,需要限定来源IP,提高访问安全性。传统网络架构中,对无需固定IP访问公网已经有比较好的支持,但是对访问VPC和固定IP访问公网的场景支持上还有一些不足。
客户的函数是部署在一个SCF集群里,集群本身位于一个VPC中,在VPC内配置了NAT网关,函数访问公网时统一由NAT网关转发。传统网络架构下对于无需固定IP访问公网的场景已经有比较好的支持。因为传统架构下单个NAT网关配置了多个EIP,因此无法支持固定一个出口IP的目的。对于将NAT网关上的所有IP组添加到外部API的IP白名单的做法,存在两个问题,一个是IP组由所有客户函数共享,存在安全问题。另外一个是随着集群规模增大IP组会配置更多IP,存在扩展性问题。
传统架构下访问VPC是通过在容器内创建到客户VPC的弹性网卡实现的。由于创建弹性网卡是个比较重的流程,耗时比较长,存在冷启动问题。另外运行函数时候,可能分配不到弹性网卡对应的IP资源导致函数运行失败。
传统架构下固定IP访问公网是在访问VPC的基础上实现的,通过在客户的VPC内配置NAT网关实现固定IP访问公网。这种架构一方配置复杂,另外一方面是成本问题。NAT网关除收取流量费外,还有固定的资源占用费,每个月最便宜也要三百多。
在新架构下,函数要访问VPC时,首先从云函数到主备容灾的Proxy,再从Proxy到客户的VPC。新架构下,在运行函数时只需要配置代理的参数,新架构下冷启动,相比旧的架构,时间从秒级下降到毫秒级。另外是资源占用的问题,新架构下从客户VPC内分配两个弹性网卡,在创建函数时把这些资源分配好,运行函数的时,不会存在因为创建弹性网卡失败导致IP资源不足,进而导致函数运行失败,下图是新架构下访问VPC的整体设计。
固定IP访问公网的设计,和访问VPC是类似的,变化点有三个,第一点是不再需要创建到客户VPC的弹性网卡;第二点是在HAVIP上绑定一个EIP,客户函数访问公网时,流量会先转发到Proxy,Proxy再以EIP访问公网;最后一个变化在访问VPC的时候,是单个客户独享一对主备Proxy,固定IP访问公网是多个客户共享的,在一个弹性网卡上绑定多个HAVIP,每个HAVIP绑定一个EIP。下图是新架构下固定IP访问公网的设计。
总体而言,新架构无需固定IP访问公网的网络拓扑和网络功能与传统架构完全一致,是传统架构中继承过来的。访问VPC有两个优化,第一是冷启动的优化,第二是节约VPC内的资源;最后固定IP访问公网的场景主要有两点优化,第一成本降低,第二配置简单。
本文分享自 ServerlessCloudNative 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!