《张忻正--Mobile Monorepo With Bazel.pdf》由会员分享,可在线阅读,更多相关《张忻正--Mobile Monorepo With Bazel.pdf(49页珍藏版)》请在三个皮匠报告上搜索。
1、例:撑海量数据的数据平台与架构 例:茹炳晟例:腾讯Tech Lead,腾讯研究院特约研究员正要求:微软雅:最字号 8号 宋体:最字号 10号 等线:最字号 12号Mobile Monorepo With Bazel张忻正哔哩哔哩技术专家张忻正哔哩哔哩主站技术中技术专家加哔哩哔哩10年,证&实践/规划&推动 哔哩哔哩移动App的演化历程。先后参与并组建 iOS业务研发团队,播放器内核团队,基础架构团队,移动程效率团队,现担任业务架构。Monorepo信徒,程化爱好者。苹果粉转,把终端态靠歌的”罪恶”源泉。All in Kotlin Multiplatform ing。录1.We have a d
2、ream Monorepo2.解耦(Decouple)技术3.How 哔哩哔哩的研发模式 语互操作 向接编程 拥抱异步(FRP)4.总结We have a dream 个主流互联公司产品架构(bilibili)作为程师Software Architecture is Hard程师们往Full-Stack向的努作为软件研发程师DiscoverabilityRefactoringCode ReuseNo Version Mess作为软件研发程师Why Google Stores Billions of Lines of Code in a Single RepositoryMonorepo!=Mo
3、nolithA monorepo is a single repository containing multiple distinct projects,with well-defined relationships.以查询为基础的定义作空间multiple distinct projectsbilibili的模块结构well-defined relationshipsbilibili的仓库结构“特”spare-checkout的monorepo02解耦(Decouple)技术解耦技术的运是Monorepo的命线 的最终结果就是消亡(Refactor&Rewrite&Deprecate)进化
4、历史EventBusActionRouter 种uri-畸形invoker的段DIFrameworkEventBus/ActionRouterEverything is an anti-pattern when abused or used inappropriately.过度依赖险线程安全险性能险内存泄漏险难以追踪和维护Gripper静态,编译时的依赖注框架Gripper-Kotlin2.Hilt的Compiler持KSP,同时修改产物为Kotlin3.实现向协程的Dagger封装,以及异步编排核1.Dagger2/Hilt runtime修改为Kotlin Gripper-Swift1.仿
5、Dagger2/Hilt 实现Swift版本的runtime2.实现异步编排核3.Compiler03How研发模式 个仓库(上提到的特spare-checkout)环境:接近 0 环境配置(除了Xcode toolchain)语:Kotlin Multiplatform,ObjC/Swift,Java,C/C+,TS/JS,Bash,Python,Node,Go,Ruby 产物:Unix-Like Executable,iOS(IPA),Android(APK),Library artifacts 特性:Speed:缓存、并发、增量 Repeatability:显示配置、沙盒 Scalabi
6、lity:skyframe-磁盘缓存-分布式缓存、本地执-分布式执 Flexibility:skylark,多语之间的互调,IDE持IntelliJ(GradleJVM),IDE持Xcode(xcodebuild),IDE持VSCode(c family)babel(个仓库)构建集群远使源码构建 开发者只可看到有权限的录的代码,权限将使编译后产物Babel 取圣经旧约创世记 第11章记载的巴别塔:当时类联合起来兴建希望能通往天堂的塔;为了阻类的计划,上帝让类说不同的语,使类相互之间不能沟通(但是类最终定能够相互理解)。Babel 具和巴别塔样,是个愿景,即使有各种阻拦我们依然追梦。Bazel0