RIBs A mobile architecture that scales together with the team

Slides:



Advertisements
Similar presentations
Native iOS, Android and Windows Development Microsoft | Xamarin.
Advertisements

Amanda Silver Director of Program Management Visual Studio Tools for Client Applications Cross-Platform Development using Visual Studio.
An Introduction To Silverlight Gergely Orosz
Development of mobile applications using PhoneGap and HTML 5
UNIT4 BUSINESS ANALYTICS. page WHAT IS THE PRODUCT? 2 A business intelligence tool kit, specializing in Coporate Performance Management An application.
Microsoft Evangelist Presentation September 13, 2012.
Cool:gen CIS 764, Fall 2007 Presentation By Mandar Haridas.
Home controlling system based on Galileo Final Semester Presentation Started at: Winter 2015 Project supervised by: Mony Orbach Project performed by: Khalid.
Title slide to be used at the start of a module. Developing Mobile Apps Roland Guijt
Developing Mobile Applications using MVVM with Xamarin Forms
Introducing NativeScript [Pavel Kolev Software Telerik: a Progress company]
Developing Enterprise Mobile Apps with Xamarin Loren Horsager CEO, Mobile Composer.
00 Cross Platform Development with Mono Connect at #wp7au.
Symfony web development framework is used to develop rapid, complex and large scale web applications faster and in an effective way.
Understanding Xamarin Development Matt
Developer TECH REFRESH 15 Junho 2015 #pttechrefres h Understand your end-users and your app with Application Insights.
Apache Cordova Tools in Visual Studio
Trunica Inc. 500 East Kennedy Blvd #300 Tampa, FL Cross Platform Mobile Apps With Cordova and Visual Studio 2015 © Copyright 2015.
Copyright © 2013, Oracle and/or its affiliates. All rights reserved. Insert Information Protection Policy Classification from Slide 12 1.
Using NativeScript to develop native apps for IOS and Android
NativeScript – Open source platform to build Native iOS/Android Apps.
/DEV/TM #1 Building Cross-Platform Apps with Xamarin and MvvmCross Flavius-Radu DEMIAN.
2014 Mobile Application Development at LinkedIn Aarthi Jayaram, Engineering Manager, LinkedIn 10/10 #GHC
Build Hybrid Mobile Apps with Ionic, Angular, & Cordova Brian
Snip2Code: Search, Share and Collect Code Snippets Faster, Easier, Efficiently with Power of Microsoft Azure Platform MICROSOFT AZURE ISV PROFILE: SNIP2CODE.
Common Transport Rafael Schloming. Objectives Scaling Engineering Time ● N experts in protocol & language -> 1 protocol expert & N language experts ●
Dell Software Unified Communications Command Suite (UCCS) Provides Flexible, Cross-Platform Management, Reporting and Data Diagnostics MICROSOFT AZURE.
TELERIK APP BUILDER ( Icenium ). POINTS TO DISCUSS  Introduction  Features  Versions  Supported Frameworks.
Building Azure Mobile Apps
Mobile Application Solution
Building Enterprise Applications Using Visual Studio®
Build and Learn ASP.NET Workshop.
Beginning of Xamarin for iOS development
Geospatial Research & Solutions GIS.ASU.EDU
Microsoft Evangelist Presentation
All about Ashley GmbH COMMUNICATION PARTNERS Partner overview.
DevOps Cloud Native Microservices
Red Hat Mobile Application Platform
BMC Integration Service Overview and Architecture
DocFusion 365 Intelligent Template Designer and Document Generation Engine on Azure Enables Your Team to Increase Productivity MICROSOFT AZURE APP BUILDER.
Introducing NativeScript
Unit testing your metro style apps built using XAML
Building Custom Workflows
Multi-Device Hybrid Apps What, Why, and When to Use Hybrid Development Option Ervin Loh ALM Program Manager
Mobile Application Solution
Chapter 18 MobileApp Design
Servoy Delivers-High Productivity Platform to Design, Build and Deliver Business Applications with a Superior Experience on Microsoft Azure Partner Logo.
Haritha Dasari Josue Balandrano Coronel -
Payments at scale Uber’s next generation payments system
CMPE419 Mobile Application Development
Application Lifecycle Management – Best Practices for SharePoint and Office App development November 2015.
MVC in ASP.NET Core: The new kid on the block
Running on the Powerful Microsoft Azure Platform,
Consulting Services for IoT
Mobile App Development
Yellowfin: An Azure-Compatible Business Intelligence Platform That Connects People with Their Data for Better Decision Making MICROSOFT AZURE APP BUILDER.
Logsign All-In-One Security Information and Event Management (SIEM) Solution Built on Azure Improves Security & Business Continuity MICROSOFT AZURE APP.
Modern web applications
Near Real Time ETLs with Azure Serverless Architecture
SEEM4570 Tutorial 1 Android SDK + XCode SDK +
XtremeData on the Microsoft Azure Cloud Platform:
Rdio Case Study.
Microsoft Build /3/2019 4:12 AM © 2016 Microsoft Corporation. All rights reserved. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY,
Modern web applications
Last.Backend is a Continuous Delivery Platform for Developers and Dev Teams, Allowing Them to Manage and Deploy Applications Easier and Faster MICROSOFT.
Agenda Need of Cloud Computing What is Cloud Computing
CMPE419 Mobile Application Development
Running C# in the browser
Introduction to Mobile Apps
Presentation transcript:

RIBs A mobile architecture that scales together with the team Gergely Orosz, Engineering Manager, Uber 29 Nov 2017

➜ Motivation Overview of the Architecture RIBs in Practice

A Growing Team 5 years ago: Uber’s entire mobile team is hard at work.

A Growing Team In 2015 Uber had about 100 mobile engineers working on the same app.

A Growing App

Let’s just change everything

Architecture Goals General Goals Uber Specific Goals Isolation & Testability Components should be isolated & easy to test. 99.99% reliability of core flows Support global rollback of core flows to a guaranteed working state. Developer productivity Provide rails for architecture and code. Minimize manual, repetitive work. Monitoring as a first class citizen Automatic analytics, logging, debugging and tracing. Support continued growth of a complex app for years Narrow and de-couple functionality as much as possible. De-risk experimentation Feature flagging as a first class feature. Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

Core architecture, framework & tooling Rewriting the Uber App January June August November Core architecture, framework & tooling Core flow Everything else Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

Application Framework What we Built Analytics Testability Components Monitoring Reactive data flows Experimentation RIBs Architecture Application Framework Logging Business-logic driven Plugins Routing Networking Scoping Dependency management Storage Location services Code generation Isolation & testability - Changes in one should have little to no affect with another. Developer productivity - Open source UI components

➜ Motivation Overview of the Architecture RIBs in Practice

RIBs Router Interactor Builder Presenter View

but we’ll come back to this later

The state management problem Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

State Tree Application driven by business logic Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

RIBs State transitions Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

RIBs State transitions Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

RIBs State transitions Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

RIBs State transitions Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

State Tree State tree drives the views Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

State Tree State tree drives the views Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

State Tree State tree drives the views Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

RIBs Builder Builds RIB units Responsibilities of each component Builder Builds RIB units Interactor Business logic of the app (aka “the brain”) Router Helper for routing between RIBs Presenter (Optional) Translation Logic View(Controller) Layout & Animation

Non-state modifying responses Data flow in RIB The Internets Model Stream Service Pushes state onto Push/pull Data model Service calls Non-state modifying responses Interactor Logic calls Router Routing calls Data model Presenter View(Controller) UI event View model

➜ Motivation Overview of the Architecture RIBs in Practice

What about other architectures? Truly novel things about RIBs Things that other frameworks could support Business logic drives the app, not the view tree MVC, MVP, MVI, MVVM, VIPER are all built on the assumption that components always have a view Cross-platform approach iOS & Android architecture to stay in sync. iOS & Android native developers can review each others’ code. Independent business logic and view trees Business logic tree can be deep, but view tree can be shallow. Developer tooling IDE plugins for code generation & static code analysis Opinionated on how state should be communicated Communicate state down and up the tree, via dependencies. Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

Adopting a new architecture at scale Rails for architecture & code Android (IntelliJ, Android Studio) iOS (XCode) Isolation & testability - Changes in one should have little to no affect with another. Developer productivity -

What RIBs gave us Rider App More than 200 engineers across iOS & Android More than 600 RIBs, many reused in multiple parts of the tree Less than 300 lines of code per class for most RIBs Well unit tested business logic

uber.github.io Is this for you? It depends. Are you interested in how we built the Uber App(s)? It’s there to check - and to contribute! Does your app have lots of non-visual state? RIBs can structure the app based on business logic, not views. uber.github.io Do you have a (fast) growing iOS & Android app & team? RIBs scaled well for Uber. We traded a more heavyweight architecture for better isolation. Do you have the bandwidth to invest in a new architecture? RIBs has a learning curve & tutorials - the same that new engineers at Uber use to learn about them. It also comes with IDE code generation for better adoption for teams.

Thank you uber.github.io Gergely Orosz Engineering Manager, Uber Amsterdam @GergelyOrosz uber.github.com eng.uber.com uber.github.io