InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

从简到繁:Instagram iOS 团队如何随着产品一同成长

  • 2019-09-21
  • 本文字数:1056 字

    阅读完需:约 3 分钟

从简到繁:Instagram iOS团队如何随着产品一同成长

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(微信同手机号)。

2019-09-21 14:54738

评论

发布
暂无评论
发现更多内容

CWE4.8:2022年危害最大的25种软件安全问题

华为云开发者联盟

安全 后端 开发

研发了 5 年的时序数据库,到底要解决什么问题?

TDengine

数据库 tdengine

开源一夏|数据结构课设:基于字符串模式匹配算法的病毒感染检测问题

是Dream呀

开源

开源一夏 | 数据结构课设:图书信息管理--顺序存储和链式存储

是Dream呀

开源

A tour of gRPC:06 - gRPC client straming 客户端流

BUG侦探

gRPC RPC

制胜精细化运营时代 华为应用市场打出内容、场景、商业运营组合拳

Geek_2d6073

大数据培训如何部署一个健壮的Airflow

小谷哥

大数据培训班如何选

小谷哥

「全球数字经济大会」登陆 N 世界,融云提供通信云服务支持

融云 RongCloud

isc N世界

百问百答第49期:极客有约——国内可观测领域SaaS产品的发展前景

博睿数据

可观测性 智能运维 博睿数据 极客有约 中信证券

2022年值得尝试的7个MQTT客户端工具

EMQ映云科技

物联网 IoT mqtt 客户端 8月月更

一文搞懂│php 中的 DI 依赖注入

设计模式 依赖注入 8月月更 高级编程

融云「 IM 进阶实战高手课」系列直播上线

融云 RongCloud

IM 连接协议

Python 教程之输入输出(2)—— 输入和输出

海拥(haiyong.site)

Python 8月月更

参加前端培训后程序员能找到工作吗?

小谷哥

搭建属于自己的知识库(Wikijs)

开源 wiki 知识库 8月月更

大数据培训机构大概要花费多少钱

小谷哥

Redis进阶之路:深度解析Redis单线程架构,图文并茂不能再清晰了

王小凡

Java redis 程序员 开发

开源一夏 | Python Web开发(八):后端开发中的增查改删处理

是Dream呀

开源

我用这一招让团队的开发效率提升了 100%!

Liam

程序员 前端 后端 开发 API

电烙铁的基础知识

单宝华

电子技术 8月月更

不改一行源码,实现 sentinel-dashboard 所有配置支持 apollo 持久化

铁匠

微服务 sentinel 流量控制 sentinel dashboard

学好web前端培训课程方法推荐

小谷哥

创新云集技术咖,工赋汇聚实战派:2022工赋开发者峰会

工赋开发者社区

工业 峰会

全面认识二极管,一篇文章就够了

矜辰所致

ESD二极管 8月月更 二极管 电子设计基础 TVS二极管

开源一夏 | 不会吧,十分钟就能上手Prometheus与Grafana监控SpringBoot项目

知识浅谈

开源 8月月更 SpringBoot实战

用 Lunchbox 在 vue3 中创建一个旋转的 3D 地球竟是如此简单

前端修罗场

3D 地球 ThreeJS

什么是SVN(Subversion)?

龙智—DevSecOps解决方案

svn 版本控制 版本管理 版本控制软件

安全至上:落地DevSecOps最佳实践你不得不知道的工具

龙智—DevSecOps解决方案

DevOps DevSecOps

浅聊组合函数

掘金安东尼

前端 函数编程 8月月更

数字孪生园区场景中的坐标知识

ThingJS数字孪生引擎

数字孪生

  • 扫码添加小助手
    领取最新资料包
从简到繁:Instagram iOS团队如何随着产品一同成长_GMTC_李晨_InfoQ精选文章