Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Mobile Development with a #devops mindset

6,101 views

Published on

This presentation shows how you can improve your mobile development cycle when you understand the devops feedback loop.

Published in: Engineering
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Mobile Development with a #devops mindset

  1. 1. MOBILE DEVELOPMENT with a devops mindset Patrick Debois @patrickdebois
  2. 2. 1 YEAR IN MOBILE APPS with a devops background Patrick Debois @patrickdebois
  3. 3. info@devopsdays.org www.devopsdays.org @devopsdays patrick@smalltownheroes.be www.smalltownheroes.be @townheroes patrick@jedi.be jedi.be/blog @patrickdebois ABOUT ME
  4. 4. DEVOPS DEV OPS
  5. 5. contact@company.com contact2@company.com e-mail +49 5847 56 90 +49 8739 03 30 Call Us PAUL PEISNERPAUL PEISNER
  6. 6. https://twitter.com/dysinger TIM DYSINGERTIM DYSINGER
  7. 7. http://dev2ops.org/2012/09/use-devops-to-turn-it-into-a-strategic-weapon/ TIM DYSINGERDAMON EDWARDS
  8. 8. https://cacoo.com/diagrams/uapwdcN6SDfwClDY-351A0.png An emerging set of practices MATHIAS MARSCHALL
  9. 9. http://www.slideshare.net/dev2ops/you-cant-change-culture-but-you-can-change-behavior-and-behavior- becomes-culture GENE KIM
  10. 10. OPSDEV http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/ 4 areas of improvement
  11. 11. OPSDEV Area 1: Extend delivery to production http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  12. 12. 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/
  13. 13. OPSDEV Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  14. 14. OPSDEV Area 4: Embed Operations knowledge into Project Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  15. 15. Production Components (architecture) People (process) Dev,Test, QA EndUserBusiness
  16. 16. Production Components (architecture) People (process) Dev,Test, QA EndUserBusiness Find your bottleneck(s) = friction
  17. 17. Production Components (architecture) People (process) Dev,Test, QA EndUserBusiness Technical Debt Social Debt
  18. 18. 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.]
  19. 19. Feedback from Test(User)s CONTINOUS INTEGRATION
  20. 20. OPSDEV Area 1: Extend delivery to production http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  21. 21. VERSION CONTROL no more old.bak directories
  22. 22. COMMIT LOG the coding pulse
  23. 23. CI BUILD SYSTEM avoid 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/
  24. 24. ARTIFACTS build only once
  25. 25. BRANCHES gated releases
  26. 26. BUILD CONFIGS xcode
  27. 27. BUILD CONFIGS android
  28. 28. BUILDVERSIONS VS GIT COMMITS 1 COMMIT - N BUILDS
  29. 29. DIFFERENT ENVIRONMENTS visual cues
  30. 30. controlled environment TO THE TESTERS
  31. 31. DISTRIBUTE BUILDS crashlytics , hockeyapp, testfairy , …
  32. 32. TEST APPS keep testers up to date
  33. 33. QR CODE URLS scan for URLs
  34. 34. VERSION TRACKING buildnumbers
  35. 35. TEST FEEDBACK make giving feedback easy & consistent https://github.com/DZamataev/TestFlightFeedback
  36. 36. RECORD SESSIONS Seeing is believing
  37. 37. SCENARIO TESTING cross technology testing http://appium.io/
  38. 38. ACCESIBILITY LABELS unique 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>
  39. 39. BEHAVIOR testing / selenium style
  40. 40. TEAM TALK inform everybody involved
  41. 41. TASKBOARD TODO, DOING, DONE
  42. 42. YOUR TOOLBOX there’s more than one way to skin a cat YOUR TOOLBOX
  43. 43. READABLE BUILDS compact output with xctool https://github.com/facebook/xctool
  44. 44. ADHOC BUILDS shenzen https://github.com/nomad/shenzhen
  45. 45. DEVICE UDID mobile provisioning profiles http://whatsmyudid.com/
  46. 46. KEY MANAGEMENT cupertino https://github.com/nomad/Cupertino
  47. 47. FACEBOOK TEST APPS point to staging
  48. 48. FACEBOOK TEST USERS test users
  49. 49. FACEBOOK TESTER what is my Facebook ID http://findmyfacebookid.com/
  50. 50. APPS IN BROWSER simulator builds https://appetize.io/ https://app.io/
  51. 51. SIMULATORS you just can’t get enough (speed) http://www.andyroid.net/#product https://www.manymo.com/emulators https://www.genymotion.com/#!/
  52. 52. ACCELERATE use the hardware Luke https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager
  53. 53. DEVICE IN A (VIRTUAL) BOX no test excuses
  54. 54. CLI - ADB your friend http://developer.android.com/tools/help/adb.html
  55. 55. CLI IOS-DEPLOY look no UI mama https://github.com/phonegap/ios-deploy
  56. 56. ALTERNATE LOGIN a phone is personal https://get.fabric.io/digits
  57. 57. CROSS DEVICE STORAGE multiple devices for 1 user http://aws.amazon.com/mobile/
  58. 58. API DOCUMENTATION interfacing backend & app
  59. 59. TO THE APP STORES Quisque fringilla est eget arcu tindidunt TO THE APP STORES
  60. 60. RE-SIGN build only once https://gist.github.com/mediabounds/1367348
  61. 61. ASSETS automate all the things https://github.com/SzymonFortuna/xcassettool
  62. 62. SCREENSHOTS automate all the things
  63. 63. METADATA automate all the things https://github.com/realmacsoftware/RMConnecter/ http://bou.io/UploadingScreenshotsWithITMSTransporter.html
  64. 64. IOS AUTOMATION not so official apple API https://fastlane.tools/
  65. 65. OPSDEV Area 1: Extend delivery to production http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  66. 66. NOW WE WAIT Will Apple approve on time ? NOW WE WAIT
  67. 67. REVIEW TIMES
  68. 68. EXPEDITE use with care https://developer.apple.com/contact/app-store/?topic=expedite
  69. 69. PRE-RELEASE use date in future or vouchers
  70. 70. CAMPAIGN promote your app
  71. 71. LAUNCH 3 - 2 - 1
  72. 72. WATCHDOG what are they doing? WATCHDOG
  73. 73. 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/
  74. 74. THEY ARE COMING how many users are using the app
  75. 75. ARE THEY COMING BACK how engaging is the app
  76. 76. FLOW see what features are used
  77. 77. ANALYTICS you can never send enough https://segment.com/integrations
  78. 78. RATINGS user feedback android
  79. 79. PLAYSTORE automate all the things
  80. 80. APPSTORE user feedback iOS
  81. 81. APPSTORE automated feedback https://launchkit.io/reviews
  82. 82. TWITTER FEEDBACK watch social media
  83. 83. CRASHES what’s happening
  84. 84. CRASH REPORTS link to user ID
  85. 85. CRASHES you didn’t see because the app didn’t start
  86. 86. REAL DEVICES apptwack
  87. 87. REAL DEVICES does it even start?
  88. 88. NETWORK ERRORS Quisque fringilla est eget arcu tindidunt http://newrelic.com/mobile-monitoring/features
  89. 89. MOBILE MONITORING it’s just another device
  90. 90. LOG CONSOLIDATION ios, android , web , backend, …
  91. 91. ERROR LOGS filter until errors are errors
  92. 92. LOG DEBUG tagging log lines
  93. 93. METRICS MIDDLEWARE easy instrumentation
  94. 94. API RESPONSES 95 percentile
  95. 95. HTTP # request , performance timings
  96. 96. MACHINE METRICS where the rubber hits the road
  97. 97. INFRASTRUCTURE overview
  98. 98. APP METRICS statsd is awesome
  99. 99. BUSINESS METRICS customer focused
  100. 100. EVENTS OVERLAY what happened in time
  101. 101. MOBILE OPERATIONS in your pocket
  102. 102. TEAM CHANNEL ++ communicate all the things
  103. 103. 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/
  104. 104. FIXING It does what ?! in production !!? IT’S BROKE LET’S FIX IT
  105. 105. OPSDEV Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  106. 106. NOTIFICATIONS inform the users https://appbot.co/appbotx/getstarted
  107. 107. CAPTURE FEEDBACK before they tell it in the App Store
  108. 108. SUPPORT FAQ don’t repeat yourself
  109. 109. REVIEW PROMPTS happy customer reviews
  110. 110. CONVERSATION because email sucks
  111. 111. GROUND CONTROL change settings with new submit to App Store https://github.com/gangverk/Android-RemoteConfig https://github.com/mattt/GroundControl
  112. 112. UI CONTROL control all text & images from the backend
  113. 113. LIVE PATCH swizzling https://www.rollout.io/ http://nshipster.com/method-swizzling/
  114. 114. KEEP GOING keep improving
  115. 115. NEW VERSIONS because they need to know
  116. 116. OPSDEV Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  117. 117. BUZZ keep the users engaged BUZZ
  118. 118. OPSDEV Area 4: Embed Operations knowledge into Project Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  119. 119. USER ACTIONS how do they use the app http://heapanalytics.com
  120. 120. RECORD HEATMAPS where do they click http://appsee.com
  121. 121. A/B TESTING science not gut feeling http://apptimize.com/product
  122. 122. RETENTION who returns?
  123. 123. RANKING keep track
  124. 124. PUSH ‘NUDGES’ Quisque fringilla est eget arcu tindidunt
  125. 125. ALL CHANNELS go where your users are https://www.appboy.com/products
  126. 126. OPSDEV Area 4: Embed Operations knowledge into Business Area 2: Extend operations feedback to project Area 1: Extend delivery to production Area 3: Embed Project knowledge into Operations http://www.jedi.be/blog/2012/05/12/codifying-devops-area-practices/
  127. 127. DEVOPS it’s all about the fast feedback
  128. 128. Production Components (architecture) People (process) Dev,Test, QA EndUserBusiness
  129. 129. Production Components (architecture) People (process) Dev,Test, QA EndUserBusiness Find your bottleneck(s) = friction
  130. 130. Production Components (architecture) People (process) Dev,Test, QA EndUserBusiness Technical Debt Social Debt
  131. 131. 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.]
  132. 132. ALL TOGETHER everyone is involved ALL TOGETHER NOW
  133. 133. patrick@smalltownheroes.be www.smalltownheroes.be @patrickdebois Come Help US

×