云原生

关于Serverless的一些想法

2020-08-19  本文已影响0人  SimpleBob

背景:

参加国内某公有云的面试,记录一些对Serverless的想法。故记录。

关于Serverless发展的思考

                                                                                                          --XX Serverless团队面试的总结

                                                                                                                                    2020.08.1120:24

我们卖的不是产品,也不是项目。我们是在卖平台服务。

       不管是AWS,Google Cloud, Tencent 云,阿里云,这些优秀的公有云供应商汇聚了来自各个行业优秀的精英。公有云时代,我们是平台服务商,本质上卖的是平台和服务,而不是单一的产品或者单一的业务项目。这个阶段意味着:我们可以不赚钱地为客户做产品,做项目,但是最终希望看到客户大规模,高粘度地使用我们的平台服务,从而增加客户账户在平台上的用量。在处理行业头部客户和标杆项目时,为解决具体的业务问题,甚至需要统筹协调多个团队资源,不计成本的攻坚行业难题,形成业务和技术的壁垒。所以我们甚至可以亏本为客户做项目,做产品;但是长远来看,我们是要提高客户在平台上的用量。以始为终,牢记我们是平台厂商,那作为平台厂商,我们应该把工作聚焦在哪里呢?

要聚焦与客户业务价值深度绑定的云服务

假设您是一位CTO/CIO,负责公司所有的IT规划和研发团队。公司现在是个已成规模并依然茁壮成长的头部玩家。因为前期公司业务增长迅猛,团队绝大多数的业务都直接架构在云虚拟机上。在了解腾讯云产品后,您从腾讯云购买了10,000台标准型S2的1核2G服务器,搭配150G硬盘。购买后,交由团队根据自己的业务去使用这些虚拟机,包括安装部署各类应用。您只需要每月支付100W的账单。

半年后,另一家云供应商的销售找到您,承诺可以交付给您性能好一倍的虚拟机,每月费用只需要65W的同时提供免费的迁移服务,并承诺每年固定的折扣。您愿意更换云厂商吗?

客户答案是肯定的。一个年用量千万级别的客户就这样流失了。问题出在哪里?因为我们销售的云服务(虚拟机)没有深度地与客户业务绑定,所以我们的云服务容易轻易地被取代,从而导致客户流失。我们应该协同销售和解决方案团队,深刻理解客户业务场景,尽可能将业务场景与腾讯云产品结合起来,形成定高度绑定的解决方案。让腾讯云特有的产品去支撑客户的业务价值。那么哪些产品,哪些场景能够让业务与技术深度绑定呢?

Serverless能深度绑定业务,是一把云供应商谈客户的钢刀

从商业的角度来看,Serverless技术能够:

    1.帮助客户降低IT运营成本。传统部署需要预先对峰值流量进行估值,实际有效的使用时间只有5%-15%。而使用Serverless的客户,只需要Pay As You Go。这对于小型创业团队(无法支付高额运营成本),或者有峰值流量场景的客户(无需按峰值部署资源),简直就是福音。

    2.优秀的自动伸缩能力。借助云供应商强大的专业能力,Serverless服务能够根据来访流量进行平稳的扩容。每个独立的业务请求,会在后台启动实例,并进行响应。将业务层需要考虑的高并发问题下沉到了IaaS层去处理。毕竟专业的事,可以交给的云厂商去做,云厂商拥有足够的资源应对各类业务场景。。

    3.简单部署。Serverless的技术特点让开发人员只专注业务,省去了系统其他维度的设计。让运维人员专注于运营指标,省去了繁琐的部署和反复推敲的IT资源规划。

    不知您有没有发现,以上三个特点分别是从公司决策层公司业务架构师公司IT研发运维团队三个维度进行描述的。对于运营成本一直是决策层关注的指标,而Serverless能顾帮助公司降低极大的运营成本;业务架构师常常需要分析各类繁琐的业务,抽丝剥茧后才能勉强进行系统的调优,而借助Serverless强大的伸缩能力,在不改变业务架构的情况下就能应对高并发场景;开发工程师则是时常把“我只关心写代码,部署上线的事找运维”挂嘴边,现在他们真的好像美梦成真了,不再担心产品部署上线的事,专注于借助Serverless技术处理复杂的业务逻辑。最关键的是,相比于云服务器,serverless是高度绑定客户的业务流水线的。所以,Serverless是一个服务“普惠大众”的云原生服务,它能解决客户公司不同角色的根本痛点。值得关注的是: 云函数这类服务,因为标准不统一,所以导致两平台之间的迁移会有很大的困难和成本。这就意味着:凭借天然的优势,Serverless服务可以更好地落地交付并能锁住客户。待客户业务与服务绑定后,客户自然会优先选择同一家云厂商的其他BaaS.那现实情况是不是这样呢,客户在选择或者使用Serverless服务的时候会担忧什么呢,又会在意什么呢?

客户面临的Serverless问题&& XX是怎么解决的?

客户在使用Serverless时,会在意:

1.云函数带来的冷启动问题。需要拉取镜像,建立实例,连接数据库等。

2.开发人员本地调试难度大,需要频繁上传代码。

3.国内个人开发者,创业工作室想快速尝试Serverless。

针对云函数的冷启动问题,不得不提到AWS。AWS最新的解决方案是通过FireCracker进行lambda实例的调优。这个解决方案的本质是,AWS原厂进行了KVM虚拟机的调优,让硬件设备能够在几分之一秒内启动轻量级的虚拟机,也叫MicroVM。MicroVM 是被反复裁剪后的VM,在保证了线程安全的基础上提高了VM启动速度。现在Lambda和Farget都使用了这项新技术。而腾讯在这一块也是一直在持续发力,包括容器预创建技术,热点代码缓存技术,复用技术(容器复用,函数使用后,不急着销毁)等。就现阶段各种高并发测试结果来看,云函数在高并发下的表现,比普通服务器服务要有性能优势。

对于Serverless开发,腾讯提供支持了VS

code的serverless插件。但是最主要的当然是Serverless这个工具。腾讯云在serverless工具上面有大量的模版和用例,方便开发者分钟级别部署资源和服务,同时serverless也支持其他云厂商的部署。在生态建设上,AWS Lambda则是有官方的SAM,和开源社区的Zappa。但是都只支持AWS,对其他云厂商不是很友好。反观腾讯的Serverless团队,则在serverless开源社区一直活跃。

由于法律问题,AWS的服务落地中国区的速度一直慢于研发速度。AWS全球的服务有200+,而中国区现在只有50+。同时,严苛的法律问题也让AWS不得不将国内的个人开发者,小型创业工作室挡在门外。AWS国内账户必须提供公司营业执照;使用Web服务则需要公司备案。对于个人开发者,想要尝试APIGateway + Lambda调试小demo则只能选择国外区了。而反观腾讯,则巧妙的避开的了类似的问题,方便了国内客户。我们自然知道对于网站和小程序这类后端开发,云函数天然适合。那还有什么场景是适合Serverless服务的呢?或者能帮助我们快速定位下游客户的场景?

Serverless适用场景:异步高并发,无状态,周期性调用

     数据EFTL服务(符合无状态特征)

              场景1:证券厂商每12小时分析Top5的交易品种

              场景2:电商分析每日秒杀活动的错误日志

              场景3:智能客服机器人

              场景4:车牌识别系统

    网站/小程序服务(符合异步高并发)

              场景1:秒杀抢购活动

              场景2:在线OJ刷题,比赛时高并发

场景3:UI测试(之后面试我会详细介绍)

    物联网/监控场景 (符合无状态和周期性调用)

              场景1:智能音响

              场景2:监控阀门(之后面试我会详细介绍)

              场景3:接口健康监控,kafka topic检测

       符合以上任何一个特征的场景,都可以考虑用Serverless。为什么要加考虑二字呢?因为类似云函数的实际适用场景还有有前提条件的。

Serverless的一些场景筛选

       我们设想:

       场景1:

       一个开成立的开发团队,需要开发一个小程序快速上线,赶在节假日进行抢购活动。开发人手有限,资源有限,时间有限的情况下,选择serverless的云函数来做搭建是最合适的方式。因为不涉及原来逻辑的改造,并且还能加快研发速度

       场景2:

       一个微信商场已经运营了4年,会员体系复杂,业务逻辑繁琐,涉及多个部门,多个数据,多个服务。这个时候如果客户遇到性能问题,虽然serverless的云函数可以做到快速扩容,但是专业的建议是:尽量不改动客户的应用逻辑,尽量通过k8s等容器编排系统提高应用负载能力

所以对于新生业务,适用云函数;对于旧业务,改造serverless应用的成本相对较大,需要审慎地评估后确定。不能一味地推荐客户使用serverless服务。

       场景3:

       如果有一台server,每个时段被均匀地访问,那它应该选择serverless技术吗? 至少Serverless的两大特点:快速扩容和成本节省被浪费掉了。回到Serverless的技术特点,它是基于事件驱动,针对一定时间范围内,不可预测数量的突发事件有着天然的优势。但是对于均匀分布,总量可预测的事件,按需分配服务器并不是坏选择。

上一篇 下一篇

猜你喜欢

热点阅读