演讲 | 蔡泸炜(宝宝巴士CTO)
活动 | 又拍云 Tech Minds NO.08 福州场
整理 | 西北

又拍云主办的 Tech Minds NO.08 福州场,宝宝巴士 CTO 蔡泸炜作为嘉宾带来《宝宝巴士的工作流程和自动化》的分享,揭开宝宝巴士同时运营 150 款 App 的秘密。
蔡泸炜,宝宝巴士 CTO,资深系统架构师。主导并开发大型对日系统,2D 网游引擎,自动化模拟/测试引擎等,最早敏捷开发的推进者,崇尚开源、自动化及极简主义。拥有丰富的团队管理经验与扎实的研发技能的开发者。

宝宝巴士CTO蔡泸炜

国内早教行业的先驱

宝宝巴士是一家提供智能早教产品的互联网公司,目前已成功出品 150 款 App 、近 600 款儿歌和 50 集的动画片。

App Store 流量排行榜

2016 年 8 月 App Store 的全球公司流量排行榜,宝宝巴士仅次于腾讯、百度和阿里巴巴。
经过三年稳健发展,宝宝巴士每款产品支持 17 种语言,已覆盖全球超过 50 个国家,在东南亚、俄罗斯、美国、日本、阿拉伯地区都受到诸多小朋友们的喜爱。

宝宝海外市场发展情况

海外市场印尼发展最好,阿拉伯和阿联酋占有率也很高。

周周有新品,月月有升级

宝宝巴士拥有一系列用户体量巨大的产品,需要我们开发一套通用的标准化生产流程解决方案,支撑起庞大数量的产品维护和创新。

宝宝巴士研发SOP

宝宝巴士的工作流程包括选题、开发、用户验证、测试和发布上线。其中最重要的一点是:保证选题质量,后面整体的开发、测试和快速迭代才能高度适配。

如何选题?

首先由策划选定项目,产品体验组与策划 PK,选题是否符合问卷调查的结果,是否满足孩子和家长的实际需求等,经过严格的筛选,保证选题质量。
经历两轮敏捷开发升级后,我们现在的开发过程是策划先行,接着美工设计,最后程序员开发。这种方式可以保证程序员介入时,能够马上运作,并且和美工高效配合。

开发完成之后,签出版本,进行自动化测试,包括简单的 Monkeying 测试和闪退性测试,保证程序不出现大的异常,再将测试出来的产品,让美工、技术一起和幼儿园的孩子体验改进。我们对测试比较严格,从生产开发到测试,会限定三轮测试,一旦超过三轮,这款产品必须上线或者打回。

宝宝巴士产品结构图

从支撑产品的技术结构来说,“框架支撑”是 App 研发环节较为重要的一环,框架会开发通用的SDK 套件如自媒体广告,游戏特效,同时联动工具组、自动化组进行配合,提供自动化测试、打包服务,形成一套标准的流水线。

宝宝巴士已开发了 200 多款产品,但是由于苹果不允许同时在市场上存在大量产品,我们现在市场上有 150 款产品,在高峰的时候包含 iOS、安卓、TV、桌面端( Window 和 Mac ),还有第三方游戏机等 40 多个渠道。

早期我们需要将产品分发到不同的渠道上进行下载,获取来源,判断哪个渠道效果最好。当时总共的渠道数有 40 个,语言数有 11 个,意味着宝宝巴士要出大概 60000 多个安装包。 这时就需要合并部分长尾渠道,重点抓量大的前 15 名。同时语种进行优化,最小化差异包,只剩下阿拉伯包(文字左右字颠倒)和通用包的情况。后面,通过公式的进一步优化,优化的安装包在 150x20x(2~3) 个。

我们是如何完成周周有新品和月月有更这两件事情的呢?必须要有一个稳定,扩展性好,定制化强,可以支撑服务各种需求、多引擎,App 和渠道的工作流程。

我们会分两条开发线,一条新功能尝试线,一条全线升级线。首先,新功能尝试线会尝试某个新功能,并进行快速上线验证,并通过 A/BTest 观察发布出去的产品效果,如果稳定运行并且效果正向,那么我们再合并到真正的全线升级当中去。其次,全线升级线完全进行每月稳定开发、上线,保证市场版单的活跃。所以实际上是的两条路径并行,达到快速配合。同时技术团队要求每年技术实力、工作效率提升 20% 以上,快到让别人根本没有办法追上我们。

合理的人员分配

宝宝巴士团队架构

宝宝巴士的技术团队分成游戏团队、应用团队和服务团队三个。

游戏团队分成 2D 和 3D 团队,下面有四个组,第一个是新品组,只负责持续开发新品,后面的操作由其他的组完成,如:产品加国际化语种,产品再更新等。第二个是框架组,负责联动其他部门,进行接下来的测试、发布等。第三个是插件部门,负责下一版本内容集成,类似于新功能组或者效果组。第四个综合组负责这三件以外的事情,比如说打包和更新。

应用团队即家长线团队,包括应用产品组和微信组。应用产品组主要服务于家长群体,制作宝宝巴士大全产品,微信组负责辅助账号的建立和家长用户的沟通。

服务团队分为服务端团队和工具团队,工具组包含了四大块业务,第一是基础工具的研发,通过流程定制生成工具;第二插件组负责如 IDE、 3Dmax、Eclipse、Sublime 等插件;第三数据组负责数据统计,并结合第三方数据统计平台进行整合分析,推导出有效结论。第四自动化组负责自动化开发、自动化测试、自动化发布、自动化运维、自动化模拟。

历史演进

宝宝巴士制作流程经历了三代,第一代是在 2013 年之前,处于市场红利期,我们推出的产品,在移动早教行业是比较高端的,市场会主动帮你推荐给用户,带来流量。但2013年以前iOS和 Android 是独立开发的,且 Android 使用微云引擎开发成本高昂,所以团队基本上只有开发和策划。当时就已实现周周有新品,我们需要考虑加速整个产品线流程。

我们的做法是:策划八款产品,iOS 和 Android 两个部门同时接单各接四款产品,同时开发。三个月之后,两组将开发出来的产品交叉,iOS 去翻译 Android,Android 去翻译 iOS,以保证最快的开发速度。

我们应该算是比较早使用 Lua 的,大概 2011 年下半年,我们已经开始用 cocos2d- iphone 做游戏,尝试整合 Lua 并制作,只不过当时的游戏是网游。第二阶段,从 2014 年开始,我们 iOS和 Android 做平台合并,同时邀请专家给全团队进行敏捷开发培训,并定制专属于宝宝巴士的敏捷开发流程。

第三个阶段,我们正在进行多维孵化式开发。我们并没有所谓的真正的组,一个程序员他既可能属于技术部,也可能属于某个孵化项目组的成员。一个阶段可能我作为程序员要和美工、策划一起完成工作,下一个阶段位置就变了,我马上要和另外的程序、美工完成工作,依造团队的需求来调整工作。在进行快速孵化的同时,敏捷开发也进行了全面升级。宝宝巴士会开发供策划使用的 UI 定制编辑器,程序员可以同步和美工写代码。当美工画出线框图之后,程序员假想,这是熊猫或者其他动物,再写入逻辑,后期美术程序进行迭代和整合,形成真正呈现给大家的产品。

人员培养

框架组构建出整个框架体系以及一整套流程之后,宝宝巴士 2D 的开发人员只要懂得一门开发语言,如 Java,经过三天就可以上手进行游戏开发。复杂如 Unity3D,大概经过十五天培训也可以进行开发。这其中我们会通过一对一、结对编程、视频教程、自动化开发工具的使用进行人员培养。

这里需要强调最小化编程思想,程序员仅仅需要去做实际业务开发,不需要关注其他事情。做安卓开发如启动、出错定位和打包缓慢,调试麻烦,很多时候老的机器运行效率极低。宝宝巴士有自己高度定制的模拟器,能保证快速的开发,不用对修改的产品代码进行再编译,再打包,刷新 1 秒内立刻功能就出来了。

部门流程

U3D的整体流程

以 U3D 开发为例,在完成策划内容后,我们会邀请体验组和一位具有决策权的产品经理启动判断策划内容是否优质。

如果策划通过,会进入到美工的简单设计和 Demo 的制作。Demo 制作完会去验证,如果验证通过,则进行详细的功能开发。待开发到大体完成,进行内测,之后会同步加入音频、上线文案、美宣等。2D 的业务流程也类似。

全线升级是最复杂的,在开发完成后,会产生五六千甚至七八千个包。全线升级团队会使用自动化工具进行出包,并且实现隔夜出包(自动化测试在白天完成,晚上能够把通过的安装包全部打出来,第二天交由测试组进行人为的功能性测试)。综合组即全线升级的后期负责团队,将打包工作交给机器完成,配合市场进行产品对接。

全线升级工作流程

家长线只有一款重头产品-宝宝巴士大全,所以家长线这块我们会直接采用 AB 组同时进行,增加工作效率。同时每周为产品迭代周期的快速迭代,持续集成。

家长线开发流程

高效率的自动化生产工具

由于游戏的第三方框架研发速度不够快,且早期它不支持物理引擎、骨骼动画、高低清图智能处理、图像压缩、音视频压缩等功能,且不同设备的支持也不完备。我们就独立的对基于QuickCocos2d-X 2.1.4 的版本进行封装,编写宝宝巴士需要的逻辑内容,改写底层业务,形成了宝宝巴士独有的一套 1.0 的游戏引擎。

要实现在屏幕上渲染一个居于屏幕正中央能够对点击产生反应的精灵,我们采用极简标签化设计及链式设计方式之后,能够将采用传统编程方式 cocos2d-x 需要的 15~20 行代码精简成 1 行代码。

2.0 的架构的升级,从前者如此简易升级到后者,iOS 也是类似的。

构架升级前

构架升级后

自动化工具

自动化打包是自动化发布的一个环节,宝宝巴士现在每个月要发布几千个安装包,我们使用App-admin 的产品后台,自动同步产品后台中的产品信息进打包配置环境,根据需求选择打包引擎、渠道,配置插件。

在打包时,它根据游戏框架版本会有既定的模板,进行模板的快速复制,修改,完成打包。并且打包机制已经实现了分布式接单,可以自由配置物理机器,如:1 台 Mac Pro,1 台 Mac Mini,再加上几个 Windows。 自动打包特点: 1.打包人员一键点击打包; 2.打包完成还可以一键上传到共享方便与测试的沟通 3.统一打包模板和易于找到出包位置,调试方便。

分布式接单特点: 1.有机器就可以介入接单打包 2.打包机器自由竞争,任何一台电脑出了问题不会影响其他电脑继续打包 3.接单电脑拔插式,减缓负荷 4.方便调试,不影响正常出包。

使用 django xadmin 制作的界面,在打包的时候出现的错误都可以捕获,并且显示在对应的文件和运行界面当中。

打包日志页面

产品的基础配置需要怎样的插件可以通过下图所示界面进行选择,比如百度渠道要有百度广告的插件。如果这款游戏支持相册、摄象头,也会在这边进行配置。配置完成之后,就可以出包。现在安卓的打包速度平均值是 25 秒,极限出包虽然速度快但它存在不稳定因素,所以我们取消了极限出包。iOS 的打包速度我们会控制在 60 秒左右。

打包配置

关于Tech Minds

Tech Minds 是又拍云主办的高端技术领导人私享会系列活动,每个月在全国不同城市巡回举办。为了保障私享会的分享效果,参会人数控制在 15 人左右,邀请国内优秀互联网企业的 CTO、技术 VP、运维总监及有技术背景的 CEO 等技术领导者齐聚一堂,彼此交流与分享,共同打造一场围绕技术话题的交流与学习的全干货的社交聚会。

转载于:https://my.oschina.net/upyun/blog/860129

老司机告诉你,如何同时运营更新 150 款 App? | 宝宝巴士 CTO 蔡泸炜 1相关推荐

  1. 老司机告诉你,如何同时运营更新 150 款 App? | 宝宝巴士 CTO 蔡泸炜

    演讲 | 蔡泸炜(宝宝巴士CTO) 活动 | 又拍云 Tech Minds NO.08 福州场 整理 | 西北 又拍云主办的 Tech Minds NO.08 福州场,宝宝巴士 CTO 蔡泸炜作为嘉宾 ...

  2. 我学习 Java 的历程和体会(写给新手看,欢迎老司机批评和建议,持续更新中)

    我学习 Java 的历程和体会(写给新手看,欢迎老司机批评和建议,持续更新中) 最初写这篇文章的时候,是在今年的 9 月中旬.今天,我想再写写这将近两个多月以来的感受. 在今年的 10 月我来到北京求 ...

  3. win10锁定计算机后黑屏,win10电脑突然黑屏无法唤醒怎么办?老司机告诉你解决方法...

    电脑使用时间长了,总会出现一些小问题.这不,一位用户说自己win10电脑突然黑屏无法唤醒,甚至连鼠标的光标也消失了,这是什么原因引起的?其实这有可能是系统兼容性问题,又或者关机的时候没有正常操作.不管 ...

  4. 帧数达不到144用144hz_不看不知道 老司机告诉你60Hz和144Hz的差别

    从去年开始,144Hz刷新率在无意间成为了电竞显示器的标配,市面上主流的电竞显示器都已经配备了144Hz或者更高的刷新率.很多不了解的玩家还在想普通的60Hz显示器和144Hz高刷新率的电竞显示器究竟 ...

  5. 中柏平板装深度linux,老司机告诉你中柏电脑能装深度win7系统么

    电脑的品牌有非常多,部分朋友使用的是中柏电脑,有的朋友遇到了这样的问题,就是中柏电脑能装深度系统么?答案是肯定的,那么中柏电脑怎么装深度win7系统呢?一些朋友对于重装系统比较不了解,所以本期将介绍中 ...

  6. 144hz和60hz测试软件,老司机告诉你144hz显示器和60hz显示器差距有多大

    原标题:老司机告诉你144hz显示器和60hz显示器差距有多大 一.具体区别 近些年144hz的显示器无意间已经成为了电竞显示器的标配,市场上主流的电竞显示器差不多都已经配备了144hz或者跟高的24 ...

  7. 数字化转型“水多深”?IBM“老司机”告诉你

    (上图为IBM大中华区董事长陈黎明) IBM"老司机"又重返增长了.2017年底到2018年前两个季度,IBM结束了长达5年的营收下滑,连接三个季度恢复增长.在IBM的2017年报 ...

  8. 扫地机器人开机充电还是关机充电器_新手机是开机充电好,还是关机充电好,老司机告诉你...

    相信不少人都有这样的习惯,新买的手机基本上都是用完所有的电,才去充电,并且一充还要充满12个小时.问他为什么要这样做,他们可能有的会说,觉得这样可以让手机电池释放更大的潜力.其实这是以前镍氢电池时采用 ...

  9. 怎样才能跳过实名认证_和平精英qq怎么跳过实名认证!老司机告诉你仅需5步

    qq怎么跳过实名认证玩家是否知晓,虽然来说跳过实名认证对于手游来说并没有什么帮助,但是这个方式方法玩家还是需要知道的,这样能够帮助玩家轻松的做到某些事情,而这里就是样式玩家如何进行和平精英实名认证怎么 ...

最新文章

  1. 让植物“张嘴说话”!新加坡“植物机器人”可成为环境探测器促进农业生产...
  2. 2.MyBatis 动态SQL
  3. Java数据结构与算法:红黑树
  4. 今天刚学的idea的debug打断点,Ctrl+u进入Evaluate Expression界面,调试程序事半功倍!
  5. 关于有朋友询问,Spartacus,Fiori,SAP UI5这些术语的关系
  6. What happens when clicking interaction recor工作中心
  7. 谈谈surging 微服务引擎 2.0的链路跟踪和其它新增功能
  8. SQL 语句时间比较
  9. Java 配置maven及阿里云镜像
  10. angularjs php 实例下载,AngularJS Eclipse 1.2.0 插件下载
  11. Windows端口占用情况?
  12. Jexus vs IIS8 非绝对客观对比测试
  13. html+css基础-3-flex,浏览器内核,HTML5新特性
  14. 词云图,词频图,专门统计某些关键词的词云词频
  15. 关于奇亚Chia(XCH)的一些理解,共识机制 - 爆块机制
  16. pycharm(Idea)破解到2100年
  17. Phyton安装MySQL驱动
  18. Your Mac is infected with (3) Viruses!
  19. 链路预测 matlab,链路预测
  20. WZOI-387图像相似度

热门文章

  1. 企业内部激励机制设计·中
  2. 合同管理系统为企业打通合同管理流程
  3. 安卓miracast花屏_Miracast无线投屏技术优缺点有哪些?
  4. python画三维几何图形拼成的图案_The discovery of oil _______ in an era of employment and prosperity....
  5. 第三章 可视化ETL平台——Kettle
  6. [教程] 教你如何实现荣耀3C支持OTG功能,解决荣耀3C的唯一缺点
  7. python和c 情侣网名_与故里相对的昵称
  8. 试着读懂你的心 - 闲鱼聊天小助手的探索之路
  9. 这代码写的,狗屎一样 !
  10. RHEL6-1:系统安装