在GMTC北京2018大会上,李晨讲师做了《从简到繁:Instagram iOS 团队如何随着产品一同成长》主题演讲,主要内容如下。
演讲简介:
随着移动开发团队的扩大和产品功能的增加,代码库也迅速变得臃肿,并带来一系列挑战。代码耦合、代码搜寻和重用变得更难、merge conflict 变得更频繁、编译速度变慢、AB 试验变得繁多。以上种种,都将导致开发效率大幅降低。Instagram iOS 团队为此做了诸多努力,确保工程团队扩大的同时,能产生良好的协同效应。
演讲内容包括:
1、代码模块化解决方案:IGListKit + MVVM。
Instagram 产品设计风格是大量的列表。
(1) 早期大量使用了 iOS 原生 UITableView,方便极少数工程师进行快速开发。
(2) 随着列表变得复杂,Instagram 开发并开源了 IGListKit。
2、大规模 AB 试验:
AB 实验是社交产品快速迭代以及有效测量的核心工具。当团队扩大后,试验数量和相互干扰增多。
(1) Instagram 通过对实验组进行空间(用户组)和时间(先后)的分离,确保试验的独立有效性。
(2) 让工程师、产品经理、数据科学家、设计师等共同参与试验决策,防止出现实验结果解读的主观偏差。
3、加快编译速度:Buck + Focus + Focus Project + Phabricator
代码解耦重用了,试验相互分离了,更多工程师能方便地协作了,代码量也增长更快了。这个时候,编译速度就会变得越来越慢——XCode 不是为大型代码库所设计的。
(1) Buck:通过并行编译和增量编译,加快编译速度。
(2) Focus:随着代码量进一步增加,Buck 编译依然需要大量时间。Focus 的解决思路是,在服务器端预先编译好大量组件,生成 ipa 时直接下载这些组件。工程师只需要专注少量组件的代码,实际操作中只需要编译这部分组件。
(3) Focus Project:每个团队可以定义自己常用的一系列组件,在编译速度和工程师可以快速打开的源代码之间获得平衡。
(4) Focus 解决了编译速度的问题,但工程师通过 XCode 搜寻代码变得困难了。解决方案是采用 Phabricator,代码上云,提供便捷的浏览器搜索、代码历史查看工具。
听众收益:
了解热门社交产品如何应对代码库由小到大的挑战,如何在代码量迅速增加时确保团队开发效率,并有效进行 AB 试验。
讲师介绍:
李晨
Instagram iOS 高级工程师
Instagram iOS 高级工程师,负责开发高并发的多媒体聊天工具。专注移动前端与通讯类产品。 前 Apple 员工,负责 Apple Store App 的零售店功能开发。著有《iPad 应用开发实战》一书。 毕业于密歇根理工大学,清华大学,北航,拥有电子工程和核工程的硕士学位。
完整演讲 PPT 下载链接:
https://gmtc.infoq.cn/2018/beijing/schedule
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论