5 clouds for building mobile apps

cloud computing concept 136627333
Credit: Thinkstock

MBaaS (mobile back end as a service) is a fairly new product category that has largely supplanted MEAPs (mobile enterprise application platforms). Over the past two months, I've closely examined five MBaaS systems: AnyPresence, Appcelerator, FeedHenry, Kinvey, and Parse. In this article, I'll wrap up the series by summarizing all five systems, surveying their common ground and key differences, and drawing conclusions.

The general idea of MBaaS is that mobile apps need common services that can be shared among apps instead of being custom developed for each. Mobile apps using MBaaS follow a loosely coupled distributed architecture, and MBaaS systems themselves typically have more distributed architectures than MEAP systems, which tended to be unified middleware servers.

MBaaS systems typically provide push notifications, file storage and sharing, integration with social networks such as Facebook and Twitter, location services, messaging and chat functions, user management, the ability to run business logic, and usage analysis tools. Enterprise-oriented MBaaS systems also provide integration with existing applications and databases.

Back ends don’t exist in isolation, so MBaaS systems provide some level of mobile client support. This ranges from exposing REST APIs to all comers to providing app generation for iOS, Android, some flavors of JavaScript, and perhaps other mobile platforms.

In addition, back ends need to be customized and programmed, so MBaaS systems provide a combination of online and desktop development environments. Finally, back-end services are intended to be in continuous operation, so they need a level of application monitoring and error logging in addition to usage analysis. Monitoring and analytics might be provided directly by the MBaaS vendor or through integration with a third-party service.

For extra credit, MBaaS systems can generate mobile SDKs. This is most useful when a vendor is exposing its services to partners doing mobile app development. In addition, MBaaS systems can support offline operation of their mobile apps and offline/online database synchronization. MBaaS systems may provide their own mobile device management or integrate with an MDM vendor. MBaaS systems may also support device-specific services where appropriate, such as iBeacon on iOS devices.

Commonalities and differentiators

In the course of reviewing FeedHenry, Kinvey, Appcelerator, Parse, and AnyPresence, certain capabilities and implementations became very familiar. For example, all five MBaaS products provide storage using MongoDB, an open source NoSQL document database that stores JSON objects. All of these products provide a data design UI for their MongoDB data store, and these UIs all look similar. It wouldn’t surprise me if the UIs were all based on the same MongoDB sample code.

All five MBaaS systems are available in a multitenant cloud. All have online documentation. All provide push notification and user authentication APIs. All support native iOS and Android apps at some level, and all have some way for developers to implement custom server logic.

The differentiators between these products are telling. For example, their support for integration with enterprise applications and databases ranges from the basic ability to call external REST interfaces that return JSON to deep integrations with common applications and databases. The time required for a developer to implement a given enterprise integration with an MBaaS ranges from days down to minutes, depending on how much of the work a given MBaaS vendor has already done for a specific integration.

Some MBaaS systems are available on-premise, and some are available in private clouds. Some can be hosted in compliance with HIPAA, PCI, FIPS, and EU data security standards. Some have their own testing capabilities, and some offer cloud builds of mobile apps.

Some support HTML5 and hybrid apps. Some compile JavaScript to native device code. Some support PhoneGap, some support Apache Cordova, and some avoid both wrappers for hybrid apps in favor of other solutions, such as generating native apps.

Some run their back ends on Node.js, some on Rails, and some on unspecified platforms. Some support BlackBerry, Windows Phone 8, Windows 8, or Unity clients.

Some have hosted app and back-end IDEs in their cloud, some provide multiplatform desktop IDEs, and some have desktop command-line interfaces for cloud control. Some support multiple popular JavaScript frameworks, such as Backbone and Angular, and some use their own JavaScript frameworks, which may be adaptations of specific open source frameworks.

MBaaS five ways

As we’ll see, the different MBaaS vendors have targeted slightly different markets and made slightly different technical choices. Nevertheless, they have a high degree of overlap and commonality.

AnyPresence

The goal of AnyPresence is not only to help enterprises build back ends for their mobile apps. AnyPresence combines app building, back-end services, and an API gateway.

AnyPresence has an online designer that generates back-end code, mobile app code, and even customized mobile API code. All the generated code can be downloaded, edited, and run on compatible platforms. To cite one of AnyPresence’s favorite customer examples, MasterCard has used AnyPresence to enable partners to easily build mobile apps against MasterCard's Open API services.

AnyPresence generates app UIs (or starter kits, if you wish) for jQuery, Android (XML layout), and iOS (storyboard), and it generates app SDKs for Java, Android, HTML5, Windows Phone, Xamarin, and iOS. The design environment refers to the generated JavaScript/HTML5 SDK as “jQuery.” In fact, AnyPresence actually generates CoffeeScript that uses the Underscore, Backbone, and jQuery libraries.

AnyPresence generates back-end servers for Ruby on Rails. In the future it will also generate Node.js back ends, which will be a good development. The AnyPresence environment can generate deployments to Heroku (usually for a Rails back end) to Amazon S3 (usually for HTML5 apps) to native iOS and Android apps with or without Apperian security. You aren’t limited by AnyPresence’s deployment choices, however. The generated code can always be downloaded and deployed elsewhere, assuming you have compatible deployment environments.

AnyPresence generate app build

AnyPresence's app build selection screen. Note the wide assortment of SDKs and the small assortment of prototype app UIs that can be generated.

The AnyPresence design environment exists online and runs in most browsers. The design environment has a dashboard; a settings screen; screens to create and monitor environments, deployments, and builds; screens to generate and deploy apps, back ends, and SDKs; screens to add and manage data sources and data objects; screens for authorization, roles, and authentication strategy; screens for stock and custom extensions; the interface designer; and a customizable set of themes.

I found the selection of data sources to be good and the implementation of the provided MongoDB data store to be on par with other MBaaS systems. What sets AnyPresence apart is the way the data model integrates throughout the design environment and into all the generated code.

The place you add most monitoring integrations, such as Airbrake and New Relic, is hidden deep in the Deployments/Add-ons tab. Naturally, monitoring is dependent on the runtime environment, and AnyPresence is designed to be environment-agnostic. For Splunk integration, you have to enable syslog output on the back end to push all the logs/events into Splunk systems for reporting and monitoring.

Appcelerator

Appcelerator Titanium has been a player in the mobile development space for several years, with a local development environment that compiles JavaScript to native code for iOS, Android, and other targets. With the release of Appcelerator Studio 3.3 and Appcelerator Platform 2.0 in July 2014, the company added an MBaaS with about 25 APIs, Node.js support, and online analytics. In addition, Appcelerator has published interfaces to its MBaaS that developers can add to apps built with native SDKs, although it hasn’t yet supported native SDKs in its own Appcelerator Studio IDE.

Developers can see a quick overview of app installs, sessions, API calls, and crashes in the online Appcelerator dashboard overview page. Other parts of the dashboard allow for cloud management, testing, performance metrics, and analytics.

The Cloud panel shows usage, exposes data management, displays API request and push notification logs, lists custom services, and allows for cloud configuration. The testing panel uses SOASTA’s TouchTest as an integrated mobile testing solution. The performance panel allows you to monitor your apps and troubleshoot performance, crashes, and exceptions. It also lets you view crash trends, integrate with bug tracking systems, and configure your monitoring.

Appcelerator platform overview

Appcelerator Platform's dashboard overview for the demo Field Service application. The crashes were deliberately coded into the app.

Developers can define and view Appcelerator analytics online, as well as optionally publish selected analytics to the Appcelerator Insights app for the iPad, typically for use by a manager.

Appcelerator Platform allows you to build custom back-end services using Studio and Appcelerator's Node.ACS MVC (model-view-controller) framework. Node.ACS combines Node.js and Express with interfaces to Appcelerator Cloud Services. Appcelerator also allows you to run plain Node.js applications on its cloud platform.

Appcelerator has multiple frameworks on the client side, and multiple API types for the cloud. At the base level on the client, Appcelerator offers the Titanium SDK, which provides an interface between JavaScript and native services. At a higher level, Appcelerator offers the Alloy Framework, which is based on the model-view-controller architecture and contains built-in support for Backbone and Underscore. When you create a new client app from Studio, you typically generate one that uses Alloy.

The Alloy framework handles some of what you need for offline/online data synchronization, but not all of it. Appcelerator lacks preconfigured, vetted enterprise data connectors other than for SAP and Salesforce.com. However, because it can run Node modules on its Node.ACS service, developers can draw on modules from the Node.js community. Appcelerator’s only commercial sync server is currently limited to a Microsoft Dynamics connector.

FeedHenry

FeedHenry, with a focus on supporting enterprise line-of-business apps, is a Node.js-based, enterprise-oriented MBaaS and mobile application platform. It has a wide array of integrations, both online and offline development options, collaborative app building, and a drag-and-drop form builder. FeedHenry was spun off from the Irish Research Institute in 2010 and acquired by Red Hat in September 2014.

FeedHenry claims to have global infrastructure on all major clouds and support for on-premise, back-end deployment. The FeedHenry online environment integrates directly with GitHub for collaboration and version control.

FeedHenry 3 supports native SDKs for iOS, Android, and Windows Phone 8, along with hybrid apps using Apache Cordova, HTML5 mobile Web apps, and Sencha, Xamarin, and Appcelerator Titanium. The way the JavaScript interface to the FeedHenry cloud works, it would be hard to find a JavaScript framework that isn’t compatible.

When writing for FeedHenry in JavaScript, you include the feedhenry.js script in your HTML, initialize it with $fh.init, then call cloud functions from the $fh namespace. FeedHenry can import existing apps from a Zip file or Git repository.

FeedHenry app preview

FeedHenry includes an online editor, supporting offline tools, and a command-line interface. Here we see the mobile app, with a code editor in the middle of the screen and a preview at right. You can configure the back-end service in another pane of the online interface.

The FeedHenry build service, which functions along the same lines as Adobe PhoneGap Build, can turn an HTML5 app into binaries for Android, BlackBerry, iPhone, iPad, iOS (universal), and Windows Phone. Each binary can connect to one of your MBaaS instances, and it can be built for development, distribution, release, or debugging, depending on the platform.

FeedHenry has a drag-and-drop form builder with a good assortment of templates to use as starting points. However, at the time I reviewed FeedHenry, it had few full-fledged app templates.

FeedHenry lists more than 50 Node.js plug-ins in its curated modules list. That list includes interfaces to most major relational and NoSQL databases. Should the curated list not include what you seek, the much larger list of Node community modules is likely to yield a match.

FeedHenry runs on all major public and private clouds, and on a wide range of IaaS and PaaS infrastructures. FeedHenry operates a HIPAA-compliant cloud and live clusters in both Europe and North America.

1 2 Page 1
Windows 10 annoyances and solutions
Shop Tech Products at Amazon
Notice to our Readers
We're now using social media to take your comments and feedback. Learn more about this here.