View
4.213
Download
1
Category
Preview:
Citation preview
MOBILE DEVELOPMENT
with a devops mindset
Patrick Debois@patrickdebois
1 YEAR IN MOBILE APPS
with a devops background
Patrick Debois@patrickdebois
info@devopsdays.orgwww.devopsdays.org
@devopsdays
patrick@smalltownheroes.bewww.smalltownheroes.be
@townheroes
patrick@jedi.bejedi.be/blog
@patrickdebois
ABOUT ME
DEVOPS
DEV OPS
contact@company.comcontact2@company.com
+49 5847 56 90+49 8739 03 30
Call Us
PAUL PEISNERPAUL PEISNER
http://dev2ops.org/2012/09/use-devops-to-turn-it-into-a-strategic-weapon/
TIM DYSINGERDAMON EDWARDS
https://cacoo.com/diagrams/uapwdcN6SDfwClDY-351A0.png
An emerging set of practices
MATHIAS MARSCHALL
http://www.slideshare.net/dev2ops/you-cant-change-culture-but-you-can-change-behavior-and-behavior-becomes-culture
GENE KIM
OPSDEV
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
4 areas of improvement
OPSDEV
Area 1: Extend delivery to production
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
OPSDEV
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
OPSDEV
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
Area 3: Embed Projectknowledge into Operations
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
OPSDEV
Area 4: Embed Operations knowledge into Project
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
Area 3: Embed Projectknowledge into Operations
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
Production
Components (architecture)People (process)
Dev, Test, QA
EndUserBusiness
Production
Components (architecture)People (process)
Dev, Test, QA
EndUserBusiness
Find your bottleneck(s) = friction
Production
Components (architecture)People (process)
Dev, Test, QA
EndUserBusiness
Technical Debt
Social Debt
Remove friction
http://philippe.kruchten.com/2013/11/24/friction/
“Friction: the resistance that one surface or object encounters when moving over another.” [Merriam-Webster dict.]
Feedback from Test(User)s
CONTINOUS INTEGRATION
OPSDEV
Area 1: Extend delivery to production
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
VERSION CONTROLno more old.bak directories
COMMIT LOGthe coding pulse
CI BUILD SYSTEMavoid it works on my machine
https://circleci.com/
https://travis-ci.com/http://www.objc.io/issue-6/travis-ci.html
https://hosted-ci.com/
ARTIFACTSbuild only once
BRANCHESgated releases
BUILD CONFIGSxcode
BUILD CONFIGSandroid
BUILDVERSIONS VS GIT COMMITS1 COMMIT - N BUILDS
DIFFERENT ENVIRONMENTSvisual cues
controlled environment
TO THE TESTERS
DISTRIBUTE BUILDScrashlytics , hockeyapp, testfairy , …
TEST APPSkeep testers up to date
QR CODE URLSscan for URLs
VERSION TRACKINGbuildnumbers
TEST FEEDBACKmake giving feedback easy & consistent
https://github.com/DZamataev/TestFlightFeedback
RECORD SESSIONSSeeing is believing
SCENARIO TESTINGcross technology testing
http://appium.io/
ACCESIBILITY LABELSunique ids for targeting UI elements
#pragma mark - Accessibility
- (void)addAccessibility:(UIView*)view label:(NSString*)label { view.accessibilityLabel = label; [view setIsAccessibilityElement:YES]; }
- (void)addAccessibility:(UIView*)view label:(NSString*)label value:(NSString*)value { // Set accessibility programmatically // because adding it to the UserInterface Storyboard doesn't allow you to set the value for Appium [self addAccessibility:view label:label]; view.accessibilityValue = value; }
<com.blokken.views.HomeTVGameButton android:id="@+id/button_tvspel" android:layout_margin="1dp" android:contentDescription = "TV SPEL" android:layout_width="@dimen/button_home_size_big" android:layout_height="@dimen/button_home_size_big" android:layout_column="2" /> </TableRow>
BEHAVIORtesting / selenium style
TEAM TALKinform everybody involved
TASKBOARDTODO, DOING, DONE
YOUR TOOLBOXthere’s more than one way to skin a cat
YOUR TOOLBOX
READABLE BUILDScompact output with xctool
https://github.com/facebook/xctool
ADHOC BUILDSshenzen
https://github.com/nomad/shenzhen
DEVICE UDIDmobile provisioning profiles
http://whatsmyudid.com/
KEY MANAGEMENTcupertino
https://github.com/nomad/Cupertino
FACEBOOK TEST APPSpoint to staging
FACEBOOK TEST USERStest users
FACEBOOK TESTERwhat is my Facebook ID
http://findmyfacebookid.com/
APPS IN BROWSERsimulator builds
https://appetize.io/https://app.io/
SIMULATORSyou just can’t get enough (speed)
http://www.andyroid.net/#producthttps://www.manymo.com/emulators
https://www.genymotion.com/#!/
ACCELERATEuse the hardware Luke
https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager
DEVICE IN A (VIRTUAL) BOXno test excuses
CLI - ADByour friend
http://developer.android.com/tools/help/adb.html
CLI IOS-DEPLOYlook no UI mama
https://github.com/phonegap/ios-deploy
ALTERNATE LOGINa phone is personal
https://get.fabric.io/digits
CROSS DEVICE STORAGEmultiple devices for 1 user
http://aws.amazon.com/mobile/
API DOCUMENTATIONinterfacing backend & app
TO THE APP STORESQuisque fringilla est eget arcu tindidunt
TO THE APP STORES
RE-SIGNbuild only once
https://gist.github.com/mediabounds/1367348
ASSETSautomate all the things
https://github.com/SzymonFortuna/xcassettool
SCREENSHOTSautomate all the things
METADATAautomate all the things
https://github.com/realmacsoftware/RMConnecter/
http://bou.io/UploadingScreenshotsWithITMSTransporter.html
IOS AUTOMATIONnot so official apple API
https://fastlane.tools/
OPSDEV
Area 1: Extend delivery to production
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
NOW WE WAITWill Apple approve on time ?
NOW WE WAIT
REVIEW TIMES
EXPEDITEuse with care https://developer.apple.com/contact/app-store/?topic=expedite
PRE-RELEASEuse date in future or vouchers
CAMPAIGNpromote your app
LAUNCH3 - 2 - 1
WATCHDOGwhat are they doing?
WATCHDOG
OPSDEV
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
THEY ARE COMINGhow many users are using the app
ARE THEY COMING BACKhow engaging is the app
FLOWsee what features are used
ANALYTICSyou can never send enough
https://segment.com/integrations
RATINGSuser feedback android
PLAYSTOREautomate all the things
APPSTOREuser feedback iOS
APPSTOREautomated feedback
https://launchkit.io/reviews
TWITTER FEEDBACKwatch social media
CRASHESwhat’s happening
CRASH REPORTSlink to user ID
CRASHESyou didn’t see because the app didn’t start
REAL DEVICESapptwack
REAL DEVICESdoes it even start?
NETWORK ERRORSQuisque fringilla est eget arcu tindidunt
http://newrelic.com/mobile-monitoring/features
MOBILE MONITORINGit’s just another device
LOG CONSOLIDATIONios, android , web , backend, …
ERROR LOGSfilter until errors are errors
LOG DEBUGtagging log lines
METRICS MIDDLEWAREeasy instrumentation
API RESPONSES95 percentile
HTTP # request , performance timings
MACHINE METRICSwhere the rubber hits the road
INFRASTRUCTUREoverview
APP METRICSstatsd is awesome
BUSINESS METRICScustomer focused
EVENTS OVERLAYwhat happened in time
MOBILE OPERATIONSin your pocket
TEAM CHANNEL ++communicate all the things
OPSDEV
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
FIXINGIt does what ?! in production !!?
IT’S BROKE LET’S FIX IT
OPSDEV
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
Area 3: Embed Projectknowledge into Operations
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
NOTIFICATIONSinform the users
https://appbot.co/appbotx/getstarted
CAPTURE FEEDBACKbefore they tell it in the App Store
SUPPORT FAQdon’t repeat yourself
REVIEW PROMPTShappy customer reviews
CONVERSATIONbecause email sucks
GROUND CONTROLchange settings with new submit to App Store
https://github.com/gangverk/Android-RemoteConfighttps://github.com/mattt/GroundControl
UI CONTROLcontrol all text & images from the backend
LIVE PATCHswizzling
https://www.rollout.io/http://nshipster.com/method-swizzling/
KEEP GOINGkeep improving
NEW VERSIONSbecause they need to know
OPSDEV
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
Area 3: Embed Projectknowledge into Operations
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
BUZZkeep the users engaged
BUZZ
OPSDEV
Area 4: Embed Operations knowledge into Project
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
Area 3: Embed Projectknowledge into Operations
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
A/B TESTINGscience not gut feeling
http://apptimize.com/product
RETENTIONwho returns?
RANKINGkeep track
PUSH ‘NUDGES’Quisque fringilla est eget arcu tindidunt
ALL CHANNELSgo where your users are
https://www.appboy.com/products
OPSDEV
Area 4: Embed Operations knowledge into Business
Area 2: Extend operations feedback to project
Area 1: Extend delivery to production
Area 3: Embed Projectknowledge into Operations
http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
DEVOPSit’s all about the fast feedback
Production
Components (architecture)People (process)
Dev, Test, QA
EndUserBusiness
Production
Components (architecture)People (process)
Dev, Test, QA
EndUserBusiness
Find your bottleneck(s) = friction
Production
Components (architecture)People (process)
Dev, Test, QA
EndUserBusiness
Technical Debt
Social Debt
Remove friction
http://philippe.kruchten.com/2013/11/24/friction/
“Friction: the resistance that one surface or object encounters when moving over another.” [Merriam-Webster dict.]
ALL TOGETHEReveryone is involved
ALL TOGETHER NOW
patrick@smalltownheroes.bewww.smalltownheroes.be
@patrickdebois
Come Help US
Recommended