Building Enterprise-Ready
Mobile Apps in the Real World:
A Deep Dive
Jesus Rodriguez, KidoZen
About Me
•
•
•
•
•
•
•
•
•
•

Hackerpreneur
Co-Founder KidoZen, Inc
Co-Founder Tellago, Inc
Advisor to software companies(...
About Today
• A quick view of enterprise mobile
development
• Consumer vs. enterprise mobile apps
• Enterprise mobile deve...
About Today
• Is about real world solutions, no theoretical
exercise
• Is about architecture best practices, not
product p...
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

Enterprise
Apps
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 pag...
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 se...
Mobile Device Management
• Problem: How to I manage and control mobile
devices in my organization?
• Manage and secure con...
Mobile Application Management
• Problem: I would like to manage the
enterprise mobile apps distribute in my
enterprise
• E...
Mobile Frontend Development
• Problem: What do we use to build mobile
apps?
• Native, hybrid and mobile-web models
• Built...
Mobile Backend Infrastructure
• Problem: How do I integrate my mobile apps
with my enterprise systems?
• Mobile middleware...
Mobile Testing
• Problem: How do I test and distribute my
enterprise mobile applications?
• Unit, functional and end-user ...
Mobile App Performance
Monitoring
• Problem: Can I know how my mobile app is
working?
• Performance, usage and app crash m...
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 appisolated storage model
Per App Isolated Storage
My Cloud Mobile Services
Storage

Storage
Service

Storage
Storage

String theObject = "{JSON Pay...
Problem: I would like users to
authenticate to the mobile app using their
corporate credentials but my mobile
developers c...
Solution: Use a mobile-first identity
federation pattern
Mobile-First AD Authentication
My Cloud Services

Auth Service

u
Tr
st

NSString * uN=@"John Doe"
NSString * psw=@"secret...
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
MBaaS

Auth Service

u
Tr
st

NSString * uN=@"John Doe"
NSString * psw=@"secret"
Identity * userIdentity ...
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
My Cloud Services
Auth Service

Multi-Auth
Service(App1: yes,
App2: no

u
Tr
st

NSString * uN=@"John Doe...
Problem: Can I enable push
notifications across different devices?
Solution: Use a push notifications
brokered service
Mobile Push Notifications Broker
My Cloud Services

Push Notification
Service

Var channel= _application.pubSub.Subscribe(...
Problem: How to efficiently exchange data
between my enterprise mobile apps
Solution: Implement an inter-app
publish subscribe pattern
Inter-App Messaging Passing Pattern

App1

_application.pubSub.Publish(“channel name”);
application.pubSub.Publish(“channe...
Problem: How can I integrate my
enterprise mobile apps with my line of
business systems
Solution: Implement a mobile line of
business connector pattern
Mobile LOB Connector
My Cloud Services
SF.com
Connector

Enterprise System
Service

Var mySAP= App.Services(‘SP’).Login({c...
Problem: My enterprise systems are
having performance issues handling
mobile consumers
Solution: Implement a mobile first
data cache
Mobile LOB Connector with Data Caching
My Cloud Services
SF.com
Connector

Enterprise System
Service

Mobile Data Cache

V...
Problem: The performance of my mobile
apps varies according to the user location
Solution: Implement a locationaware traffic optimization model
GEO-Aware Mobile Infrastructure
My Mobile Services
GEO Traffic Manager

Data Center 1

Data Center 1

Mobile Services

Mob...
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
My Cloud Services
Channel

Mobile Event
Service

_application.pubSub.Publish(
“channel ...
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
My Cloud Services
SF.com
Connector

Enterprise System
Service

Var mySAP= App.Services(‘SP’).Login(...
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
My Cloud Services
SF.com
Connector

Enterprise System
Service

Auth Service

Var...
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
Test Cases
App1

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
My Cloud Mobile Services
Logs

Logging
Service

App1

Crash Log
Collector

Logs
Logs
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

Hybrid App

MDM
Platform
Other Enterprise Mobile Best
Practices
•
•
•
•
•
•

Enterprise App Stores
Cross platform implementations
Continuous integr...
Summary
• The are fundamental differences between consumer and
enterprise mobile apps
• An agile enterprise mobile strateg...
Thanks
jr@kidozen.com
http://www.kidozen.com
http://jrodthoughts.com
http://twitter.com/#!/jrodthoughts
http://weblogs.asp...
Upcoming SlideShare
Loading in …5
×

Building Enterprise Ready Mobile Apps: A Developer Deep Dive

2,402 views

Published on

Session presented at the Software Architect Conference in London OCt 2013

Published in: Technology, Business
1 Comment
3 Likes
Statistics
Notes
No Downloads
Views
Total views
2,402
On SlideShare
0
From Embeds
0
Number of Embeds
521
Actions
Shares
0
Downloads
95
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide
  • {}
  • Building Enterprise Ready Mobile Apps: A Developer Deep Dive

    1. 1. Building Enterprise-Ready Mobile Apps in the Real World: A Deep Dive Jesus Rodriguez, KidoZen
    2. 2. 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
    3. 3. About Today • A quick view of enterprise mobile development • Consumer vs. enterprise mobile apps • Enterprise mobile development patterns and techniques
    4. 4. About Today • Is about real world solutions, no theoretical exercise • Is about architecture best practices, not product pitches
    5. 5. A Quick Story of Building Enterprise Mobile Solutions
    6. 6. Mobility is Hot
    7. 7. And Obvious
    8. 8. We Can Build Apps I want an app!
    9. 9. And Be Rock Stars
    10. 10. After All….
    11. 11. We Have Great Mobile Development Stacks
    12. 12. Let’s Build Mobile Solutions
    13. 13. Not so fast…
    14. 14. Just a few things to consider…
    15. 15. Storing Data
    16. 16. Mobile identity management
    17. 17. Cross platform push notifications
    18. 18. Integration with cloud services
    19. 19. Integration with enterprise systems
    20. 20. Integration with SaaS technologies
    21. 21. Consistent management experience
    22. 22. MDM, MAM integration
    23. 23. Manage and secure mobile business data
    24. 24. How to efficiently distribute and test my enterprise mobile app
    25. 25. What should I used to monitor the performance of my enterprise mobile apps?
    26. 26. Well…..That Sucks
    27. 27. As it turns out, building enterprise ready mobile apps is a bit more complex than just building mobile apps
    28. 28. Consumer vs. Enterprise Apps Consumer Apps Enterprise Apps
    29. 29. Do you need an enterprise mobile strategy?
    30. 30. 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
    31. 31. The Building Blocks of an Agile Enterprise Mobility Strategy
    32. 32. A Few Helpful Mobile Tech Trends • • • • Mobile device management Enterprise app stores Enterprise mobile backend as a service Mobile test clouds
    33. 33. 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…..
    34. 34. 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
    35. 35. Mobile Frontend Development • Problem: What do we use to build mobile apps? • Native, hybrid and mobile-web models • Built-once, deploy anywhere models: hybridinterpreted, cross-compiled • Interesting players: Appcelerator, PhoneGap, Sencha, Xamarin….
    36. 36. 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
    37. 37. 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
    38. 38. 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
    39. 39. Building Enterprise Ready Mobile Apps: A Problem Solution Approach
    40. 40. Problem: All my enterprise mobile apps need to store data and my DBA hates me
    41. 41. Solution: Leverage an per appisolated storage model
    42. 42. Per App Isolated Storage My Cloud Mobile Services Storage Storage Service Storage Storage String theObject = "{JSON PayLoad}"; _application.getObjectSet("name").Save(theObject);
    43. 43. Problem: I would like users to authenticate to the mobile app using their corporate credentials but my mobile developers can’t spell Active Directory
    44. 44. Solution: Use a mobile-first identity federation pattern
    45. 45. Mobile-First AD Authentication My Cloud Services Auth Service u Tr st NSString * uN=@"John Doe" NSString * psw=@"secret" Identity * userIdentity = [application Login:@"ADFS“ user:uN andPassword:psw]; Corp Network Active Directory
    46. 46. Problem: AD authentication is great! But is there a way that my users don’t have to re-authenticate with each mobile app?
    47. 47. Solution: Implement a token reusability pattern
    48. 48. Mobile-First SSO MBaaS Auth Service u Tr st NSString * uN=@"John Doe" NSString * psw=@"secret" Identity * userIdentity = [application Login:@"ADFS“ user:uN andPassword:psw]; App1 App2 Token Cache Corp Network Active Directory
    49. 49. Problem: Can I enable multi-factor authentication across my different mobile apps
    50. 50. Solution: Extend your mobile authentication service with multi-factor capabilities
    51. 51. Mobile-First SSO My Cloud Services Auth Service Multi-Auth Service(App1: yes, App2: no u Tr st NSString * uN=@"John Doe" NSString * psw=@"secret" Identity * userIdentity = [application Login:@"ADFS“ user:uN andPassword:psw]; App1 App2 Token Cache Corp Network Active Directory
    52. 52. Problem: Can I enable push notifications across different devices?
    53. 53. Solution: Use a push notifications brokered service
    54. 54. Mobile Push Notifications Broker My Cloud Services Push Notification Service Var channel= _application.pubSub.Subscribe(“channel name”); channel.Send({message});
    55. 55. Problem: How to efficiently exchange data between my enterprise mobile apps
    56. 56. Solution: Implement an inter-app publish subscribe pattern
    57. 57. Inter-App Messaging Passing Pattern App1 _application.pubSub.Publish(“channel name”); application.pubSub.Publish(“channel name”); Shared Shared Memory App2 _application.pubSub.Subscribe(“channel name”); _application.pubSub.Subscribe(“channel name”); Mobile Mobile DB DB
    58. 58. Problem: How can I integrate my enterprise mobile apps with my line of business systems
    59. 59. Solution: Implement a mobile line of business connector pattern
    60. 60. Mobile LOB Connector My Cloud Services SF.com Connector Enterprise System Service Var mySAP= App.Services(‘SP’).Login({credentials}); Var mySF= App.Services(‘SF’).Login({credentials}); mySAP.Invoke(‘GetItems’, {parameters}); mySF.Invoke(‘GetLeads’, {parameters}); Corp Network SAP Connector
    61. 61. Problem: My enterprise systems are having performance issues handling mobile consumers
    62. 62. Solution: Implement a mobile first data cache
    63. 63. Mobile LOB Connector with Data Caching My Cloud Services SF.com Connector Enterprise System Service Mobile Data Cache Var mySAP= App.Services(‘SP’).Login({credentials}); Var mySF= App.Services(‘SF’).Login({credentials}); mySAP.Invoke(‘GetItems’, {parameters}); mySF.Invoke(‘GetLeads’, {parameters}); Corp Network SAP Connector
    64. 64. Problem: The performance of my mobile apps varies according to the user location
    65. 65. Solution: Implement a locationaware traffic optimization model
    66. 66. GEO-Aware Mobile Infrastructure My Mobile Services GEO Traffic Manager Data Center 1 Data Center 1 Mobile Services Mobile Services Enterprise App Center Enterprise App Center Mobile Web Server Mobile Web Server App Storage Replication App Storage
    67. 67. Problem: I would like to exchange data between my apps deployed across different devices
    68. 68. Solution: Implement a mobile-first publish subscribe model
    69. 69. Mobile-First Event-Based Messaging My Cloud Services Channel Mobile Event Service _application.pubSub.Publish( “channel name”, {message}); Channel _application.pubSub.Subscribe( “channel name”);
    70. 70. Problem: I would like to secure the business data sets used by my enterprise mobile apps
    71. 71. Solution: Implement a mobile-first data access policies
    72. 72. Mobile Data Management My Cloud Services SF.com Connector Enterprise System Service Var mySAP= App.Services(‘SP’).Login({credentials}); Var mySF= App.Services(‘SF’).Login({credentials}); mySAP.Invoke(‘GetItems’, {parameters}); mySF.Invoke(‘GetLeads’, {parameters}); • Is the mobile user accessing the data from a valid location • Is the IOS device jailbroken? • Does the data need to be encrypted? • Does the data source requires dual factor verification Corp Network SAP Connector
    73. 73. Problem: How can I protect the business data stored in the device?
    74. 74. Solution: Encrypt the data using a temporary trusted key based on the user’s identity
    75. 75. Protecting In-Device Mobile Business Data My Cloud Services SF.com Connector Enterprise System Service Auth Service Var mySAP= App.Services(‘SP’).Login({credentials}); Var mySF= App.Services(‘SF’).Login({credentials}); mySAP.Invoke(‘GetItems’, {parameters}); mySF.Invoke(‘GetLeads’, {parameters}); Encrypted Data Encrypted Data Cache Cache Corp Network SAP Connector
    76. 76. Problem: How can I efficiently test my enterprise mobile apps
    77. 77. Solution: Consider leveraging a mobile test cloud to test across different carriers, networks and devices
    78. 78. Mobile Test Cloud Mobile Test Cloud Test Cases App1 Target Carriers Target Networks Target Devices App1
    79. 79. Problem: How can my enterprise apps recover from unexpected errors?
    80. 80. Solution: Leverage a mobile crash logging service
    81. 81. Mobile Logging Service My Cloud Mobile Services Logs Logging Service App1 Crash Log Collector Logs Logs
    82. 82. Problem: I have a lot of mobile-web applications but my MDM tools only work with native apps
    83. 83. Solution: Consider an on-demand hybrid solution
    84. 84. On-Demand Hybrid App Building Mobile Web App1 PhoneGap Build Hybrid App MDM Platform
    85. 85. Other Enterprise Mobile Best Practices • • • • • • Enterprise App Stores Cross platform implementations Continuous integration Over the air deployment Compliance Mobile HTML5 Hosting
    86. 86. 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
    87. 87. Thanks jr@kidozen.com http://www.kidozen.com http://jrodthoughts.com http://twitter.com/#!/jrodthoughts http://weblogs.asp.net/gsusx

    ×