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

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 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: hybridinterpreted, 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 appisolated storage model
Per App Isolated Storage
My Cloud Mobile Services
Storage

Storage
Service

Storage
Storage

String theObject = "{JSON PayLoad}";
_application.getObjectSet("name").Save(theObject);
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
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
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 = [application Login:@"ADFS“
user:uN andPassword:psw];

App1
App2

Token
Cache

Corp Network
Active
Directory
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"
NSString * psw=@"secret"
Identity * userIdentity = [application Login:@"ADFS“
user:uN andPassword:psw];

App1
App2

Token
Cache

Corp Network
Active
Directory
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(“channel name”);
channel.Send({message});
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(“channel name”);

Shared
Shared
Memory

App2

_application.pubSub.Subscribe(“channel name”);
_application.pubSub.Subscribe(“channel name”);

Mobile
Mobile
DB
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
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
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

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

Mobile Services

Enterprise App Center

Enterprise App Center

Mobile Web Server

Mobile Web Server

App Storage

Replication

App Storage
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 name”, {message});

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
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
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 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
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 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
Thanks
jr@kidozen.com
http://www.kidozen.com
http://jrodthoughts.com
http://twitter.com/#!/jrodthoughts
http://weblogs.asp.net/gsusx

Building Enterprise Ready Mobile Apps: A Developer Deep Dive

  • 1.
    Building Enterprise-Ready Mobile Appsin the Real World: A Deep Dive Jesus Rodriguez, KidoZen
  • 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.
    About Today • Aquick view of enterprise mobile development • Consumer vs. enterprise mobile apps • Enterprise mobile development patterns and techniques
  • 4.
    About Today • Isabout real world solutions, no theoretical exercise • Is about architecture best practices, not product pitches
  • 5.
    A Quick Storyof Building Enterprise Mobile Solutions
  • 6.
  • 7.
  • 8.
    We Can BuildApps I want an app!
  • 9.
  • 10.
  • 11.
    We Have GreatMobile Development Stacks
  • 12.
  • 13.
  • 14.
    Just a fewthings to consider…
  • 15.
  • 16.
  • 17.
    Cross platform pushnotifications
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
    Manage and securemobile business data
  • 24.
    How to efficientlydistribute and test my enterprise mobile app
  • 25.
    What should Iused to monitor the performance of my enterprise mobile apps?
  • 26.
  • 27.
    As it turnsout, building enterprise ready mobile apps is a bit more complex than just building mobile apps
  • 28.
    Consumer vs. EnterpriseApps Consumer Apps Enterprise Apps
  • 29.
    Do you needan enterprise mobile strategy?
  • 30.
    Ways to thinkabout 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.
    The Building Blocksof an Agile Enterprise Mobility Strategy
  • 32.
    A Few HelpfulMobile Tech Trends • • • • Mobile device management Enterprise app stores Enterprise mobile backend as a service Mobile test clouds
  • 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.
    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.
    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.
    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.
    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.
    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.
    Building Enterprise ReadyMobile Apps: A Problem Solution Approach
  • 40.
    Problem: All myenterprise mobile apps need to store data and my DBA hates me
  • 41.
    Solution: Leverage anper appisolated storage model
  • 42.
    Per App IsolatedStorage My Cloud Mobile Services Storage Storage Service Storage Storage String theObject = "{JSON PayLoad}"; _application.getObjectSet("name").Save(theObject);
  • 43.
    Problem: I wouldlike users to authenticate to the mobile app using their corporate credentials but my mobile developers can’t spell Active Directory
  • 44.
    Solution: Use amobile-first identity federation pattern
  • 45.
    Mobile-First AD Authentication MyCloud 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.
    Problem: AD authenticationis great! But is there a way that my users don’t have to re-authenticate with each mobile app?
  • 47.
    Solution: Implement atoken reusability pattern
  • 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.
    Problem: Can Ienable multi-factor authentication across my different mobile apps
  • 50.
    Solution: Extend yourmobile authentication service with multi-factor capabilities
  • 51.
    Mobile-First SSO My CloudServices 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.
    Problem: Can Ienable push notifications across different devices?
  • 53.
    Solution: Use apush notifications brokered service
  • 54.
    Mobile Push NotificationsBroker My Cloud Services Push Notification Service Var channel= _application.pubSub.Subscribe(“channel name”); channel.Send({message});
  • 55.
    Problem: How toefficiently exchange data between my enterprise mobile apps
  • 56.
    Solution: Implement aninter-app publish subscribe pattern
  • 57.
    Inter-App Messaging PassingPattern 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.
    Problem: How canI integrate my enterprise mobile apps with my line of business systems
  • 59.
    Solution: Implement amobile line of business connector pattern
  • 60.
    Mobile LOB Connector MyCloud 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.
    Problem: My enterprisesystems are having performance issues handling mobile consumers
  • 62.
    Solution: Implement amobile first data cache
  • 63.
    Mobile LOB Connectorwith 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.
    Problem: The performanceof my mobile apps varies according to the user location
  • 65.
    Solution: Implement alocationaware traffic optimization model
  • 66.
    GEO-Aware Mobile Infrastructure MyMobile 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.
    Problem: I wouldlike to exchange data between my apps deployed across different devices
  • 68.
    Solution: Implement amobile-first publish subscribe model
  • 69.
    Mobile-First Event-Based Messaging MyCloud Services Channel Mobile Event Service _application.pubSub.Publish( “channel name”, {message}); Channel _application.pubSub.Subscribe( “channel name”);
  • 70.
    Problem: I wouldlike to secure the business data sets used by my enterprise mobile apps
  • 71.
    Solution: Implement amobile-first data access policies
  • 72.
    Mobile Data Management MyCloud 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.
    Problem: How canI protect the business data stored in the device?
  • 74.
    Solution: Encrypt thedata using a temporary trusted key based on the user’s identity
  • 75.
    Protecting In-Device MobileBusiness 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.
    Problem: How canI efficiently test my enterprise mobile apps
  • 77.
    Solution: Consider leveraginga mobile test cloud to test across different carriers, networks and devices
  • 78.
    Mobile Test Cloud MobileTest Cloud Test Cases App1 Target Carriers Target Networks Target Devices App1
  • 79.
    Problem: How canmy enterprise apps recover from unexpected errors?
  • 80.
    Solution: Leverage amobile crash logging service
  • 81.
    Mobile Logging Service MyCloud Mobile Services Logs Logging Service App1 Crash Log Collector Logs Logs
  • 82.
    Problem: I havea lot of mobile-web applications but my MDM tools only work with native apps
  • 83.
    Solution: Consider anon-demand hybrid solution
  • 84.
    On-Demand Hybrid AppBuilding Mobile Web App1 PhoneGap Build Hybrid App MDM Platform
  • 85.
    Other Enterprise MobileBest Practices • • • • • • Enterprise App Stores Cross platform implementations Continuous integration Over the air deployment Compliance Mobile HTML5 Hosting
  • 86.
    Summary • The arefundamental 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.

Editor's Notes