Mobile Apps are not stand alone applications running on a mobile device anymore. Apps today are complex systems with back-ends hosted on clouds, with application servers, databases, API calls to external systems, and of course a powerful app running on a mobile device. Mobile App development and deployment is further complicated with todays need for supporting multiple mobile devices, with multiple OSes, multiple versions of the OSes, multiple form factors and varied network, CPU, GPU and memory specs.
DevOps - the new and growing movement addresses these development and deployment challenges. The goal of DevOps is to align Dev and Ops by introducing a set of principles and practices such as continuous integration and continuous delivery. Mobile apps take the need for these practices up a level due to their inherent distributed nature. Multi-platform mobile apps need even more care in applying DevOps principles as there are multiple platforms to be targeted, each with its own requirements, quirks, and nuanced needs.
This talk will introduce attendees to the basic practices of DevOps and then take a look at the DevOps challenges specific to cross-platform Mobile apps and present Best Practices to address them.
2. Me
• 18 year in the software industry
• 15+ years he has been a solution
architect with IBM
• Areas of work:
o DevOps Sanjeev Sharma
o Enterprise Architecture sanjeev.sharma@us.ibm.com
IBM Software Group
o Agile Transformation
o Mobile Development
o Software Delivery Platforms
o Software Supply Chains.
• Blog @ sdarchitect.wordpress.com
• Twitter: @sd_architect
4. Addressing delivery challenges
Water-SCRUM-Fall?
Dev & Test Operations
Customers Line of Business
Teams Team
Gap Gap
Desire for fast
and continuous Business
Requirements Code & Tests
innovation Services
Addressed by... Addressed by...
Agile Dev
Dev Ops
http://ibm.co/PRQkWL
10. 5. Infrastructure as Code
package "apache2" do
package_name node['apache']['package']
end
service "apache2" do
case node['platform_family']
when "rhel", "fedora", "suse"
service_name "httpd"
# If restarted/reloaded too quickly httpd has a habit of failing.
# This may happen with multiple recipes notifying apache to restart - like
# during the initial bootstrap.
restart_command "/sbin/service httpd restart && sleep 1"
reload_command "/sbin/service httpd reload && sleep 1"
12. Delivery Pipeline
Build,
Package,
& Unit Test
.jsp .html Application
Binaries &
Platform Deploy
.java Configuration
.sh chef
recipes
Environment
Deployable Artifacts Running System
Source Artifacts
Source Control Library
Management
13. Four DevOps Principles
1. Collaborate across
Disciplines
2. Develop and test against
a production-like system
3. Deploy frequently
4. Continuously validate
operational quality
characteristics
15. Mobile DevOps Challenges
• Fragmented Platforms
o iOS forked when iPad came out.
Android forked multiple times with
each vendor, Kindle Fire, Nook…
• HTML5 / Cordova still cannot
fully replace native
• Mobile Apps are typically
the front-end to a
complex(potentially
enterprise) back-end system
• App stores add additional
asynchronous deployment
step
18. Continuous Integration and
Continuous Delivery
1. End-to-end
Traceability, across all
iOS
Developer
platforms
Source Library
Control
Deliver App
Code Build Fetch Automate
Android
Developer
Source Deployable
Artifacts Artifacts
Enterprise
Services
Developer
19. Continuous Integration and
Continuous Delivery
2. Practice Continuous
Integration
Mobile App
Developent
Teams
Enterprise
Services
Developent
Teams
20. Continuous Integration and
Continuous Delivery
3. Maintain separate
build areas for each
SDK version
<manifest xmlns:android="http://schemas.android.com/apk/res/android" ... >
<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="15" />
...
</manifest>
23. Continuous Testing and
Continuous Monitoring
6. Simulate Back-end
Services
Mobile App
App Under Test Third-party
Third-party
Services Services
Test Environments to Production
Directory Portals
Actual Service Identity
Simulated Service
Mobile App Enterprise Service
Data Warehouse Mainframe Bus
Heterogeneous Environments
28. The Mobile DevOps Cycle
Define user Write app code. Define app
experience. Check in to build & deploy
Capture app shared team scripts. Place
requirements repository under version
control
Capture end Automatically
user feedback. build app. Get
Filter and feed profiles & keys
back into app from governed
requirements source
Monitor Run automated Auto-deploy app
performance of app testing. into dev App
mobile app & Simulate back Store.
back end end services Coordinate with
systems test mgmt
29. Where to get more
information?
• My Blog:
o http://sdarchitect.wordpress.com/understanding-DevOps
o http://sdarchitect.wordpress.com/mobile
• Leveraging DevOps in a water-SCRUM-fall World
o http://ibm.co/PRQkWL
• IBM Enterprise DevOps blog
o http://ibm.co/JrPVGR