1BQFS1SPUPUZQJOH w %SBXNPDLXJUIQBQFS w &BTZGPSFOHJOFFST w %PO`UOFFEHSBQIJDBMUFDIOJRVF w %SBX6*JEFBT w 6*1BUUFSO4%,UBLFO w $PPMGFBUVSFQPQVMBSBQQVTFE w *OOPWBUJWFJEFB
3FBDUJWF1SPHSBNNJOH w 1SPHSBNNJOHXJUIBTZODISPOPVTEBUBTUSFBN w 3FBDUJWF$PDPB
3Y+BWB w 4VJUBCMFGPSXFCTFSWJDFDMJFOUBQQT*UIJOL w #VUʜIBSEUPMFBSO w 5IFJOUSPEVDUJPOUP3FBDUJWF1SPHSBNNJOHZPVWFCFFO NJTTJOH w ʲ༁ʳ͋ͳ͕ͨٻΊ͍ͯͨϦΞΫςΟϒϓϩάϥϛϯάೖ IUUQTHJTUHJUIVCDPNTUBMU[FFCDBCDG IUUQOJOKJOLVOIBUFOBCMPHDPNFOUSZJOUSPSYKB
@__gfx__ • A client-backend engineer
• Working on libraries, environments, and CI on both Android and iOS apps
• As a CPAN author: Data::Validator, Text::Xslate
• Loving Android Studio and AppCode
The number of monthly users 0M 3.6M 7.2M 10.8M 14.4M 18M Jul Oct Jan Apr Jul Oct Jan Apr PC Smartpohone browsers Smartpohone apps Feature phones Others 44.04 million ʢAs of April 2014ʣ
Lots of problems • Communication cost:
• service teams mobile app team
• Different release cycle:
• web: 10/day
• app: 2/month
• The will of installations
• Each user sees a random version of apps
• Continuous integration is really difficult
How our mobile teams were • Cookpad started as a web service
• Cookpad mobile apps had followed the web
• Service teams were tend to order the new features to the mobile app team (web-first)
1SFNJVN4FSWJDF 5FBN 0UIFS 5FBNT )BQQZ"VUIPS 5FBN .PCJMF'JSTU 5FBN )FMQ There are 20+ engineers on mobile applications 'FBUVSF 'FBUVSF 'FBUVSF 'FBUVSF 3FMFBTF .BOBHFNFOU Service Oriented Development
Differences in Release Cycle • Web:
• continuous delivery
• easily rollbacks code on problems
• App:
• frequent release makes users irritated
• no rollbacks; all the versions remain in the world
Pull-Request Development • All the changes are merged via pull requests
• Do not commit changes to master directly
• All the pull requests should be reviewed
Release Engineering Tasks • Kicks the Jenkins job for a release package
• Builds it, lints it, tests it, makes a tag
• Uploads the package to Google Play / AppStore
• Writes recent changes
• Publishes it (in iOS: after Apple reviewing)
Release Engineering as Code • External repositories that build app projects
• Android Publisher API (Google Play Developer API)
• No API on AppStore / iTunes Connect yet
• Monitoring - not yet, but will try