Six Design Patterns for Highly
Successful Mobile Apps
For years, building web apps has required server-side code and a
database. That was great for browsers, but then mobile apps came along and
changed everything. Today apps appear on any number of devices, including
browsers, and the same app needs to run seamlessly on multiple devices.
Apps are fundamentally different from their web application
counterparts. Traditional web applications run on a monolithic, server-side
stack, which delivers content in the form of web pages. For the most part,
browsers simply display this content. When a user interacts with a web page,
requests are sent to the server for additional content.
In contrast, mobile apps run on a client. Instead of deploying
program logic to a back-end server, the logic is housed on the client. This
fundamentally changes the dynamic between client and server, making the client
no longer merely a display mechanism.
Additional considerations for the development of mobile apps
come in the form of the resource constraints imposed by mobile platforms. Mobile
apps need to be as lightweight and agile as possible. In other words, you
simply wouldn’t run a LAMP stack on an iPhone.
Another challenge for Mobile app developers is dealing with the
cumulative traffic that can be generated by even a modest number of
clients. For example, many mobile apps connect to the cloud regularly
throughout the day to perform authentication, upload and download data, or to
perform geo-queries against a user's current location. This can result in
what amounts to a distributed denial of service attack (DDoS) against an
underpowered service architecture.
An added consideration is the data-warehousing infrastructure
necessary to deal with all the information being collected. For mobile apps to
deliver cutting edge, rich interaction on mobile devices they must be supported
by equally rich services and data storage mechanisms.
Enter the cloud.
By hosting rich services in the cloud, client apps can deliver
the interactivity that users desire while maintaining a lightweight footprint. With
the emergence of mobile PaaS (Platform-as-a-Service) solutions, the days of app
developers having to find another developer with a different skill set to help
or spending half or more of their development time building services, may soon
be gone.
Everything from storing users, groups, roles, single sign-on
authentication, social interactions, feeds, queries, connections between users
and objects can be provided by a PaaS solution. This leaves the developers to
focus on writing cool apps and not on the server code.
So what services do
mobile developers need? We think these 6 patterns are a great start.
1. User Management
Who are you? Who do you know who has the same app? Who do you know outside the app?
One of the most fundamental needs of app developers is user management - straightforward ways to handle users’ (customers’) access control, groups, roles, subscriptions, upgrades, reminders, and so on across multiple devices and apps.
Who are you? Who do you know who has the same app? Who do you know outside the app?
One of the most fundamental needs of app developers is user management - straightforward ways to handle users’ (customers’) access control, groups, roles, subscriptions, upgrades, reminders, and so on across multiple devices and apps.
Internet ID and social connectivity also relate to user
management. Developers are being rewarded for building identity into apps -
from showing pictures of users to bridging to other identities like Twitter and
Facebook.
2. Connected & Social
Interactions
Who do you follow? Who are your friends? Who will you invite?
Who do you follow? Who are your friends? Who will you invite?
In-app and extra-app interactions are all core to mobile apps
and devices. For example, an app might bridge out to do a notification or
invite a user to join.
In the past, this would have required a generous helping of
custom server-side code. Development platforms that provide activity streams,
linked profiles, and so on facilitate the development of connected and social
interactions.
3. Activity Streams
Activity streams are a kind of static query on moving data. They take connections and turn them into activities, adding a social layer to data and opening up real-time collaboration.
Activity streams are a kind of static query on moving data. They take connections and turn them into activities, adding a social layer to data and opening up real-time collaboration.
Popular activities vary depending on context but activity
streams enable activities such as status updates, check-ins, comments, or other
broadcasts to fellow users off of any object or off of multiple objects.
4. Sync Content &
Data
Apps need to be able to share data with users, and import, export, and sync application data with third-party applications. The ability to sync data across devices allows developers to create apps, which provide consistency of experience. Think about your favorite “shopping list” or “to do” app that syncs across your laptop, your iPad, and your mobile phone!
Apps need to be able to share data with users, and import, export, and sync application data with third-party applications. The ability to sync data across devices allows developers to create apps, which provide consistency of experience. Think about your favorite “shopping list” or “to do” app that syncs across your laptop, your iPad, and your mobile phone!
5. Location, location,
location
Geo-location or Location-Based Service (LBS) apps attach real-world locations to mobile devices and are one of the fastest growing types of apps. You can establish when and where you receive information, track your peers and friends in real-time by location and proximity, find and provide information about things and friends near you.
Geo-location or Location-Based Service (LBS) apps attach real-world locations to mobile devices and are one of the fastest growing types of apps. You can establish when and where you receive information, track your peers and friends in real-time by location and proximity, find and provide information about things and friends near you.
6. Analytics
App developers need to be able to monitor usage and analyze data to drive both app functionality and business intelligence. Important services include real-time activity processing, behavior tracking and targeting.
App developers need to be able to monitor usage and analyze data to drive both app functionality and business intelligence. Important services include real-time activity processing, behavior tracking and targeting.
Analytics on individual apps are powerful and useful for
decision-making about functionality, usage, troubleshooting problems, and so
on. But it’s a game changer when the insights from aggregated data -
possibly from multiple apps a developer has created - allow developers to turn
what they’re doing into a business and evolve it over time.
by Rod Simpson
by Rod Simpson
No comments:
Post a Comment