闲鱼Serverless云端一体化研发实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 淘系云原⽣生时代的业务研发
闲⻥鱼Serverless云端⼀一体化研发实践
讲师:夏朝锋(花名:扬⽻羽)
2. 自我介绍
夏朝锋(扬⽻羽)
阿⾥里里巴巴 – 闲⻥鱼 –技术专家
现任阿⾥里里巴巴闲⻥鱼架构组成员,负责闲⻥鱼整体架构升级,
主导serverless云端⼀一体化研发模式在闲⻥鱼的落地。
2011年年加⼊入阿⾥里里巴巴,经历了了淘宝商家、淘宝⽆无线、闲⻥鱼发展的
多个阶段,曾负责商家⼤大数据应⽤用、淘宝招商、淘宝头条、闲⻥鱼架
构升级演进等。
3. 分享大纲
• 闲⻥鱼业务演进与云端⼀一体化的新机会
• 云端⼀一体化研发的架构演进与业务价值
• 展望
4. 闲鱼业务演进
⽤用户规模
C2C
转卖
售卖
回收
商业模式
⽤用户价值
以旧换
新
旧物换
礼
寄卖
鉴定
担保
优品
租赁
ISV
本地
化
⻥鱼塘
以旧换X
C2C
C2X(C2S、C2B、C2B2C)
S2C/B2C
租房
社区
直播
5. 传统无线研发痛点
⽆无线时代
富客户端
PC时代
瘦客户端
Android
Web
Server
iOS
Server
H5
IOT
Serverless
业务扩散!
业务扩散
⼈人员协同
打造符合闲⻥鱼特点的⼀一定差异化的研发模式
基础⽀支撑
• ⼿手淘移动航⺟母
• 集团中间件/云
• 业务中台
问题
• 并⾮非效率和体验的最优解
• 技术发挥空间待释放
闲⻥鱼特点
• 业务流量量闭环
• ⽤用户规模基础
闲⻥鱼特点的研发模式
• 基于中台,聚焦差异
• ⼀一体化的快速研发模式
• ⼩小程序为辅的引流⽅方案
6. 分享大纲
• 闲⻥鱼业务演进与云端⼀一体化的新机会
• 云端⼀一体化研发的架构演进与业务价值
• 展望
7. 闲鱼技术架构支持业务
业务化
智能化
协同
效率
端到端业务闭环
质量量
研发智能化
Flutter跨端
Test⾃自动化
数据驱动
Serverless云端⼀一体
开放化
闲⻥鱼技术
云端业务研发框架
闲⻥鱼架构
代码⾃自动⽣生成
知识库
8. 闲鱼一体化落地
我卖
出的
OCR
发布
下单
聊天头
⼴广告
投放
⾜足迹
⼩小程
序
Flutter
业
务
闭
环
Flutter
Http
Event
MetaQ
Faas
技
术
栈
统
⼀一
Baas
轻业务/短⽣生命周期
/⾼高隔离性场景
回收
闲⻥鱼 WEEX ⼿手淘
Fish-Redux-View Story
Nexus Nexus
Faas(Dart) Faas(Dart)
Domain Domain
Effect
Reducer
架
构
⼀一
体
多端展现场景
双端交互多、状态复杂多变场景
UI
以旧
换新
View
ViewModel
Model
9. 一体化业务闲鱼足迹Faas+Baas
Flutter
Metaq
Save
metaq
trigger
query
Faas EventBroker
mtop
trigger
GRPC
Save Faas
(DART)
Delete Faas
(DART)
Http
Query Faas
(DART)
Dart runtime 统⼀一函数监控
Hsf
⾜足迹业务
AliyunBaas
Mango
PostgreS
QL
Item service
Mysql
10. 一体化业务下单页面—Nexus
UI Logic
State
Nexus Client Framework
端
状态同步
Logic Engine
View
事件驱动
Logic
Domain
Action
Handler
Action Dispatcher
In FaaS
云端复⽤用
原⽣生渲染 | 动态渲染
Logic
Engine
StateDiff
Action
1、前端形成⼀一套⽆无逻辑 规范、框架
RemoteReq
Action
Custom
Action
Nexus Server Framework
2、后端形成⼀一套⽆无UI的规范、协议、框架,逻辑编码平⾯面统⼀一
3、Flutter + FaaS ⼀一体架构
NativeApi
Action
Nexus一体化框架
Biz Logic
Batch
Action
Faas
11. 一体化业务下单页面—Nexus
多渲染接口
本地总价计算
UseGuarantee Action
无业务校验
重客户端
ChangeAddress Action
UserRedPacket Action
Init Action
CretaOrder Action
改造后下单⻚页⾯面逻辑
状态复杂
状态变化多
云端交互多
减少代码量,减少协同,形成
端到端业务闭环
12. 一体化业务下单页面—nexus
云端模型统⼀一
屏蔽协议
逻辑归⼀一
代码量量减少
业务闭环
13. 一体化业务跨端回收
⽀支付宝⼩小程序
回收
View
FaaS
以旧换新
微信⼩小程序
图书
视图
组件库
Story
Nexus
框架
家电
⼿手机
端能⼒力力
Ability
组件
模型
。。。
Logic
Engine
数据
模型
业务
编排
实验
能⼒力力
Server
回收多端业务Faas解决⽅方案
数据多层复⽤用组装
业务可测性增强
14. 闲鱼Serverless Landscape
闲⻥鱼业务
• ⼀一体化业务研发框架:业务闭环
⼀一体化业务研发框架
• 业务解决⽅方案:垂直业务⽀支撑
业务解决⽅方案
⼯工具链
• ⼯工具链:研发效率、研发体验
Dart Faas Runtime
语⾔言⽆无关
Jproxy
Java中间件⽣生
态
• Runtime:⾼高性能、稳定、多云
• 语⾔言⽆无关:异构语⾔言⽣生态打通
数据⾯面
BaaS
元数据
领域服务
闲⻥鱼Serverless总体架构
业
务
运
维
测
试
框
架
• 数据⾯面:云后端服务
• 元数据:减少协同
• 业务运维:NOOPS
15. Dart FaaS Runtime
•
•
•
流量量
Gaia
async await 同步风格、异步性能
Isolate并发容器
Zone上下文跟踪
Aserver
场景
数据Sink
云/端⼀一体化
移动API
Function/Event
API
metaq
…
JProxy
函数开发框架
Function API
事件源
资源调度
• 业界首次将Dart引入FaaS层,与Flutter云端打通
CLI
build/hotdeoply/invoke/logs/local
中间件API
增量量编译器器
Java2Dart
Dart2native
函数运⾏行行时
HSF
平台协议
Dart VM
MTop
CRD/Controller
EB POD
Http
事
件
源
适
配
isolate⽣生命周期
管理理
handle/health/update/..
()
Zone
EventPool/VMService
Pub
Worker Isolates
Main Isolate
Aliyun-BaaS
Monitor
Log
Flow
协
议
适
配
invoke协议
热部署协议
健康检查
运⾏行行时协议
开放服务
监控
中间件扩展cpp
GPRC
测试
FN POD
提供
函数平台
(Gaia/FC/CSE…)
函数平台与业务关系
Dart Faas Runtime
16. 研发体验
宿主环境
Docker container
研发体验—本地研发环境不不统⼀一
Invoke
构建⼯工具
Logs
Gcli
命令⾏行行
Hotdeploy
Build
命令
处理理
器器
增量量编译器器
Maven Pub Git
Java Dart *.so
Local
•
•
触发器器/
热部署/
⽇日志请求
•
Gaia Open Api
研发体验—稳定与效率
• 基础设施全部重构:
• Runtime、Faas平台、ASI
• 研发体验割裂—平台与本地切换
• 部署效率
Linux
⽂文件系统/⽹网络共享
基于Docker的本地研发闭环GCLI
本地IDE研发 VS web IDE
复杂业务的研发依赖
• Dart、Pub、Path、Java 、Maven、CPP
基础设施(设备)可变
• 宠物 VS ⽜牛
核⼼心思路路
• Gcli 客户端抽象FaaS本地研发动作
• 利利⽤用Docker归⼀一开发环境,解决在本地软件安装、编译代码、运⾏行行时依赖
• Gaia开放API履履⾏行行
效果
在GCli的加持下,通过Dart FaaS开发⼀一个mtop api可以在5分钟左右
17. 异构语言生态—异构痛点
HSF
HSF
HSF
Others
….
HSF
Dart实现
MTOP、限流、降级、加密、DOOM
?
C++扩展
开发难
维护难
HSF、Tair、Switch
中⼼心代理理
UIC、⼀一休
性能差
周期⻓长
Service Mesh
HSF
富客户端
HSF
Tair
Eagle
eye
Switch
集团中间件和⼆二⽅方服务
Sentinel
Others
…
新业务接⼊入
不不⽀支持
放弃
18. 异构语言生态—解法核心思路
1
Application Pod
Main
Application
Container
Proxy
Ambassador
共享本地⽹网络,LocalHost直接通信
2
解耦业务主容器器
3
云原⽣生容器器设计模式——Sidecar 外交官模式
SideCar
Dart/NodeJS
GRPC
Pod/Container
Dart Jproxy模式
Java
业务容器器代码简化
集团⼆二
⽅方服务
中间件
本地逻
辑
去中⼼心化
可重⽤用性
接⼊入速度快
19. 异构语言生态—Jproxy详细设计
JProxy
ThreadPool
UIC-
plugin
Sentinel
-plugin
AB
Bean::
Method
GRPC
CLIENT
Dart
Spring⽀支持
UIC
MQ
JPorxy
Service
Plugin
Bean::
Method
grpc
GRPC
Server
NodeJS
MetaQ-
plugin
Pandora 基础模块和插件
HSF|Tair|Metirc|Diamond….
Jproxy详细设计
GoLang
参数解析
Java接⼝口调⽤用
序列列化返回结果
POD/Container
隔离
按需加载
插件化设计
20. 异构语言生态—Jproxy性能
HSF
HSF
HSF
HSF
Others
….
GRPC
启动速度 : 40S -> 8S
插件裁剪
并⾏行行加载
APPCDS
Diamond并发数
降低HSF全局等待时间
GRPC Server & Plugin Manager
HSF
HSF
Eagle
eye
Eagle
eye
富客
户端
UIC…
Tair
Switch Sentinel
JProxy
Tair
集团中间件和⼆二⽅方服务
MQ
GRPC本地对本地的调⽤用RT在0.4ms以内
应⽤用:
闲⻥鱼: 富客户端 +Sentinel
⽅方案共享: 前端委员会
21. 开发运维辅助
自动化函数监控
部署可视化
业务容器监控
WEBIDE
白屏化日志查询
元数据中心
22. 效果总结
传统的Flutter研发架构
数字:人日x人数
FaaS一体化架构
数字:人日(1人)
• 软件复杂度的降低,使抽样项目Bug概率下降20%
• 人日减少30%(从20人日降低到14人日)
后端领域
下沉机会
减少协同
成本
业务闭环带来
的成长空间
重新定义
生产关系
研发人员
资源均衡
良好用户
体验
23. 分享大纲
• 闲⻥鱼业务演进与云端⼀一体化的新机会
• 云端⼀一体化研发的架构演进与业务价值
• 展望
24. 展望
云原⽣生在阿⾥里里的落地
传统应⽤用Serverless化
云端⼀一体化研发
统⼀一编程平⾯面
serverless
Runtime
多云⽀支撑
Flutter 、Weex/⼩小程序
异构系统互操
作标准化
Cloud Native
25. 【淘系技术】微信公众号 【闲⻥鱼技术】微信公众号
扫码获取本期ppt内容及回放 Flutter、Serverless⼀一体化内容
加⼊入我们
【淘系基础平台部-基础服务】
⼀一起探索⽀支撑千亿级流量量新⼀一代架构