Advertisement
Advertisement

More Related Content

Advertisement

Building mobile apps at scale, NSSpain - 2018

  1. Building mobile apps at scale Pavel Mazurin, Victor Pena Software Engineers, iOS
  2. engineers502
  3. Why What How
  4. Why History Goals of the rewrite
  5. Initial Team
  6. Team Growth
  7. Hundreds of mobile engineers? Request a ride Fare split Cash Uber for Business Credit card rewards points Promotions Promotions Safety Digital Payments Scheduled rides Drive for Uber Uber Eats, Freight, Self-driving vehicles... Experimentation 65 countries,
 600 cities Performance Cash Instant payments Maps & navigation uberPOOL Driver incentives App health Developer tools Networking Feed cards Driver experience Driver recognition Airport pickup Uber Family Beacon Campaigns Fraud Courier experience Shipper experience Restaurant experience
  8. App Growth
  9. App Growth
  10. Architecture Growth ProductSelection
 Controller Menu
 Controller Custom View Custom View Sub
 Controller Location
 Controller ProductSelection
 Controller Menu
 Controller Location
 Controller LoggedIn
 Controller
  11. Architecture Growth ProductSelection
 Controller Menu
 Controller Custom View Custom View Sub
 Controller LoggedIn
 Controller Location
 Controller ...
  12. ... Architecture Growth ProductSelection
 Controller Menu
 Controller Custom View Custom View Sub
 Controller LoggedIn
 Controller Location
 Controller
  13. Architecture Growth Custom View Custom View Sub
 Controller ... ProductSelection
 Controller Menu
 Controller Location
 Controller ...... ProductSelection
 Controller Menu
 Controller Location
 Controller LoggedIn
 Controller LoggedIn
 Controller
  14. Let’s just change everything
  15. Why History Goals of the rewrite
  16. 99.99% reliability of core flows Isolation & testability Support continued growth for years Cross platform architecture Rewrite Goals
  17. August Rewriting the Uber App January '16 June November Core architecture, framework & tooling Core flow Everything else
  18. RIBs Architecture What We Built Application Framework Scoping Routing Business-logic driven Dependency management Open source Monitoring Components Code generation Reactive data flows Testability Experimentation Plugins Networking Storage Location services Analytics Logging UI components
  19. Why What How
  20. What Application state Designing RIBs
  21. The state management problem
  22. State Tree Root LoggedInLoggedOut Onboarding Menu ... FeedCard Location
 Editor Shortcuts Home RequestOnTrip
  23. State transitions State Tree Root Backend Login request Session response LoggedInLoggedOutLoggedOut
  24. What Application state Designing RIBs
  25. Popular Mobile Architectures MVC, MVP, MVVM VIPER
  26. View tree drives the app hierarchy MVC, MVP, MVVM & VIPER
  27. Router Interactor Builder RIBs Presenter View
  28. RIBs View model UI event Data model Business logic calls Routing calls Builder Interactor PresenterRouter View Returns Activates
  29. State Tree Root LoggedIn LoggedOu t Onboarding MenuOnTrip ... Request FeedCard Location
 Editor Shortcuts FeedCard Location
 Editor Shortcuts Menu Home LoggedOut Request Home
  30. Demo
  31. HowWhy What
  32. RIBs at Uber Rider app: ~650 RIBs ~300 lines of code per class Unit tests Other apps migrating
  33. Thank you Pavel Mazurin, Victor Pena Software Engineers, iOS uber.github.io eng.uber.com Proprietary © 2018 Uber Technologies, Inc. All rights reserved. No part of this document may be reproduced or utilized in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval systems, without permission in writing from Uber. This document is intended only for the use of the individual or entity to whom it is addressed. All recipients of this document are notified that the information contained herein includes proprietary information of Uber, and recipient may not make use of, disseminate, or in any way disclose this document or any of the enclosed information to any person other than employees of addressee to the extent necessary for consultations with authorized personnel of Uber.
Advertisement