本文来自爱奇艺研究员在 ArchSummit 全球架构师峰会上的演讲整理,将为大家分享爱奇艺打造移动中台的过程。爱奇艺移动中台的建设过程可分为组件解耦、组件定制化和平台化,未来会利用平台发现、沉淀和复用的能力,对外提供 SaaS 服务。

1中台的定义和意义

首先我们来看一下中台的定义,其实中台来源于前台,它更多的是为前台的创新,还有快速迭代服务。所以说中台是位于前台和后台之间的一层。相对于前台来讲,它比前台要更稳定;相对于后台来讲,它比后台要更加灵活。中台的意义在于企业级能力复用平台:

  • “企业级”定义了中台的边界跟范围

  • “能力”定义了中台的主要承载对象

  • “复用”的话,定义了中台的核心价值

  • “平台“是我们中台的主要表现形式

2爱奇艺 App 中台

除了爱奇艺 App,爱奇艺也通过内容孵化出一些其他的产品App,比如像爱奇艺漫画、爱奇艺知识等。

既然有了这么多的产品,那么就有了建立爱奇艺 App 中台的必要性。主要从三方面考虑,专业深度、人力资源、用户体验。

这个是爱奇艺中台演进历程。在 2018 年以前,当时爱奇艺的四大 App 基本上就是一套代码,同一个工程。后来每一个 App 都成立了一个单独的团队,我们把代码还有开发资源完全的隔离开,并且在这个过程中,将通用的组件给拆分出来。这个时候开始做大量的解耦工作。然后在 2019 年,一边做解耦,一边在搭建爱奇艺 App 中台。

在未来,除了要服务好公司内部的各种业务,还有对外提供 SaaS 服务,特别是爱奇艺的一些合资的子公司,也要为他们做好支撑。

谈到解耦,就不得不提一个迭代效率的问题。一个团队规模基本上决定了一个迭代效率的瓶颈。

  1. 对于一个 10 人以下的小型团队来讲,这时候更多讲究的是团队成员的独当一面,基本上就奉行“拿来主义”。

  2. 然后到了一个中型团队,一个人英雄主义承担不了这么大规模的东西。所以这时候就强调一种组件化解耦模块化,让大家专注在自己能做的事情上面。这个时候强调的是边界弱耦合的组件化。

  3. 接下来到了一个大型团队,这时候除了组件化之外,还强调业务之间的并行迭代能力。但是随着工程规模的成长,组件化拆分的改造成本会呈指数性增长。

爱奇艺在 2018 年开始就投入了大量的人力和物力去做各种解耦的事情。所以特别提个经验教训,小团队的时候,能够解耦的尽早解耦。

爱奇艺 APP 中台效果,跟中台合作最紧密的极速版和国际版就有这样的反馈,“从人力资本上是巨大节约,参考基线 100 开发 + 规模,极速版和国际版同等功能只有 20 开发规模;同时中台也能将技术做深做细;开发经验和流程也能共享”。

这个是中台的架构图,底层是中台门户。因为所谓的中台化就是企业级能力复用平台,所以中台化就是通过平台化去发现、沉淀跟复用企业级能力。所以最重要的首先是打造一个中台门户,提供统一接入、统一门户、统一账号、权限和文档的事情。上面是移动开发基础框架,提供从开发、测试到运营的一站式解决方案,包括一些框架组件、业务组件、基础组件,还有后台的一些组件服务;还有高可用高性能的平台,发布运营平台,研发支撑平台等。最上层就是支撑各个业务 App。

首先就是最底层的中台门户 QMAS,它的全称叫 QIYI Mobile Application Studio。当时做这个平台之前,收集了各种反馈,特别是新 App 的反馈。对于新 App 来讲,首先反应就是开发一个新的 App,冷启动的时间特别长,公司到底有哪些后台服务?有哪些 SDK?文档在什么地方?通通都不知道,遇到了很多问题。

  1. 曾经有团队反馈,他们一个 App 从立项到正式上线花了大概三个月时间,大量的时间花在寻找各种文档上,以及找各岗位帮忙对接的事情上。

  2. 爱奇艺 App 里面 APM 日活数据,竟然连公司的前台都有权限看。

  3. 每次搭建一个新系统,都要搭建一套自己的权限管理管控,甚至每一个系统之间定义的产品线都是不一样的。繁冗的事情很多,根本没时间做数据沉淀。

针对上面提到的情况,开发了我们自己的中台叫 QMAS。平台整合有三方面优势,第一:一站式服务接入,提供一些工单权限申请。第二:统一的决策管控,各平台不会存在角色之间互相不一致的情况。第三:一站式浏览体验,尽量抹平各个平台存量差异,然后直接在 QMAS 上进行增量平台开发。

举一个例子,以前一个推送平台的申请,大概要两周左右。创建一个申请,然后给各个公司的商务做审批,再发给爱奇艺的推送,爱奇艺的消息系统再确认。这些都需要邮件来往,非常麻烦。现在直接在 QMAS 上一键申请就好了,接入效率大幅提升,且信息得到沉淀,还能复用 QMAS 的权限申请。

平台运营

关于发布运营,这里着重介绍两个平台,一个是互动平台,一个是用户行为平台。以互动剧《他的微笑》为例。这里面提到一个分支剧情,你可以进行选择,像游戏一样。爱奇艺已经有好几部这种互动剧了。跟传统的一条故事线相比,我们提供一些分支剧情。甚至有些综艺频道,能够进行一些视角切换,比如说不同的导师的视角来看舞台。还可以提供一些竖屏的小视频互动。

IVOS 应用场景,第 1 个平台主要是给运营平台做一些配置策略和场景。还提供一些非剧情类的互动、气泡广告,这些都能做互动。第 2 个是互动制作平台。

另外搭建了一个叫做用户行为分析的平台,可以看到每一个场景,每个页面的流量是从哪里过来的,这个主要是给产品同学用,能看到用户行为路径大数据的可视化分析,能够知道用户的转换留存的原因,辅助实现业务的快速增长。

研发支撑

看一下研发支撑部分。这是最近刚成立的 10 人的虚拟小团队,在打造爱奇艺 CI/CD 研发中台,主要囊括项目管理平台,打包平台上线,还有版本管理以及渠道管理和运维管理运维平台。这是面向整个公司做的,另外也会监控整个流水线,还有各个后台的平台稳定性,服务器日志等。

SDK 对于移动中台来说是非常重要的,所以在 QMAS 搭建了一个 SDK 管理平台,就是为提供方和接入方搭建了一个桥梁:

  • 对提供方来讲,可以非常方便的去创建发布,以及做一些成员管理。甚至测试可以针对 SDK 做一些预发布的测试。

  • 对接入方来讲,可以非常方便的看到移动中台到底有哪些 SDK,哪个 SDK 具体什么作用。并且可以通过内部 IM 系统,直接找到对应的功能。

其次是搭建了一个移动 App 脚手架,将常用的一些功能、业务组件、基础组建、后台服务都陈列在脚手架上。脚手架有三大好处:提升开发效率,避免踩过的一些典型坑,以及为 App 建立一个一致的基础设施,方便做跨 App 的功能性升级。在新 App 已实验过,大幅提升了开发效率。

脚手架使用姿势也比较简单,首先是把代码拉下来,在 QMAS 上把各种后台申请下来之后,保存在基层配置里,之后基本上就能跑起一个可运行的 App 了,然后在上面再进行自己的业务开发。我们测出来一个新 App 的创建,大概从两个月左右缩短到两周,因为以前的很多繁冗的操作都不需要了。

接下来讲一下框架组件,大家知道移动应用的一个技术跃迁,从传统的 Web 开发,到开发独立 App,可以看到各种各样跨平台框架都出来了,所以大家希望一套代码实现在多个平台上,这时候就是所谓的分久必合的时代。特别是 5G、IoT 时代的到来,这个时候甚至可能要提供跨终端开发,这就叫分分合合时代。

当然我们现在处于跨平台时代,所以爱奇艺中台也沉淀了非常多的动态化框架,其他 App 想用都是比较方便的。H5、小程序、小游戏,还有最近的 Facebook RN,还有自己开发的一些插件化热修复框架,以及 Flutter。

这里重点介绍一下 Qigsaw 框架。Google 开源 Google APP bundles 之后,我们看到一丝曙光,就是可以复用 APP Bundles。Google 将他的一些组件插件放在 Google Play Store 上面,然后底层的 runtime 负责合并和加载。

而我们要做的事情,就将它的 runtime 替换成 Fake 的一套,保证 runtime 接口是完全一样的,用爱奇艺的 CDN 替换 Google Player。原理就是基于 Google 一些原生的 App Bundles 工具链,山寨 Play Core Library,直接复用到原生的一些开发工具类和文档,开发体验非常好,稳定性非常高,我们只有一处 Hook,从 4.0 开始就支持了。另外就是国内国际双轨制可以做无缝切换,对于国内的开发来讲,它只用 Qigsaw 开发框架就好了,而对于国外的用户来讲,直接用 App 的开发环境就好了。开源地址:https://github.com/iqiyi/Qigsaw

目前已经在非常多的 App 落地如爱奇艺极速版、随刻、快手等,崩溃率在爱奇艺上几乎为 0,启动成功率在 99.5% 左右。

高可用高性能

讲完了框架组件的话,接下来看一下高可用高性能。提到高可用高性能、高稳定性,首先想到的可能就是 APM。APM 现在提供了这么多功能,从崩溃异常和用户交互,网络热修复,用户调试,以及帧率、ANR 等。APM 对后台提供实时性、大数据、全覆盖,还有很多维度的支撑。

通过对一些设备进行数据采集,经过 CDN 和 QLB 的 Balance,然后再到 Nginx,最后收集到 HBase 和 ES 里面。经过符号解析,到前端展示。一旦报警,通过内部 IM 或者邮件进行通知。

除了 APM,我们成立了一个虚拟团队,在打造一个全链路的监控平台,主要作用就是通过统一的投递规范,然后收集整个端到端的日志、链路数据,实现链路可视化。可以非常方便的看到链路瓶颈,进而做一些可优化的事情。另外可以做监控报警,实现故障快速定位。目标是线上定位问题的效率能够缩短至 20 分钟。

除了全链路监控,我们打造了一个移动日志平台,实时记录一些重要的日志,当触发一些异常场景,会自动把它上传。

最后再讲一下无线网络基础组件,包括网关和 HTTPDNS。从有线网络进入到无线网络之后,因为有些网络相对于无线网络,他的拓朴结构变得复杂了很多,多了无线基站,核心网络等。所以这个时候会出现很多问题,比如用户说网络太卡了,页面打不开,然后又有各种植入广告。然后 DNS 信息的话,各种运营商的 DNS 又不靠谱,他们 TTL 甚至一个月之后才生效。还有用户可能被调度错误,武汉用户可能被调度到北京的机房去。

针对这些问题,我们提供了一些 HTTPDNS 的网关方案。当然还有一些小的像客户端的一些复合连接等。然后 DNS 主要是起到一个防劫持,另外一个是做容灾的作用。特别是后台出了问题,我们可以及时的做一些更新调度,由于离用户侧比较近,所以调度会比较及时。

还有就是提供了一个网关方案,是一个自定义的 Protobuf 协议,好处有 4 点:

  • 没有 SSL 消耗,像 iOS 必须使用 HTTPS,有网关自定协议的话,可以绕开限制;

  • 劫持成本比较高,因为是自定义的协议;

  • 提供一个比较稳定的长连接系统;

  • 节省建连时间,因为是一个稳定的长连,所以 TCP 的三次握手基本上不需要,可以作为一个域名的收敛方案。

大家所有的网络连接,从原来的连接各种各样的业务后台,到现在直接连一个通用网关代理,帮你做域名转发的事情。可以说,中台是一种技术趋势,但并不适用于所有公司、所有技术团队。而作为架构师,技术管理者,是有必要了解中台的技术思路的,不管是数据中台,还是业务中台,或者是移动中台,其思想是可以变通应用在各个领域的。

文章来自:架构头条

也许你还想了解2020爱奇艺卡通人物检测识别挑战赛,点击“阅读原文”,前往大赛通道!

扫一扫下方二维码,更多精彩内容陪伴你!

爱奇艺 App 中台技术实践相关推荐

  1. Android篇 | 爱奇艺App启动优化实践分享

    导读 性能优化一直都是各个APP推进中的重点.难点,爱奇艺 App也不例外.在此之前,爱奇艺App Android 版的启动速度虽然一直处于同类App领先的水平,但优势距离其他同类的APP距离一直很小 ...

  2. 二维码扫描优化及爱奇艺App的实践

    写在前面 二维码是一个近几年来移动设备上超流行的一种编码方式(又称二维条码,QR Code,QR全称QuickResponse),它比传统的条形码(Bar Code)能存更多的信息,也能表示更多的数据 ...

  3. 【推荐实践】爱奇艺推荐中台探索与实践

    猜你喜欢 0.某视频APP推荐策略和推荐算法详解 1.如何搭建一套个性化推荐系统? 2.内容推荐策略产品经理的方法与实践 3.京东推荐算法精排技术实践 4.微博推荐算法实践与机器学习平台演进 5.腾讯 ...

  4. PWA技术解析及爱奇艺PC端的实践

    写在前面 文章开始之前,我们先来讲讲PWA,Progressive Web App的缩写,全称直译过来就是渐进式网页应用,也就是一种网页应用,它可以离线使用,可以变成独立应用安装到系统中.它非常的轻量 ...

  5. 得到、微信、美团、爱奇艺APP组件化架构实践

    一.背景 随着项目逐渐扩展,业务功能越来越多,代码量越来越多,开发人员数量也越来越多.此过程中,你是否有过以下烦恼? 项目模块多且复杂,编译一次要5分钟甚至10分钟?太慢不能忍? 改了一行代码 或只调 ...

  6. 腾讯技术团队人手一份的Android组件化实战笔记(含得到、微信、美团、爱奇艺APP架构项目及源码)

    前言 以前的Android开发大多用的中心化管理思想,将相同的资源集中进行管理.随着项目的发展,弊端渐显:集中管理的资源越来越多,多人开发也越来越麻烦,时常牵一发而动全身. 尤其是在大公司或者是大项目 ...

  7. 爱奇艺数据中台的建设实践

    导读:随着市场对数据价值的认可,促进了数据在各行各业的爆发式增长,以及大数据设施的快速演化,同时也带来了不少新的数据问题:解决这些问题,发挥更大的数据价值,成为了各大公司的重点工作.爱奇艺通过数据中台 ...

  8. 爱奇艺推荐中台探索与实践 附下载

    爱奇艺在高速业务发展过程中出现大量业务需要提供推荐服务的场景,然而业务团队一方面没有足够的推荐领域知识,另一方面也没有足够人力去搭建一套完善的推荐系统,导致业务团队很难提升各业务内的推荐效果. 爱奇艺 ...

  9. 爱奇艺App架构升级之路——64位适配探索与实践

    背  景 随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑 ...

最新文章

  1. Linux导入ora-39070,impdp 导入数据报ORA-39002,ORA-39070,ORA-39002, ORA-39087
  2. 使用钩子函数[4] - 钩子链和 CallNextHookEx 的返回值
  3. php 输出图片给js,如何在php中利用croppic.js对图片进行剪切并上传
  4. 今日头条成功的核心技术秘诀是什么?深度解密个性化资讯推荐技术 本文作者:AI研习社 2017-07-05 12:24 导语:从“内行”的角度解密个性化资讯推荐技术。 雷锋网按:本文系知名 IT 技术资
  5. 安卓canvas设置HTML,安卓开发中view和canvas的理解
  6. 百度兴趣点下载工具设计和实现
  7. tourist取模模板
  8. 虚拟串口工具Virtual Serial Port Driver(VSPD)
  9. XML配置文件中的Spring配置文件
  10. oracle tsn文件,无法启动OracleOraDB10g_home1TSNListener服务
  11. FFmpeg在Windows系统下的编译过程
  12. 腐蚀rust服务器命令_【使用 Rust 写 Parser】2. 解析Redis协议
  13. pillow支持python 2和python 3_python3读取图像并可视化的方法(PIL/Pillow、opencv/cv2)...
  14. Echarts数据可视化series-heatmap热力图,开发全解+完美注释
  15. 网上收集总结一下mssql( 部分)
  16. gps天线拆解图片_威旺M20如何拆解中控导航及找出gps天线
  17. Android 屏幕适配tips
  18. java jtable 单元格合并_JTable单元格合并AAA
  19. 英文文本大小写的转换
  20. Android获取所有App信息

热门文章

  1. 二叉树的前序中序后序遍历
  2. java Servlet内存马
  3. Linux:内存情况处理
  4. python数据可视化案例销售数据_Python数据可视化教程之Matplotlib实现各种图表实例...
  5. 30天背完这38页笔记,掌握高中英语3年高频短语与核心句型
  6. 在小程序授权公众号,获取公众号的code(前端)
  7. 华为手表gt2搭载鸿蒙,华为手表GT2规格泄露,或搭载鸿蒙系统
  8. jenkins配置qq邮箱服务器
  9. MacBook如何压缩更方便呢?看这里!
  10. 手机邮箱格式怎么写你知道吗?带你注册个人邮箱账号