成本节省 50%,10 人团队使用函数计算开发 wolai 在线文档应用

简介:人们关注 wolai 独特的功能和舒适的用户的用户体验,更关注实现这些背后的技术架构。在一个晴朗下午,我们邀请了 wolai.com 的创始人马锐拉,跟我们聊聊 wolai 背后的 Serverless 架构。

作者:马锐拉 | wolai.com 创始人

我们的日常工作场景几乎离不开“云文档”。目前,人们对于文档的需求再不仅仅是简单的记录,而扩展到办公协同、信息组织、知识分享等。在国内众多在线文档中,wolai 因为功能新、迭代快、流畅的异地协同体验、高效的信息组织方式以及“信息块”信息整合等特点,作为一个独特的存在进入了人们的视线。人们关注 wolai 独特的功能和舒适的用户的用户体验,更关注实现这些背后的技术架构。在一个晴朗下午,我们邀请了 wolai.com 的创始人马锐拉,跟我们聊聊 wolai 背后的 Serverless 架构。

我为什么选择 Serverless 架构?

在做 「 wolai 」这款产品之初,我们就希望把架构彻底放到 Serverless 上。因此在技术选型阶段,对国内外几款 Serverless 产品进行了细致的调研,我们发现阿里云函数计算(FC)无论在支持上和整体解决方案上,优势都非常突出,并且跟我们的需求非常匹配,因此,我们决定选择 Serverless 架构,全面使用阿里云函数计算(FC)。

作为一个办公协同应用,wolai 具备多人同时在线编辑文档功能。要实现这个功能,一个非常稳定的 Web 服务接口和一个具备伸缩能力、支持高并发写入、读取分离的分布式数据库是非常重要的。因此当我们发现 Serverless 产品能够与分布式数据库进行很好的搭配,就初步确认了 wolai 的主体架构。

接下来我们开始在阿里云上验证使用阿里云函数计算(FC)的可行性。通过验证发现阿里云函数计算(FC)不光能帮助我们解决上述问题,还可以帮助我们大幅度节省人力成本和云资源使用成本的投入。

以一家初创公司为例,聊聊函数计算

接下来我想聊聊,为什么在创立公司之初,我会坚持选择 Serverless 架构。我曾在一家支付公司工作,所以我以一家比较典型的支付公司来举例说明。

不可避免的流量伸缩问题

假设你创立了一家支付公司,它的背后差不多需要 200 多个系统支撑,如果这些系统大部分都基于 Java ,这就意味着支付业务背后的机器是一台一台的集群,每一次发布研发都需要对这些集群进行分组,然后逐个上下线,这需要耗费巨大人力成本。

除了集群分组,研发们还需要关注缓存、日志系统等中间的各个系统是否有瓶颈。一旦发生问题,就需要在整个运维系统上花费巨大的精力去解决。随着公司的发展,你的这家公司的服务量级终于上升了,这时候你又会发现成本也随之大幅度上升了,比如需要部署新的机器,需要花费很多时间去做计算的伸缩工作(确切的说只是“伸”,根本就没有办法去“缩”,对不对?)所以流量伸缩问题会是你遇到的第一个问题,同时也是不可避免的问题。

流量的波峰波谷问题

接下来,你还会遇到流量的波峰波谷问题。由于支付请求在晚上比较少,而在白天或大促、秒杀期间,支付请求的并发数可能会特别高。如果大批流量在同一时间涌进来,你就需要迅速拨计算资源过去,这需要做非常多的运维工作。

对一家刚创建不久的公司来说,你很难把大量的精力放在运维服务器上。而这时候你可以选择 Serverless ,它能够帮助你解决上述这些问题。你可以把运维服务器的工作放心的“丢”给 Serverless,而你真正需要关注的只有自己的业务逻辑。

我可以只关注代码和客户的需要

过去我们做 Web 服务,开发的工作重点在于在 web 服务器上做各种优化,其实这些工作都是在解决一个问题:当量级上去之后,服务器性能能不能抗住?如果不能要怎样做优化?开发者们做 Nginx 性能调优、负载均衡、反向代理等繁杂的优化工作,耗费了大量的时间,而当我们使用了函数计算之后,相当于把一大部分调优web 服务器的工作去掉了,这极大的节省了人力成本,提高了效率。使用函数计算之后,整个服务从开发到上线过程中,研发可以把绝大部分精力都放在业务代码上,无需关心服务本身是怎么稳定运行的。

自 2020 年 6 月 15 号业务上线以来,我们从来没有遇到服务 down 掉或者是需要下线维护的问题,而这些问题是使用函数计算前的常见问题。以往一旦遇到这样的问题,我们需要耗费很长时间寻找发生问题的原因,可能需要升级 Web 服务,加几台机器,甚至做反向代理和负载均衡……即使这些工作全部做完,再上线的服务还是会有维护时段,我们依然很难做到服务持续在线上。因此函数计算对我来说很重要的一个功能点就是持续服务的能力,通过使用函数计算,我的业务可以稳定地、持续地增量发布。

我在上一家任职时,每两周做一次版本发布,每次发布都有非常详细的发布列表,发布涉及的条件、依赖项非常多,需要运维去跑的脚本非常复杂,可以说只要出现一丁点错误,整个发布可能就会演变成一个小事故,甚至是大事故。当我们把整个架构放在 Serverless 上,把所有的功能进行拆分之后,发生事故的概率大大降低。即便发生问题,我可以通过快速回滚来解决问题。现在我们的研发习惯每天至少发布一个版本,当天所有解决的问题都会发布,相比传统的软件公司来说,部署在 Serverless 架构上我们的迭代速度会快很多。

快照保存系统,解决协同编辑算法问题

对于 wolai 这样的协同办公产品,协同编辑是产品的重中之重,这个功能对于算法的要求很高,通过使用函数计算我们同样很好的解决了这个问题。

wolai 云端笔记功能有一个信息块(Block)的概念,就是将用户所能接触到的最小信息单位从‘文件’缩小到‘信息块’”。“信息块”可容纳文字段落、表格、清单,以及嵌入来自外部的图片、视频等信息,且可被简易编辑、移动,经实时呈现后组成页面。所以接下来我会以“块”来指代信息块。

红底之上都是一个个独立的块

用户每次按键操作后,我们的前端都会有类似快照的保存机制。如果用户按键非常快,那他的多次按键操作可能在某一个时间切片中组成一个 transaction ,发回这个函数计算。然后我们就会记录下这些操作。当第二个用户同时进行按键操作时,如果他也针对同一个块做按键操作的话,他也会触发同样的操作。

我们会在函数里面去计算这些操作用户对这个块实际影响先后的顺序,最后得出它应该变成了一个什么样子,然后函数计算还会发出一个队列的请求,当有任何一个块,或者说它所属的页面发生过这个变化的事件之后,它会丢到这个 redis 里面,5 分钟之内一旦有一个块或者一个页面有过更新之后,我们会再调一个函数,把整个页面和整个块去生成一个一个快照。所以我们把函数和队列调用结合在一起做成了一个自动化的系统。

用户一旦在页面或者块上有编辑,我们都会在固定时间段生成一个快照。我们现在针对单个块(相当于单段文字或者说一个图片这样的一个最小单元)一分钟保存一张快照。相当于在1分钟之内,用户只要有过更新,我们都会把它整体变成一个快照,然后放到 OSS 上面去。如果每一个块是频繁更新,那么 OSS 上针对这个块会有特别多的一分钟的快照,目前我们 OSS 上差不多都已经有 10 亿多个文件了。如果是页面级别的编辑,wolai 5 分钟去保存快照,频率会低一点,通过函数计算和队列结合,我们制作了一个快照保存系统。

wolai 的 Serverless 架构图

使用 Serverless 解决的问题

通过研究 wolai 的用户行为会发现,我们的用户一般会在每天早上上班时打开 wolai 文档,然后他/她会在一天之中持续使用直至下班关闭。我们的用户并不会像小程序用户那样,需要快速打开应用,然后即用即走。相反,他们对于应用的初始加载速度没有特别高的要求,因此我们关注的重点并不是服务器端的渲染问题。通过研究用户习惯,我们更关注用户在打开应用后,操作的每一步是否能够快速响应的问题,这里面涉及到两个点:

1、用户把数据发到我的服务器上,服务器是否能快速、稳定的接收数据?

2、当有大量并发出现时,会不会让响应速度变慢

函数解耦,让小团队发挥大能量

通过使用函数计算,wolai 的前端工程师们就可以把从前到后的一整套开发流程负责起来,我们的研发迭代速度非常快。

为了实现快速迭代,节省人力,我们把应用的每一个小的功能点拆分的非常散,在函数计算上部署了非常多的服务,同时每个服务下又会有多个函数,通过人为拆散的方式实现了函数解耦。这样做的优势是当我们需要发布时,如果只针对一个函数做了某些优化或者 bug 修复的话,那就只需要发布这个函数,完全不需要做整体发布。因此我们可以每天快速累积发布,大部分函数完全解耦,互不影响。我们尽量把所有的函数完全独立开,变成独立的业务逻辑。这样可以保研发迭代的速度。

目前我们团队研发工程师有 10 个人。其中 8 位都是前端工程师,大大提高了团队人效。

小型企业使用函数计算,成本将节省 50%

在进行选型的时候,我们曾经对使用函数计算的成本问题进行过粗略的测算。我们测算的结果是,使用函数计算能比使用传统框架节省一半以上计算费用,人力的投入能够节省一半甚至更多。

我们可以算一笔账,如果选择传统架构,以目前系统的复杂度,我们的应用至少需要两个运维工程师。而现在前端工程师完全可以对系统进行从头到尾开发及维护。按照月均 3 万块钱的人力成本计算,算上场地、硬件的费用,对于小型公司来说一年至少可以节省 70-80 万的运维成本,同时计算资源成本也会同步增加,也就是说如果使用传统框架一年要花费 100 万的话,使用函数计算至少可以变成 50 万 。

从 2020 年 6 月上线至今,wolai 使用函数计算的过程非常顺滑,从选型到完成项目上线用了非常短的时间。我非常感谢阿里云做出了这样一款产品。时至今日,人与云计算的分工越来越明确了,相信在计算这个层面,特别是资源调度层面有了 Serverless 技术的加持,越来越多的企业可以不再关注资源,而是更加专注于如何为客户提供更好的服务。期待未来 wolai 能够与阿里云函数计算一道做更好的产品。

原文链接

本文为阿里云原创内容,未经允许不得转载。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/510838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端质量|基于业务驱动的前端性能有效实践案例

简介:前端的本质价值是什么?作者认为是给用户创造良好的交互体验和抵达率优化应该在转化率之前。那么本文就将和大家分享基于业务驱动的前端性能有效实践案例。 作者 | 钱文玲(悠酱) 来源 | 阿里开发者公众号 一、背景 1.1.前端性能优化的业务意义 前…

走进RDS|说说关系型数据库与Serverless

简介:看到如今Serverless在云计算行业喷薄欲出的态势,像极了《星星之火,可以燎原》中的描述:虽然不能预测未来的发展和变化,但对于云计算来说这是个相对确定的方向。本文将和大家说说关系型数据库与Serverless。 作者 …

六年团队Leader实战秘诀|程序员最重要的八种软技能

简介:笔者在带团队的六年中发现,程序员们在职场都有一个共同的困扰:“好像写代码都没什么问题了,日常工作基本上都是应付业务需求的开发,好像找不到其他的更大的附加价值了,我应该找一些什么样的发力点才能…

宜搭小技巧|学会这一招,数据收集收放自如

简介:应用的「启用」「停用」功能还可以这样用 >> 团建的日子眼看就要到了,为了掌握参加的人数,提前进行车票、房间、餐食的预定,宜小搭计划在周五下班前停止对报名信息的收集。 如何停止我们的应用进行数据收集呢&#x…

阿里云总裁张建锋:“未来不懂低代码就像二十年前不会用word”

11月3日,阿里云智能总裁张建锋在2022云栖大会公布,钉钉上的低代码应用数突破500万,低代码开发者超过380万。张建锋表示,未来80%的应用会由业务人员通过低代码开发。 张建锋提到,一线业务人员通过低代码的方式&#xf…

平行云CEO 李岩:CloudXR ,开启通往元宇宙的通道

简介:一端是算力无穷的云,这也是 CloudXR 的精髓所在。 图:2022阿里云视觉计算私享会现场 5月11日,在“2022阿里云视觉计算私享会”上,平行云CEO李岩为大家带来了题为《CloudXR,开启通往元宇宙的通道》的主…

阿里10年沉淀|那些技术实战中的架构设计方法

简介:上周我写的一篇文章《关于技术能力的思考和总结》引起了大家的关注,好多读者的评论“以写代想、以想促真、以讲验真”,大家的感受很深刻,基于上次的文章,这篇文章我其实更想跟大家聊聊一些常用的思考方法&#xf…

阿里巴巴云数据仓库 MaxCompute 数据安全最佳实践

简介:MaxCompute作为企业级SaaS模式云数据仓库,正在为客户业务及其数据提供持续的安全保护。 MaxCompute 近期对产品的安全能力进行了全面升级 ,结合数据生命周期,针对数据误用、数据滥用、数据泄露、数据丢失等典型数据风险场景&…

阿里平头哥发布RISC-V高能效处理器玄铁C908,打造端云一体生态

11月3日,在2022云栖大会上,阿里平头哥发布全新RISC-V高能效处理器玄铁C908。玄铁C908计算能效全球领先,较业界同性能处理器能效提升超20%,更能满足低碳时代的算力需求,可广泛用于智能交互、多媒体终端、AR/VR、无线通讯…

MaxCompute 公共云多租户设计的技术要点详解及产品实现特色

简介:公共云大数据平台在多租户的设计和实现方式上有所差异。本文主要介绍在公共云大数据平台的多租实现方案中需要考虑的问题和挑战,重点介绍了MaxCompute在计算和存储多租实现上的特点。期望通过这些介绍来让大家了解大数据云平台多租方案需要关注的技…

技术解读 | 智能开放搜索CTR预估模型

简介:本文介绍开放搜索CTR预估模型在个性化排序中的应用与实践 如何评价搜索排序效果? 搜索是用户触达信息最简单直接的方式,是APP、网页必备的功能。如何评价并提升搜索效果一直是搜索领域的常见问题。 一方面,可以基于用户体…

阿里达摩院一口气开源300+AI模型 牵头推出AI模型社区“魔搭”

11月3日,2022云栖大会杭州现场,阿里达摩院联手CCF开源发展委员会共同推出AI模型社区“魔搭”ModelScope,旨在降低AI的应用门槛。达摩院率先向魔搭社区贡献300多个经过验证的优质AI模型,超过1/3为中文模型,全面开源开放…

阿里云能耗宝助力华聚公司实现产品绿色升级

客户公司:杭州华聚复合材料有限公司 公司类型:制造业 案例简介:能耗宝“碳足迹在线服务”助力华聚公司产品绿色升级,能耗管理助力厂区实现年度节电17万度,约等于减碳排量120多吨。 2020年9月,国家提出了2…

无影云应用核心技术解读

简介:本文整理自阿里云无影高级技术专家付志超,在阿里云EMR StarRocks无影云应用线上发布会的分享。本篇内容主要分为三个部分: 1. 无影云应用产品简介 2. 无影云应用技术架构 3. 总结&展望 了解更多无影云内容:无影云应用重…

计算就是创造力!阿里云与FIRST影展设立“无影创作奖”

11月3日在云栖大会技术主论坛上,阿里巴巴集团首席市场官董本洪与FIRST影展创始人宋文共同发起了“无影创作奖”。云计算从支持大制作渲染,走向了更多类型片的创作领域。 按计划,无影创作奖将在FIRST惊喜影展上揭晓,为类型片创作者…

一个好的网站logo设计长这样

简介:一个好的网站logo,不仅让用户一眼知道网站品牌传递的信息,还能提高网站专业度和丰富度,增加SEO搜索排名。今天分享下如何设计一款实用的网站logo。阿里云智能logo设计,在线免费体验logo制作:https://l…

怀同行之心,筑信任之基,践数智之行

行路过半,道阻且长 十几年前,许多人还不知道"云"为何物;而现在,我们的日常生活与云计算技术的发展轨迹越发重合。从“双十一”全民购物狂欢日的海量交易支持,到春运铁路网络购票的海量承载,再到…

面向WEB3.0提升存储性能,蚂蚁鲸探底层区块链存储引擎正式对外开放

11月3日,蚂蚁集团数字科技在云栖大会上宣布,其历经4年的关键技术攻关与测试验证的区块链存储引擎LETUS(Log-structured Efficient Trusted Universal Storage),首次对外开放。该产品主要用于可信数据在区块链上的存储&…

如何写出一篇好的技术方案?

近期在写某个项目的技术方案时,来来回回修改了许多版,很是苦恼。于是,将自己之前写的和别人写的技术方案都翻出来看了几遍,产生了一些思考,分享给大家。 我们为什么需要写技术方案?总结下来无非是几点&…

从“预见”到“遇见”| SAE 引领应用步入 Serverless 全托管新时代

近年来,企业的数字化随着互联网的普及发展越来越快,技术架构也是几经更迭,尤其是在线业务部分。从最初的单体应用到分布式应用再到云原生应用,出现了进阶式的变化。但带来便利的同时,也给企业带来了一定的复杂度&#…