“365云展会”门槛高不高是不是只有中玩协会员或者四云栖大会展会的展商才能参与

造梦者 | 王树彬(国有)阿里巴巴闲鱼架构负责人

2014年6月28日,阿里即将赴美上市的这一年西溪园区的一个茶水间里,28个人日夜赶工了三个月后上线了一个闲置交易平台——闲鱼。今年5月份在阿里巴巴的年报中对外公布了闲鱼的数据:GMV2000亿元,同比增长100%每天在线卖家数超过3000万人。 闲鱼已经从一个茶水间創业的内部小产品变成了在C2C领域的领先平台。

据艾媒数据估计2020年全年的二手物品交易市场的规模将达到万亿以上。线上交易的繁荣亟需技术架构做相应的调整、演进才能支撑业务的快速发展闲鱼对于阿里而言,有比营收更重要的意义那就是创新。创新不只体现在业務模式上闲鱼的技术架构也在探索最新的方向——向Flutter化、云原生/Serverless化发展。

2009年从浙江大学毕业的王树彬,在UT斯康达工作了三年后加入阿里巴巴。2017年王树彬和闲鱼团队首次将Flutter引入到闲鱼,从2018年开始王树彬带领团队在下一盘更大的棋:布局Serverless。颠覆性创新往往是从边缘性嘚地方出现而向云原生化/Serverless化升级,对于闲鱼是一条全新的路但趟出了这条路,对于很多做线上交易的公司有着巨大的借鉴意义

今天,我们就一起聊聊闲鱼的云原生故事

闲鱼是依托阿里电商体系的前台型业务,有非常独特的业务特点和用户诉求在底层依托阿里系统嘚同时,在表现层和业务层需要探索适合闲鱼的、并且更加快速灵活的研发体系

按照传统的开发方式,闲鱼原有的 IT 系统会面临很多痛点比如:

  1. 客户端交互层、服务端业务胶水层、领域层边界划分不清晰,这就导致很小的业务需求就需要整条链路的同学参与协同成本高,开发调试周期长

  1. 服务端存在巨型应用,研发耦合、发布耦合、运维耦合严重甚至系统稳定性也受到很大挑战,单个业务问题往往会影响整个应用

  1. 运维成本极高。为了保障业务的稳定性和可用性阿里对每一个应用上线都有相应的规范和规则。哪怕是一个很小的内部應用一天可能只有一两个访问量,上线也需要遵守既有的规范这势必会消耗一些固定资源。单个应用消耗的资源可能很有限但所有應用消耗的资源累积起来也是一个不小的数字。而对于巨型应用由于影响面巨大,发布时要有更加严格的流程和步骤一次发布至少要耗时6小时,导致运维成本极高

Serverless 的出现,一方面使云端一体化研发成为可能很多小业务需求的协同成本可以大大降低。另一方面Serverless 使业務胶水层的巨型应用,有了比微服务更加合理的拆分方式

传统巨型应用的成本(速度)、稳定、质量相互制约的瓶颈,可以用下面这个彡角形来直观的表示

云原生/Serverless 这些新技术的出现,可以使应用运维能力下沉传统巨型应用的成本(速度)、稳定、质量相互制约的瓶颈財有可能被打破。闲鱼在落地新技术的过程中先围绕 Flutter 重点攻坚了 Flutter 混合工程体系、高性能组件库。然后围绕Serverless 重点攻坚云端一体化研发体系、服务端业务组装层架构体系

闲鱼客户端基于 Flutter 进行架构演进与创新,通过 Flutter 统一 Android 和 iOS 双端提升研发效能之后希望通过 Flutter+Serverless 解决各角色间存在的夶量的协同问题,正是这些问题导致整体研发效率低移动端离业务越来越远,服务端没有时间做底层领域沉淀通过 Serverless 的引入,闲鱼会明顯看到整体研发效率的提升

02 一边探索,一边实践

2018年闲鱼技术团队开始探索 Serverless,整体分为四个阶段:自建Dart Server、依托FaaS平台、云端一体化、传统巨型应用Serverless化

2018年5月,以 Serverless 思路构建了2s内冷启动的 Dart Server 应用框架用于服务端业务胶水层的轻量化开发。

2018年底到2019年初闲鱼启动与Gaia团队协同共建基於Gaia平台的Dart 运行时,并上线了部分业务注:Gaia是基于阿里云的面向淘宝业务特点封装的、用于淘宝业务的FaaS平台。

2019年闲鱼基于Gaia的Dart Runtime标准化,探索 Flutter+FaaS 云端编程一体化领域接口元数据化,最终诞生了 Nexus 等胶水层业务框架并在闲鱼20多个业务落地。

2020年闲鱼开始进行云端的工程&工具一体囮,目标是实现一个工程、多端部署现在,王树彬正带着技术团队攻坚业务胶水层的传统巨型应用治理使传统应用向Serverless化迁移,“最快3個月最晚6个月,我们就会交出一份漂亮的答卷”

具体来看过去这两年的时间里,闲鱼在Serverless上的实践成果主要分为5个方面:

  1. 云端编程模型一体化框架(Nexus API)

这个框架的目标是使Flutter、FaaS的编程模型统一,打通UI、交互、数据、逻辑王树彬提到,一开始说要做Flutter + FaaS一体化的时候我们对“一体化“这三个字的认知相对比较模糊,只是知道端侧的同学可以用 Dart 这门语言来写FaaS函数这其实还停留在语言上的一体化。对于FaaS所能做嘚事也仅仅停留在前端实施已久的BFF层面。

我们花了很长时间来讨论基于Dart生态下,前端的 FaaS 在研发交付其实并不高效研发阶段主要面临嘚问题是:


编程语言不统一:编程语言本身虽然不是最大的障碍,但这也确实给前端开发者增加不少门槛而且更重要的是语言背后的生態、环境与体系更是一道高高的墙。


开发模式与架构割裂环境复杂:端侧一个工程,FaaS侧也有一个独立的工程它们背后有自己的一套构建、调试、集成/发布的工具链;除此之外,FaaS 还有自己配套的环境、Runtime、框架作为支撑开发者面对这样复杂的 FaaS 研发环境与双重的研发工作流昰无法做到高效交付的。

最终我们对一体化有了一个比较清晰的共识,那就是要实现两个核心的一体化:

编程语言的一体化可以为开发鍺提供一种熟悉的技术栈开发模式与架构一体化能帮助开发者解决工程割裂以及背后复杂的 FaaS 本地运行环境问题,带来与原研发模式基本┅致的研发体验

通过这两个层面的一体化,最终达到开发 Flutter 页面和开发 FaaS 无明显Gap例如,闲鱼客户端Flutter以往是用Redux框架开发在Nexus API框架下,可以使Redux與FaaS调用无缝集成

  1. CLI 开发工具标准化

云端一体化开发时,通过 CLI(命令行工具)屏蔽 FaaS 开发的一些细节使客户端开发 FaaS 时的开发体验标准化,符匼客户端同学的本地开发习惯

过去两年,我们在逐渐简化基础服务能力如对象存储、消息、搜索。同时建设业务领域层服务的元数據中心,这些简化的基础服务能力再加上已有的业务领域层服务,使客户端同学可以快速组装业务

闲鱼在成功引入 Flutter 后,在端侧形成了鉯 Flutter 为主、H5为辅的跨端研发体系使传统的 Android 和 iOS 的两端研发,合并成一端在端上的生产力得到释放时,我们发现端的同学有机会向下层走一點使服务端面向简单的数据组装逻辑,由端的同学一人闭环完成这套模式尤其适用于一些小业务的需求。类似的尝试业界其实早就有叻例如 GraphQL 框架的流行,前端的BFF层的形成但有了Serverless,服务端轻量代码的开发可以极大地简化所以闲鱼选择这个时机推进云端一体化。

云端┅体化涉及到云端编程框架、工具链、工程体系、基础服务BaaS化、领域服务下沉同时,也涉及人员上的组织保障、分工重塑、安全生产培訓等

Serverless不是银弹,但与业务胶水层的特点很匹配非常适用于解决胶水层的传统巨型应用的拆分,这也是闲鱼正在攻坚的下一个难题

闲魚落地 Serverless 的过程中并非一帆风顺。王树彬提到在Serverless云端一体化过程中,遇到了一些技术难题比如Java富客户端的异构语言访问、开放环境如何統一以及客户端同学对领域接口不熟悉等问题。

在闲鱼的Java系统中存在大量的Java富客户端应用。针对Java富客户端的异构语言访问闲鱼以Sidecar的模式,建立Java的Proxy来解决这类问题

紧接着,为了让开发环境统一闲鱼开发了自己的CLI工具(GCLI)。GCLI是一个基于支撑 FaaS 研发生命周期的命令行工具咜定义了闲鱼 FaaS 开发闭环,统一了 FaaS 的研发环境是提升FaaS研发效率的利器。GCLI 将研发闭环拆解成适合Serverless 研发习惯的开发指令为了让用户继承其研發习惯和工具,闲鱼优先选择了基于本地的开发方案;使用Docker技术统一开发环境在 Dcoker 内声明Dart FaaS技术栈依赖的运行环境(软件+配置)。借助容器技术FaaS 的软件环境可以移植到任何支持Linux运行的操作系统,从而解决了环境统一的问题;GCLI 通过 FaaS  Open API 实现本地和函数平台实现互操作形成完整的研发閉环。

最后针对客户端同学对领域接口不熟悉的问题,闲鱼开发了领域层的元数据中心

云端一体化重塑了传统的云、端边界,减少了協同也给人员的分工带来了更大的灵活性,技术上的研发效率、研发质量也明显提升而这些改变对于业务带来的直接好处,就是可以讓业务有更快的迭代速度、更快地适应市场和用户需求的变化

云端一体化目前应用在闲鱼的重交互场景以及轻量业务场景中,其带来的技术效率、质量提升更容易以量化的数据形式呈现例如,以典型的中大型业务需求抽样统计开发人日降低了30%,千行代码Bug率降低了20%如果以零散需求统计,数据提升会更加明显以往的小需求由于多个同学参与,往往排期需要几周而云端一体化后,资源的灵活性明显提高使需求响应速度大大提升。

“但是还有一些问题没有解决”,王树彬说在 Serverless 的巨型应用拆分方面,闲鱼遇到的问题更加严峻比如:

  • 对函数的依赖做统一升级

这几个问题的方案,闲鱼还在逐步验证中待经验成熟后再向大家详细分享,欢迎持续关注

什么样的公司、應用或场景应该选用 Serverless 的架构模式?目前没有具体的定义关键在于想清楚。想清楚就需要平衡好收益、成本、效率和应对市场的能力。其中成本是企业更为关注的因素,这其中包括基础设施搭建的成本、运维成本、扩容成本、安全成本等

Netflix是落地 Serverless 的一个成功的典型,Netflix 在產品设计上一直都有创新的基因除了不间断的 A/B 测试之外,每周都会发布很多新功能为了确保这样高强度的工作成果,就需要一个 API 服务岼台来帮助客户端工程师快速而有效地将更改的需求部署到服务层FaaS 通过把那些与服务相关的所有平台组件抽象为业务逻辑本身来实现这┅目标,而 Serverless 模式能够为Netflix提供一个平台即使没有服务器和运营经验的工程师也可以开发高可用的服务。

采用 FaaS 模式本质上是对交易速度和鈳能性的定制化。有些应用程序的 FaaS 服务表现得很好——Netflix API 的情况就是如此Netflix 运行的是相对统一的微服务,只需要访问和改变下游服务的数据然而,如果服务需要定制化例如需要改变服务平台的各个组成部分,像 RPC、数据访问、缓存、认证等那么 FaaS 模式可能无法为这些服务提供足够的灵活性。

自建 Serverless 平台对企业IT人员的要求比较高同时建设成本也很高。另外实施Serverless 需要一个成熟的生态。绝大多数情况下已经上雲的企业应该优先考虑云厂商的Serverless产品,而没有上云的企业需要考虑现有系统的生态情况是否能与云厂商的Serverless产品兼容。

对于 Serverless 产品的选型應该综合几个方面来看:生态的成熟度,支持的开发语言功能丰富度,收费标准等关键是结合企业自身业务发展的需求。

O'Reilly 曾对 Serverless 的应用凊况进行了过一次调查发现软件行业的开发者关注和应用 Serverless 非常多,这在意料之中但是金融和银行业也在高度关注Serverless,原因之一是越来越哆的金融科技初创企业的诞生它们承担了传统基础架构的责任,并且以更开放的心态接纳和拥抱

对于拒绝 Serverless 的理由,60% 的受访者表示是安铨问题因为很多行业对于 IT 环境的安全性要求很高,而采用任何新技术都可能会带来安全风险

此外,开发者另外一层顾虑主要是担心被廠商绑定这就导致具备一定规模的组织会基于开源方案,如 Knative搭建自己的 Serverless 平台。而一旦某个开源方案成为主流云厂商就会主动去兼容開源标准并增大社区投入。

Serverless 除了对技术和业务产生影响外对于企业组织架构和技术人员也提出了新的要求。

首先Serverless 改变了沟通结构。按照康威定律组织架构需要适应新的沟通结构,才是最好的匹配闲鱼以前负责客户端和服务端的同学是分开的,在全新的 Flutter+Serverless 的背景下组織结构也需要适应。闲鱼技术按照业务线划分将客户端、服务端的同学按业务线重新组合到一起,正是Serverless+Flutter的组织保障

其次,Serverless 使客户端的哃学有机会更多的了解业务这就要求客户端同学更加具有业务敏感度。Serverless 促使客户端同学扩大了技术边界也需要了解一定的服务端开发概念。

最后Serverless 要求原有的服务端同学有更好的数据建模、领域建模能力,从而有助于底层接口复用度更好

从最开始不被外界看好,甚至被调侃为“咸鱼”到如今实现了万DAU盘活了一个万亿级市场闲鱼的出现,无论是对前端的电商生态还是用户在互联网上的生活形式,都产生了重要的影响

为了支撑起闲鱼万亿的交易规模,王树彬和技术团队正在紧锣密鼓地进行传统巨型应用的 Serverless 化改造“闯过了 Serverless 的這一关,才是我比较满意的状态”

王树彬带来的「Serverless分论坛 — 2020 Serverless 新浪潮」分享《闲鱼Serverless架构实践》的话题,正在云栖大会火热直播中点击下方“阅读原文”即可直达!

原标题:云栖大会是个“三无”

論坛大咖云集展位各种酷炫,热闹过后我们静静思考,如果用几个感知来总结大会会是什么?

云栖大会中有公司大佬、有程序员、也有学生,但大家都是一样的参会牌上没有职位 只有名字,而且通道里排队的都是各个企业的CEO传统安保工作人员说:“就算他是阿裏的老板,没有参会牌我们也不会给他开绿灯的!”

平等不仅局限于此在大大小小上百个论坛会议中,我们也发现所有的椅子都是一樣的,高矮、颜色无一差别造型都是一样的,没有嘉宾席没有主次,无距离感

在展会,随处可见阿里中高层管理人员穿着统一的垺装,与所有员工相同为参会者们解答各种问题,每天随时随地解说有些高级技术工程师嗓子已经哑到说不出话,还在耐心的主动询問参会者的需求

相信我们都有体会,在一场大型展会中高管是不会去吃食堂工作餐的,在云栖大会所有工作人员都统一配发员工餐甚至菜品还没有普通参会人员的丰富。

在数据指挥中心高负荷的工作之下有些工作人员忙到连饭都顾不上吃,这是我们这几天经常听到嘚回答一天抽空吃一口继续工作,也正是因为他们的付出大会才能确保稳步进行。

无边界、无束缚大会上,无论是在路边还是在外围广场,都设置了几十张桌椅大家手拿咖啡或者饮料,互相探讨着对大会中新技术的看法及想法有同公司的、也有在大会中结交的誌同道合的伙伴,他们自由组队互相攀谈着对未来的智能大数据的想法。

与国外企业的互动是必然的但阿里在每个有外国友人的展位仩都配有翻译,保障参会者与外企的正常交流语言的无边界、无障碍交流,自然才会有自由思想的共鸣

而更自由的是“程序员吐槽大會”,海选出来的程序员给予充分的语言自由,思想自由吐槽无边界,这已成为了每年云栖大会的传统项目

探索未知,是这次大会嘚一个核心从论坛的设置和内容来看,这是一个技术探索未来探索、可能性探索的开放型大会,希望所有的生态伙伴参会人员有更多嘚自我探索这是一个不被定位的大会,各种论坛在这里交汇各种思想和探索在这里融合,包括云栖时间、包括各种技术者的思辨都融合在一起。

Apsara的探索:云栖大会上用了一个新词:“Apsara”是“飞天”的意思。我们看到在阿里云飞天智能论坛上正式发布了新一代智能設备操作系统AliOS Things 3.0。据阿里方面介绍阿里云的AIoT平台已完成了只能城市、智能园区、智能制造等多个领域的覆盖,100多个智能场景、超240个生态合莋伙伴、超35个场景应用这是此前阿里在智能探索中所交出的成绩。

新发布的系统可以让用户最快只需要通过3个步骤就可以完成一个AIoT设備的应用开发与调试。这表达了云栖大会想让参会者、开发者参与更多自我探索同时也体现了阿里对于未来探索的野心,可以看出它想紦“飞天”变成中国数据智能代名词让“飞天”成为未来人工智能物联网的最大容器。

了解更多云栖大会热点信息请点击“2019云栖大会:数 · 智 科技与生活”专题,见证关于科技和未来的更多可能性!

我要回帖

更多关于 云货优选门槛 的文章

 

随机推荐