Coinbase的成功过渡到原生

2021-05-15 08:06:37

截至2021年1月,Coinbase iOS和Android应用程序已转交原生开发以反应本地,所有移动工程师现在都在单个代码库中进行协作。从本地到原生的过渡到原生物没有发生过夜,并为了帮助那些冥想那样决定的人,我们想讲述我们在这里的故事。具体而言,我们希望分享我们的故意和有条不紊的测试和观察结果的过程,然后在越来越多的争执的试验中提高赌注,因为这种方法对移民的成功至关重要。

为了使这一技术转变的影响,铸造为5600万用户提供金融服务,仅在2021季度生成18亿美元。特征或缺乏性能的回归可能对客户和业务产生严重影响。

我们的本机码库的大小也很值得注意。迁移以重新实现200多个屏幕的原生意味着,其中许多包含大量业务逻辑。过渡还涉及培训我们的30多位本土工程师,同时继续进行进步,建立新功能和落日我们的遗留应用程序。有许多动件,但我们能够在迁移的每个阶段提供显着的产品性能改进。

当Coinbase成立于2012年时,它只有一个网站 - 我们于2013年开始我们的移动计划。我们发布的第一个IOS和Android应用程序分别在Objective-C和Java中编写。

到2017年,我们拥有一支小组的Android和IOS工程师,致力于这些应用程序,但尽管我们的努力很大,但我们正在努力缩放。在那一年的过程中,我们只能聘请一半的移动工程师作为Web工程师。此外,虽然Web工程师看到显着的生产率收益,但平均移动工程师的速度仍然停滞不前。由于我们的扩展努力继续产生令人失望的成果进入2018年,因此越来越明显,我们需要提高移动平台上的迭代的增长和速度速度。

需要更改策略,因此我们决定返回返回并思考我们如何从一个原则的角度来构建产品。在Coinbase,由交叉功能团队建造和维护主要功能,通常由2个后端工程师和每个支持的平台(Web,iOS和Android)组成的2个前端工程师。这种结构需要大量工程师维护我们产品的单一垂直。这也意味着工程师有点偏离在同一平台上的其他工程师,使得难以协调更大,系统性的变化。

从这个角度思考导致我们提出问题:如果我们可以减少8个健康的特征团队,那么每个客户工程对都被隔绝在一个单独的平台上 - 到5名工程师 - 其中多个客户工程师可以在所有三个平台上工作。

我们假设这可以大大降低我们的整体人员配置要求,提高我们的团队的效力,并在客户平台上增加工程师的关联性。与此同时,我们也相信获得效率不可能是唯一的目标;我们制造的任何技术变更也必须为客户提供改进的质量和表现。这一思维线导致我们开始看不同的跨平台技术。

在这个阶段,我们已经拥有一个功能丰富的网络工程平台,建立在反应之上。在探索许多不同的跨平台技术平台之后,我们决定原生物是我们的最佳选择。它利用我们已经知道的技术堆栈,并提供了一个明确的路径,甚至可以在移动设备和网络上进一步整合。

一旦我们达到了技术平台的对齐,我们创建了一个计划逐渐探索它的产品表面。我们希望通过以低赌注领域开始迁移,然后逐渐增加范围和影响,因为我们开发了能力和信心。在几个月的初步研究后,我们降落了一个3部分战略:

从一个绿地探索开始。我们决定将原生反应的第一个实验的地方是一个完全的绿地环境,在那里我们可以评估该技术而没有天然<&gt的复杂性。反应本地集成。从前端角度来看,Pro是我们最具性能密集型和复杂的产品,用户一直在要求移动应用程序。这似乎是我们探索的完美候选人。如果原生物可以处理Pro移动应用程序的要求 - 这涉及技术上具有挑战性的方面,如实时价格和深度图表 - 我们将具有高度信心,即它可以满足我们的其他产品的需求。该项目还将允许我们允许我们评估开发人员速度,并确保我们可以通过培训我们的网络工程师进行有效的原始工程师。

探索布朗菲尔德重写的样子。我们决定探索的下一个区域是一个棕色菲尔德集成,在那里我们将原始的React融入现有的本机应用程序。我们首先用React Native重建我们的onboard流程,然后在Pro移动应用程序(React Native)和主乐队IOS和Android Apps(Android应用程序之间共享它们。 Coinbase目前支持超过100个国家,因为不同的司法管辖区具有不同的法规要求,我们的注册经验需要动态 - 适应每个用户的位置和身份配置文件。这些流量是我们移动应用程序的最古老,最复杂的部分;即使是增量的变化也可能是昂贵的。随着独立专业产品的推出,两次重新实现两次会非常昂贵,所以我们看到这两个探索在棕色地区环境中的探索并在两个应用程序之间创建共享的船上流动。

在经验教训中展示开发这些Greenfield和Brownfield解决方案,请执行完整的核心产品重写。如果我们在前两个阶段成功,我们假设我们可以在React Native中重写完整的Coinbase应用程序。当我们最初创建策略时,我们不确定此重写是否是一个增量棕色菲尔德重写(我们在逐渐重写屏幕)或绿色菲尔德重写(我们从划痕开始的地方)。我们将此实施详细信息留到了我们从前两个阶段学到的内容。

通过我们的长期策略,我们开始了Pro移动应用程序。经过6个月的建筑后,Pro移动应用程序于2019年10月发布并超出了我们的期望。我们看到积极的业务结果,对平台上的性能挑战(和解决方案)建立了良好的理解,并开始充分了解开发人员生产力的阶段功能变化,反应本地。它还展示我们,网络工程师可以在相对较短的时间内成为生本地开发人员的有效反应。

我们通过Pro移动应用程序的成功鼓励,我们开始2阶段 - 一个棕色菲尔德的流量重写。该项目于2019年中期启动并在6个月后发货,再次满足我们为质量和商业指标提供的目标。由于船坞模块被写入React Native,所以它能够在CoinBase和Pro移动应用程序之间共享。

虽然船上重写的结果无疑是积极的,但布朗菲尔德的方法确实有其挑战。例如,每个对onboarding模块的变更都需要使用本机绑定重建包,然后使用共享模块重建本机应用程序来手动测试。这对于只有网络或本机经验的工程师来说,这可能是一个特别令人沮丧的过程,因为在共享代码上迭代可能需要了解所有三个平台。此外,由于这种方式的发展可能比完全本地开发更耗时,所以它留下了一些工程师 - 无论是Web和本地人 - 想知道为什么我们对自己的反应造成困扰。

如果您阅读Airbnb的出色日落反应本地文章,这些挑战可能听起来很熟悉。我们花了很多时间与Airbnb的工程师说话,并试图从他们的经历中学习。我们感谢团队分享他们的旅程细节,因为这些信息在决定冰库的最佳路径方面非常宝贵。我们的一个关键外卖是,布朗菲尔德的方法似乎是他们面临的许多挑战的核心。虽然逐步迁移的想法乍一看了 - 但在没有完全重写的前期成本的情况下,利用原生对新功能的反应的好处 - 它在长期内引入了重要的技术和文化迁移风险。

在这些观察中作为背景,我们的腰带下的两个成功的项目,我们有信心向前移动,重新形成主要的Coinbase移动应用程序。我们决定:

我们将首先重写Android。我们相信Android将是两个平台的难度,并觉得如果我们可以从质量,性能和速度角度来看它,我们就可以在iOS上推出一个明确的道路,以便快速推出。建筑Android首先允许我们并行继续在原生IOS上进行全蒸汽,确保我们的客户继续看到我们在重写上工作时的经验改进。

我们会做一个完全绿地的重写,而不是采取棕色田/零碎的方法。基于我们自己的经验(使用Pro和船上模块)和从Airbnb等公司中了解的经验教训,我们得出结论,布朗菲尔德项目的复杂性提高,引入了在与之间的国家之间“卡住”的风险,并为长时间的文化分歧创造了空间在不同平台上的工程师之间。

鉴于我们到目前为止所见的速度与原生的反应,我们估计我们可以在6个月内全额重写我们的产品。我们也觉得在该统一平台结束时,在重写统一平台的情况下,我们最终决定废除项目的事件中的成本。我们开始于2020年3月在Android应用程序重新形成,并且几乎完全在6个月后提供完全重写的Android应用程序。我们将重写作为实验和测量结果推出,这对我们所针对的关键指标显示出积极的影响。

随着Android的积极结果,我们决定用重新形成Coinbase iOS应用程序前进。我们花了下一季度“追赶”关键功能IOS团队已与Android重写并行建立。然后,我们将新的React Mode Code Base推出到iOS客户身上作为实验,并在2021年1月下旬完成了该卷展栏。类似于Android,我们在我们针对的关键指标中看到了积极的影响。随着IOS的原始作品推出,我们已经完成了我们产品的完全迁移到这款新技术平台。

在2020年代中期,我们大约拥有七位Android工程师和18名IOS工程师,在Coinbase移动应用程序上工作。截至今天的Coinbase's React Natiant Repo有113个贡献者,包括大量的Web工程师,他们以前将无法在移动设备上贡献。我们还看到了积极的结果,通过跨越我们的本土移动工程人才,由于技术的变化,耗材很小。来自iOS和Android背景的工程师现在正在进行高影响力。

我们的团队也在2018年预期的时候开始构建自己,统一的客户团队在三个平台上工作。目前,这些客户团队在网站和移动方面都不完全可畅通,但我们正在到达那里。我们认为,在我们的路径中逐步为所有CoinBase应用程序创建一个统一的客户平台,因此转换响应本地的转换只是一个统一的客户端平台。

我们现在从3到2个应用程序平台 - 反应本地和React Web - 但我们希望达到1.5,我们在2021年有一个雄心勃勃的路线图。我们正在构建一个跨平台设计系统,基于GraphQL的通用数据层,以及收敛Web和移动工具所需的基础。我们想象一个工程师可以通过最小的上下文切换在网络和移动应用程序上发货的世界,以最小的上下文切换,在我们的应用质量中重新投资获得有效性。

从想法到最终推出在iOS上,我们花了两年的逐步探索,实验和执行。我们也相信我们仍在开始与本统一的客户平台完成的开始。下面可以在下面看到我们的研究和里程碑的凝聚时间表:

2018-12:工程师分享了一个唱库的提案,以探索当地原产地作为移动平台的可能性

2019-03:乐队队员团队的成员调查跨平台的几个技术方向,并决定与React Native继续前进

2020-07:冰库的所有Android和IOS工程师都可以选择通过内部培训计划来加速原生的反应 2020-10:在Android和Coinbase的重写的Coinbase应用程序启动,以重新形成Coinbase.com iOS应用程序 2021-01:Coinbase iOS应用程序推出到100%的用户 在未来几个月中,我们将更多地发布更多关于我们在全球5600万用户使用的移动应用程序的体验。 我们将发布探索原生物的技术挑战的文章和我们沿途所学到的教训。 我们希望我们的应用程序对于考虑建筑产品的任何人使用React Native,我们的应用可能是一个很好的参考。 如果您有兴趣开发React Native Technologies并建立开放的金融系统,请考虑我们的开放角色并申请职位。