Created
November 2, 2016 06:43
-
-
Save naoyamakino/b493cb8a4bb190a25a88c7107c1a2ea1 to your computer and use it in GitHub Desktop.
Note from Uber Engineering meetup tonight about building and releasing mobile applications
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Uber Mobile Meetup | |
This is a very rough note from Uber Engineering meetup tonight about building and releasing mobile applications. | |
https://www.uber.com/p/uber-mobility/ | |
## Uber release release team | |
- nightly build/beta testing | |
- internal/external | |
- FF | |
- weekly release | |
- soft/force upgrade | |
### weekly cut: | |
- weekly build -> patches for any fixes from internal test build -> beta test through Google Play Store -> staged rollout (1, 10, 50, 100%)-> soft/force update | |
### steps to take deployment | |
- signals -> tickets | |
- every alpha crash gets a ticket | |
- automate: turn off features based on classified crashes | |
- reminder: new build | |
- stage rollout everything | |
in-production features releasing engineering | |
in-app bug reporter | |
They have interface that user can report bugs; attach images, draw stuff, and record screens. | |
- user reports bugs. pics, video, and comments and report | |
- UI is driven by server. any features can be turned on/off from server | |
- 2M beta testers | |
- in app messages to into beta testers | |
- force update | |
- auto-updater for employees | |
- React Native with server update support (no app updates necessary) | |
version number scheme | |
100.0.0.20.70 | |
major release.hotfix.none.beta.alpha | |
## building at uber scale | |
### architecture | |
several hundred mobile developers | |
hundred of commits daily | |
50% change / month | |
shared modular codebase with hundreds of modules | |
### code architecture | |
- features are built as plugins and shared between apps | |
- monoropo helps with modularization and sharing | |
### workflow | |
asynchronous change merging | |
submit queue | |
stacked diffs | |
run extensive code quality checks per merge | |
UI tests | |
deep static analysis | |
- build times | |
- 15 mins build for a single line change via gradle | |
- use buck for both iOS and Android | |
- less than 10 seconds for incremental builds on android | |
- incremental build | |
- cache immutable state | |
- works well for monorepo | |
- iOS, 4x faster/20x faster | |
- android 6~30x faster | |
- remote build cache | |
### tooling | |
- 50K+ CI jobs/ day | |
- code formatting | |
- build, unit tests | |
- UI static analysis | |
###opensource | |
[OkBuck](https://github.com/uber/okbuck) - grade plugin let you grand projects with buck | |
[Buck http cache](https://github.com/uber/buck-http-cache) - a distributed build artifact cache service | |
###Invest right tools early on | |
having shared workflow/tools across platforms helps a lot in long run | |
fail faster, keep master green | |
12 ppl for architecture change | |
## automating mobile releases | |
90℅ code coverage for automated deploy | |
## Uber | |
- Single repo, single flavor, geo fencing for region specific features | |
- Resource specific modules | |
- No QA, developers responsible for testing, PR comes with code coverage, checklist to go through before or merge | |
- No arbitrary value in XML, lint rule for that |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment