The operational side of Mobile Apps

57
The operational side of Mobile Continuous Delivery @patrickdebois

Transcript of The operational side of Mobile Apps

Page 1: The operational side of Mobile Apps

The operational side of Mobile Continuous Delivery

@patrickdebois

Page 2: The operational side of Mobile Apps

LIVE RESULTSINTERACTION MODERATIONSTUDIO CONTROLPART OF THE SHOW

Page 3: The operational side of Mobile Apps

OPSDEV

http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/

4 areas of improvement

Page 4: The operational side of Mobile Apps

CI Pipeline

Page 5: The operational side of Mobile Apps

OPSDEV

Area 1: Extend delivery to production

http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/

Page 6: The operational side of Mobile Apps

Going Live

Page 7: The operational side of Mobile Apps

METRICScustomer focused

Page 8: The operational side of Mobile Apps

APP METRICS

https://fabric.io/

Page 9: The operational side of Mobile Apps

NETWORK ERRORSQuisque fringilla est eget arcu tindidunt

http://newrelic.com/mobile-monitoring/features

Page 10: The operational side of Mobile Apps

MOBILE MONITORINGit’s just another device

Page 11: The operational side of Mobile Apps

LOG ERRORios, android , web , backend, …

Page 12: The operational side of Mobile Apps

LOG DEBUGtagging log lines

Page 13: The operational side of Mobile Apps

LOGGING IOS != NSLOG

Page 14: The operational side of Mobile Apps

READ IOS LOGS

https://developer.apple.com/library/ios/documentation/System/Conceptual/ManPages_iPhoneOS/man3/asl.3.html

Page 15: The operational side of Mobile Apps

READ LOGS ANDROID

http://stackoverflow.com/questions/12692103/read-logcat-programmatically-within-application

Page 16: The operational side of Mobile Apps

TWITTER FEEDBACKwatch social media

Page 17: The operational side of Mobile Apps

RATINGSuser feedback android

Page 18: The operational side of Mobile Apps

APPSTOREautomated feedback

https://launchkit.io/reviews

Page 19: The operational side of Mobile Apps

CAPTURE FEEDBACKbefore they tell it in the App Store

Page 20: The operational side of Mobile Apps

FRESHDESK

http://freshdesk.com/

Page 21: The operational side of Mobile Apps

CONVERSATIONbecause email sucks

Page 22: The operational side of Mobile Apps

NOTIFICATIONSinform the users

https://appbot.co/appbotx/getstarted

Page 23: The operational side of Mobile Apps

SUPPORT FAQdon’t repeat yourself

Page 24: The operational side of Mobile Apps

REVIEW PROMPTShappy customer reviews

Page 25: The operational side of Mobile Apps

INTERACTIVE DEVICE

Page 26: The operational side of Mobile Apps

VERSION DRIFT

https://github.com/ArtSabintsev/Harpy

Page 27: The operational side of Mobile Apps

TEAM CHANNEL ++communicate all the things

Page 28: The operational side of Mobile Apps

END USER

APP APPSTORE

Social Media

SUPPORT

AnonymousPublic

User LoginNo device details

User LoginAll device details

Logging

BACKEND

FEEDBACK

FAQ/Ticket system

Record both App & Backend Activity

Correlate JSON Logs using e-mail, device-id, customer-id

CONFIG

FF_ENABLE_DEBUG(enable debug if needed)

IN APPFeedback

FF_RECORD_SESSION(capture more visual feedback)

FF_USE_STATIC_FAQ(switch to just a faq page)

'Live'-Chat

Re-directHappy Customers

Fetch Settings(per user/group/device)

+- Low Memory- API Errors- Warnings- Device Logs

FF_DEBUG_LEVEL(increase debug if needed)

Metrics

Crash Reports

WEBSITE

Page 29: The operational side of Mobile Apps

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/

Page 30: The operational side of Mobile Apps

AppstoreApproval

Page 31: The operational side of Mobile Apps

REVIEW TIMES

Page 32: The operational side of Mobile Apps

EXPEDITEuse with care https://developer.apple.com/contact/app-store/?topic=expedite

Page 33: The operational side of Mobile Apps

IOSAPP

USEFEATURE FLAGS

No submit needed(if it does not change the app purpose drastically)

SWIZZLINGREMOTE NSBUNDLEUSE WEBVIEW

Pre-defined behaviorchange

Dynamic behaviorchange

= hooking into functionsand it's response

Download Contentto local Documents

Load Assets from Local Bundle

ImagesLocalesSettings

XIB/NIBS

Also possible to embedCordova Webview

Use bridge to communicatewith native

REMOTECONTENT

Expect internet connectivity

Cache Image Assets

OpenGL issues

Notify users of newapp version

TO SUBMIT OR NOT TO SUBMIT

Submit(code changes & extended new app behaviour)

Page 34: The operational side of Mobile Apps
Page 35: The operational side of Mobile Apps

REMOTE CONFIGchange settings with new submit to App Store

https://github.com/gangverk/Android-RemoteConfighttps://github.com/mattt/GroundControl

Page 36: The operational side of Mobile Apps

LOCALIZATION

https://github.com/joytunes/JTLocalize

Page 37: The operational side of Mobile Apps

UI CONTROLcontrol all text & images from the backend

Page 38: The operational side of Mobile Apps

CROSSWALKQuisque fringilla est eget arcu tindidunt

https://crosswalk-project.org/

Page 39: The operational side of Mobile Apps

JOCKEY.JS https://github.com/tcoulter/jockeyjs

Page 40: The operational side of Mobile Apps

CORDOVA/PHONEGAP

http://docs.phonegap.com/en/3.5.0/guide_platforms_ios_webview.md.html#iOS%20WebViews

Page 41: The operational side of Mobile Apps

https://facebook.github.io/react-native/

Page 42: The operational side of Mobile Apps

REMOTE BUNDLEhttps://github.com/sirnicolaz/NMRemoteBundle

Compile Xib & Storyboard

Image from Remote Bundle

Storyboard from Remote Bundle

XIB from Remote Bundle

Page 43: The operational side of Mobile Apps

DETAIL CRASH

Page 44: The operational side of Mobile Apps

CRASH REPORTSlink to user ID

Page 45: The operational side of Mobile Apps

LIVE PATCHswizzling

https://www.rollout.io/http://nshipster.com/method-swizzling/

Page 46: The operational side of Mobile Apps

ALL CHANNELSgo where your users are

https://www.appboy.com/products

Page 47: The operational side of Mobile Apps

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/

Page 48: The operational side of Mobile Apps

USER ACTIONShow do they use the app

http://heapanalytics.com

Page 49: The operational side of Mobile Apps

RECORD HEATMAPSwhere do they click

http://appsee.com

Page 50: The operational side of Mobile Apps

FLIGHTRECORDER

http://flightrecorder.io/

Page 51: The operational side of Mobile Apps

FLOWsee what features are used

Page 52: The operational side of Mobile Apps

RANKINGkeep track

https://www.appannie.com/

Page 53: The operational side of Mobile Apps

RETENTIONwho returns?

Page 54: The operational side of Mobile Apps

APP FIGURES

Page 55: The operational side of Mobile Apps

A/B TESTINGscience not gut feeling

http://apptimize.com/product

Page 56: The operational side of Mobile Apps

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/