building enterprise ready mobile apps: a developer deep dive

Post on 08-Dec-2014

1.837 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Session presented at the Software Architect Conference in London OCt 2013

TRANSCRIPT

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

Thanksjr@kidozen.com

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

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

top related