building enterprise ready mobile apps: a developer deep dive
DESCRIPTION
Session presented at the Software Architect Conference in London OCt 2013TRANSCRIPT
Building Enterprise-Ready Mobile Apps in the Real World:
A Deep DiveJesus Rodriguez, KidoZen
About Me
• Hackerpreneur• Co-Founder KidoZen, Inc• Co-Founder Tellago, Inc• Advisor to software companies(Microsoft, Oracle….)• Microsoft MVP, Oracle ACE• Board member• Speaker, Author• http://weblogs.asp.net/gsusx• http://jrodthoughts.com• http://kidozencom
About Today
• A quick view of enterprise mobile development
• Consumer vs. enterprise mobile apps• Enterprise mobile development patterns and
techniques
About Today
• Is about real world solutions, no theoretical exercise
• Is about architecture best practices, not product pitches
A Quick Story of Building Enterprise Mobile Solutions
Mobility is Hot
And Obvious
We Can Build Apps
I want an app!
And Be Rock Stars
After All….
We Have Great Mobile Development Stacks
Let’s Build Mobile Solutions
Not so fast…
Just a few things to consider…
Storing Data
Mobile identity management
Cross platform push notifications
Integration with cloud services
Integration with enterprise systems
Integration with SaaS technologies
Consistent management experience
MDM, MAM integration
Manage and secure mobile business data
How to efficiently distribute and test my enterprise mobile app
What should I used to monitor the performance of my enterprise mobile
apps?
Well…..That Sucks
As it turns out, building enterprise ready mobile apps is a bit more complex than
just building mobile apps
Consumer vs. Enterprise Apps
Consumer Apps
EnterpriseApps
Do you need an enterprise mobile strategy?
Ways to think about an enterprise mobile strategy
• The excuse my idiot CIO used to delay the mobile project
• The 300 page document we are paying <name your favorite analyst firm here> for
• The latest buzzword our executives care about• A series of technology and architecture building
blocks and processes used to enable the implementation of enterprises mobile solutions
The Building Blocks of an Agile Enterprise Mobility Strategy
A Few Helpful Mobile Tech Trends• Mobile device management • Enterprise app stores• Enterprise mobile backend as a service• Mobile test clouds
Mobile Device Management
• Problem: How to I manage and control mobile devices in my organization?
• Manage and secure connected devices• Apply security and access control policies at
the device level• Cloud or on-premise deployments• Interesting players: Airwatch, Good, Mobile
Iron, Citrix Xen Mobile, Mocana…..
Mobile Application Management
• Problem: I would like to manage the enterprise mobile apps distribute in my enterprise
• Enterprise app stores• Manage and control distribution of enterprise
mobile applications• Natural evolution for MDM technologies• Interesting players: Apperian, Airwatch, Citrix
Xen-Mobile
Mobile Frontend Development
• Problem: What do we use to build mobile apps?
• Native, hybrid and mobile-web models• Built-once, deploy anywhere models: hybrid-
interpreted, cross-compiled• Interesting players: Appcelerator, PhoneGap,
Sencha, Xamarin….
Mobile Backend Infrastructure
• Problem: How do I integrate my mobile apps with my enterprise systems?
• Mobile middleware platforms• Horizontal mobile capabilities• Cloud and on-premise deployments• Interesting players: KidoZen, FeedHenry, IBM
Worklight
Mobile Testing
• Problem: How do I test and distribute my enterprise mobile applications?
• Unit, functional and end-user testing• Carrier, networks and device testing• Manual and automated• Interesting players: uTest, Perfecto Mobile
Mobile App Performance Monitoring
• Problem: Can I know how my mobile app is working?
• Performance, usage and app crash monitoring• Consumer and enterprise based• Cloud deployments• Interesting players: Crittercism, NewRelic for
mobile apps
Building Enterprise Ready Mobile Apps: A Problem Solution Approach
Problem: All my enterprise mobile apps need to store data and my DBA hates
me
Solution: Leverage an per app-isolated storage model
Per App Isolated Storage
String theObject = "{JSON PayLoad}";_application.getObjectSet("name").Save(theObject);
StorageService
My Cloud Mobile Services
Storage
Storage
Storage
Problem: I would like users to authenticate to the mobile app using their
corporate credentials but my mobile developers can’t spell Active Directory
Solution: Use a mobile-first identity federation pattern
Mobile-First AD Authentication
NSString * uN=@"John Doe"NSString * psw=@"secret"Identity * userIdentity = [application Login:@"ADFS“ user:uN andPassword:psw];
Auth Service
Active Directory
My Cloud Services
Corp Network
Trust
Problem: AD authentication is great! But is there a way that my users don’t have to re-authenticate with each mobile app?
Solution: Implement a token reusability pattern
Mobile-First SSO
NSString * uN=@"John Doe"NSString * psw=@"secret"Identity * userIdentity = [application Login:@"ADFS“ user:uN andPassword:psw];
Auth Service
Active Directory
MBaaS
Corp Network
Trust
App1
App2Token CacheToken Cache
Problem: Can I enable multi-factor authentication across my different mobile
apps
Solution: Extend your mobile authentication service with multi-factor
capabilities
Mobile-First SSO
NSString * uN=@"John Doe"NSString * psw=@"secret"Identity * userIdentity = [application Login:@"ADFS“ user:uN andPassword:psw];
Auth Service
Active Directory
My Cloud Services
Corp Network
Trust
App1
App2Token CacheToken Cache
Multi-Auth Service(App1: yes,
App2: no
Problem: Can I enable push notifications across different devices?
Solution: Use a push notifications brokered service
Mobile Push Notifications Broker
Var channel= _application.pubSub.Subscribe(“channel name”);
channel.Send({message});
Push NotificationService
My Cloud Services
Problem: How to efficiently exchange data between my enterprise mobile apps
Solution: Implement an inter-app publish subscribe pattern
Inter-App Messaging Passing Pattern
App2_application.pubSub.Subscribe(“channel name”);
App2_application.pubSub.Subscribe(“channel name”);
App1_application.pubSub.Publish(“channel name”);
App1_application.pubSub.Publish(“channel name”);
Shared Memory
Shared Memory Mobile
DB
Mobile DB
Problem: How can I integrate my enterprise mobile apps with my line of
business systems
Solution: Implement a mobile line of business connector pattern
Var mySAP= App.Services(‘SP’).Login({credentials});Var mySF= App.Services(‘SF’).Login({credentials});mySAP.Invoke(‘GetItems’, {parameters});mySF.Invoke(‘GetLeads’, {parameters});
Enterprise System Service
SAP Connector
My Cloud Services
Corp Network
SF.comConnector
Mobile LOB Connector
Problem: My enterprise systems are having performance issues handling
mobile consumers
Solution: Implement a mobile first data cache
Mobile LOB Connector with Data Caching
Var mySAP= App.Services(‘SP’).Login({credentials});Var mySF= App.Services(‘SF’).Login({credentials});mySAP.Invoke(‘GetItems’, {parameters});mySF.Invoke(‘GetLeads’, {parameters});
Enterprise System Service
SAP Connector
My Cloud Services
Corp Network
SF.comConnector
Mobile Data Cache
Problem: The performance of my mobile apps varies according to the user location
Solution: Implement a location-aware traffic optimization model
Data Center 1
Mobile Services
Enterprise App Center
Mobile Web Server
App Storage
Data Center 1
Mobile Services
Enterprise App Center
Mobile Web Server
App StorageReplication
GEO Traffic Manager
My Mobile Services
GEO-Aware Mobile Infrastructure
Problem: I would like to exchange data between my apps deployed across
different devices
Solution: Implement a mobile-first publish subscribe model
Mobile-First Event-Based Messaging
_application.pubSub.Publish(“channel name”, {message});
Mobile EventService
My Cloud Services
Channel
Channel
_application.pubSub.Subscribe(“channel name”);
Problem: I would like to secure the business data sets used by my enterprise
mobile apps
Solution: Implement a mobile-first data access policies
Mobile Data Management
Var mySAP= App.Services(‘SP’).Login({credentials});Var mySF= App.Services(‘SF’).Login({credentials});mySAP.Invoke(‘GetItems’, {parameters});mySF.Invoke(‘GetLeads’, {parameters});
Enterprise System Service
SAP Connector
My Cloud Services
Corp Network
SF.comConnector
• Is the mobile user accessing the data from a valid location
• Is the IOS device jail-broken?
• Does the data need to be encrypted?
• Does the data source requires dual factor verification
• Is the mobile user accessing the data from a valid location
• Is the IOS device jail-broken?
• Does the data need to be encrypted?
• Does the data source requires dual factor verification
Problem: How can I protect the business data stored in the device?
Solution: Encrypt the data using a temporary trusted key based on the
user’s identity
Protecting In-Device Mobile Business Data
Var mySAP= App.Services(‘SP’).Login({credentials});Var mySF= App.Services(‘SF’).Login({credentials});mySAP.Invoke(‘GetItems’, {parameters});mySF.Invoke(‘GetLeads’, {parameters});
Enterprise System Service
SAP Connector
My Cloud Services
Corp Network
SF.comConnector
Auth Service
Encrypted Data Cache
Encrypted Data Cache
Problem: How can I efficiently test my enterprise mobile apps
Solution: Consider leveraging a mobile test cloud to test across different carriers, networks and devices
Mobile Test Cloud
Mobile Test Cloud
App1
Test Cases
Target Carriers
Target Networks
Target Devices
App1
Problem: How can my enterprise apps recover from unexpected errors?
Solution: Leverage a mobile crash logging service
Mobile Logging Service
LoggingService
My Cloud Mobile Services
Logs
Logs
Logs
App1 Crash Log Collector
Problem: I have a lot of mobile-web applications but my MDM tools only work
with native apps
Solution: Consider an on-demand hybrid solution
On-Demand Hybrid App Building
Mobile Web App1
PhoneGap Build
MDM Platform
Hybrid App
Other Enterprise Mobile Best Practices
• Enterprise App Stores• Cross platform implementations• Continuous integration• Over the air deployment • Compliance • Mobile HTML5 Hosting
Summary
• The are fundamental differences between consumer and enterprise mobile apps
• An agile enterprise mobile strategy is about establishing the right technology building blocks to enable the implementation of mobile apps within an organization
• Establishing the right patterns in areas such as mobile frontend dev, backend integration, testing, monitoring, security, etc is essential to enable agility in mobile app development
• Backend integration is the number 1 challenge of enterprise mobile infrastructures
http://www.kidozen.comhttp://jrodthoughts.com
http://twitter.com/#!/jrodthoughtshttp://weblogs.asp.net/gsusx