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

Building Enterprise Ready Mobile Apps: A Developer Deep Dive

Dec 08, 2014

Download

Technology

kidozen

Session presented at the Software Architect Conference in London OCt 2013
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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