Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

description

Session presented at the Software Architect Conference in London OCt 2013

Transcript of Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Page 1: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Building Enterprise-Ready Mobile Apps in the Real World:

A Deep DiveJesus Rodriguez, KidoZen

Page 2: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 3: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

About Today

• A quick view of enterprise mobile development

• Consumer vs. enterprise mobile apps• Enterprise mobile development patterns and

techniques

Page 4: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

About Today

• Is about real world solutions, no theoretical exercise

• Is about architecture best practices, not product pitches

Page 5: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

A Quick Story of Building Enterprise Mobile Solutions

Page 6: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Mobility is Hot

Page 7: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

And Obvious

Page 8: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

We Can Build Apps

I want an app!

Page 9: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

And Be Rock Stars

Page 10: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

After All….

Page 11: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

We Have Great Mobile Development Stacks

Page 12: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Let’s Build Mobile Solutions

Page 13: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Not so fast…

Page 14: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Just a few things to consider…

Page 15: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Storing Data

Page 16: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Mobile identity management

Page 17: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Cross platform push notifications

Page 18: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Integration with cloud services

Page 19: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Integration with enterprise systems

Page 20: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Integration with SaaS technologies

Page 21: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Consistent management experience

Page 22: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

MDM, MAM integration

Page 23: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Manage and secure mobile business data

Page 24: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

How to efficiently distribute and test my enterprise mobile app

Page 25: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

What should I used to monitor the performance of my enterprise mobile

apps?

Page 26: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Well…..That Sucks

Page 27: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

As it turns out, building enterprise ready mobile apps is a bit more complex than

just building mobile apps

Page 28: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Consumer vs. Enterprise Apps

Consumer Apps

EnterpriseApps

Page 29: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Do you need an enterprise mobile strategy?

Page 30: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 31: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

The Building Blocks of an Agile Enterprise Mobility Strategy

Page 32: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

A Few Helpful Mobile Tech Trends• Mobile device management • Enterprise app stores• Enterprise mobile backend as a service• Mobile test clouds

Page 33: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 34: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 35: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 36: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 37: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 38: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 39: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Building Enterprise Ready Mobile Apps: A Problem Solution Approach

Page 40: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: All my enterprise mobile apps need to store data and my DBA hates

me

Page 41: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Leverage an per app-isolated storage model

Page 42: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Per App Isolated Storage

String theObject = "{JSON PayLoad}";_application.getObjectSet("name").Save(theObject);

StorageService

My Cloud Mobile Services

Storage

Storage

Storage

Page 43: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: I would like users to authenticate to the mobile app using their

corporate credentials but my mobile developers can’t spell Active Directory

Page 44: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Use a mobile-first identity federation pattern

Page 45: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 46: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: AD authentication is great! But is there a way that my users don’t have to re-authenticate with each mobile app?

Page 47: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement a token reusability pattern

Page 48: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 49: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: Can I enable multi-factor authentication across my different mobile

apps

Page 50: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Extend your mobile authentication service with multi-factor

capabilities

Page 51: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 52: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: Can I enable push notifications across different devices?

Page 53: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Use a push notifications brokered service

Page 54: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Mobile Push Notifications Broker

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

channel.Send({message});

Push NotificationService

My Cloud Services

Page 55: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: How to efficiently exchange data between my enterprise mobile apps

Page 56: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement an inter-app publish subscribe pattern

Page 57: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 58: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: How can I integrate my enterprise mobile apps with my line of

business systems

Page 59: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement a mobile line of business connector pattern

Page 60: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 61: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: My enterprise systems are having performance issues handling

mobile consumers

Page 62: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement a mobile first data cache

Page 63: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 64: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: The performance of my mobile apps varies according to the user location

Page 65: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement a location-aware traffic optimization model

Page 66: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 67: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: I would like to exchange data between my apps deployed across

different devices

Page 68: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement a mobile-first publish subscribe model

Page 69: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Mobile-First Event-Based Messaging

_application.pubSub.Publish(“channel name”, {message});

Mobile EventService

My Cloud Services

Channel

Channel

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

Page 70: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: I would like to secure the business data sets used by my enterprise

mobile apps

Page 71: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Implement a mobile-first data access policies

Page 72: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 73: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: How can I protect the business data stored in the device?

Page 74: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Encrypt the data using a temporary trusted key based on the

user’s identity

Page 75: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 76: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: How can I efficiently test my enterprise mobile apps

Page 77: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Consider leveraging a mobile test cloud to test across different carriers, networks and devices

Page 78: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Mobile Test Cloud

Mobile Test Cloud

App1

Test Cases

Target Carriers

Target Networks

Target Devices

App1

Page 79: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: How can my enterprise apps recover from unexpected errors?

Page 80: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Leverage a mobile crash logging service

Page 81: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Mobile Logging Service

LoggingService

My Cloud Mobile Services

Logs

Logs

Logs

App1 Crash Log Collector

Page 82: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Problem: I have a lot of mobile-web applications but my MDM tools only work

with native apps

Page 83: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Solution: Consider an on-demand hybrid solution

Page 84: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

On-Demand Hybrid App Building

Mobile Web App1

PhoneGap Build

MDM Platform

Hybrid App

Page 85: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Other Enterprise Mobile Best Practices

• Enterprise App Stores• Cross platform implementations• Continuous integration• Over the air deployment • Compliance • Mobile HTML5 Hosting

Page 86: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

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

Page 87: Building Enterprise Ready Mobile Apps: A Developer Deep Dive

[email protected]

http://www.kidozen.comhttp://jrodthoughts.com

http://twitter.com/#!/jrodthoughtshttp://weblogs.asp.net/gsusx