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.
[ Thinking of going it alone as an independent developer? Read 15 tips for success as an independent developer and 10 hard-earned lessons of a lifetime in IT. | Keep up with hot topics in app dev with InfoWorld’s Application Development newsletter. ]
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.
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
Report: Samsung’s head of TVs may be asked to revitalize mobile business
Webcam snooper now looking for a job
Traces of Regin malware may date back to 2006
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.
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.
Featured Resource
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 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’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, 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 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.
Kinvey bills itself as a complete mobile and Web app platform. It has extensive client support, integrates with the major enterprise databases, and offers a back-end data store, a file store, push notifications, mobile analytics, iBeacon support, and the ability to run custom code on the back end.
Kinvey sells to IT as its primary customer because it provides an enterprise platform, not for one or two apps but for tens or hundreds of apps for an enterprise. However, it also engages and supports the developer community app by app.
Kinvey supports native, hybrid, and HTML5 apps. It has native toolkit support for iOS and Android. In addition, it supports Angular, Backbone, Node.js, Apache Cordova/PhoneGap, and Appcelerator Titanium, and it provides a REST API. Kinvey integrates with apps through libraries and API calls, and expects you to edit your app locally.
Kinvey cloud code is written in JavaScript, although not Node.js, and edited online. In addition to using standard JavaScript and external services, it can use Kinvey APIs for logging, accessing collections, sending push notifications, sending email, validating requests, date and time functions, asynchronous processing, rendering a Mustache template, and obtaining the back-end context. Cloud code can live in hook processing functions and custom endpoints. Cloud code is versioned internally in Kinvey.
Kinvey supports deploying on almost any cloud, including private clouds. That includes deploying to HIPAA-compliant facilities and to facilities located entirely in the EU. Even Kinvey’s multitenant cloud is considered secure enough for most apps, as the company does end-to-end encryption, and customers that use data links can keep their data in databases behind their own firewalls. If you have a Google App Engine server, you can link it to your Kinvey back end.
Authentication can be done internally by Kinvey or through LDAP or Active Directory in the business and enterprise versions. Kinvey also supports Facebook, Twitter, Google+, and LinkedIn identities through OAuth.
Kinvey data links connect to Kinvey’s MongoDB data store. In most cases, customers forward the CRUD requests directly to the real back end, but some cache the data in MongoDB. Kinvey currently has data links for Microsoft Dynamics CRM, Salesforce CRM, Oracle Database, and Microsoft SQL Server.
Kinvey has an automated control setup for offline data synchronization, in which data is automatically pulled from the cache if the application is offline. If the application is online, data is pulled from the network and stored in the cache. Using automated control, your Kinvey app will attempt to synchronize any locally stored data when the device goes online again, but if the server data has also changed you’ll have a conflict. You can set your conflict resolution policy to clientAlwaysWins, serverAlwaysWins, or a custom conflict resolution function.
Parse
Parse was once the poster child for MBaaS, and despite its acquisition by Facebook, it is still a viable, low-friction mobile back end for limited-volume consumer apps. On the plus side, it is well-documented, with good native client support and a JavaScript client SDK based on Backbone. Parse also runs JavaScript code on the back end, which offers developers the option of an all-JavaScript application stack. On the minus side, Parse is missing big pieces necessary for business apps, such as data integration, offline operation, and online/offline synchronization. At the same time, its pricing seems geared to lower-volume apps.
Parse supports native mobile, JavaScript, and desktop apps. On the mobile side, it has native support for iOS, Android, and Windows Phone 8. On the desktop, it has support for OS X and Windows 8 (.Net), as well as Unity games.
Parse lets you run JavaScript code in the cloud using the same Parse JavaScript SDK as the client. Rather than have you routinely edit your cloud code in a browser, as FeedHenry and Kinvey do, Parse supplies a command-line tool for managing code in Parse Cloud and allows you to use your favorite JavaScript editor on your computer. However, you can view your code and your logs in your dashboard. The command-line tool is an app scaffold generator, app deployment tool, log printer, app rollback tool, and self-updater.
The Parse Cloud data browser lets you import bulk data; add classes, columns, and rows; and view filtered data.
Parse can send Push notifications to iOS, Android, Windows 8, and Windows Phone 8. In each case, you’ll have to provision your push server, then provide the certificate or credentials to your app.
Parse has a fairly complete user system predefined, including the usual sign-up mechanism with email verification and a provision for anonymous users. A system of ACLs controls what data individual users can read and write. For more complicated use cases, Parse supports a hierarchy of roles, with a separate layer of ACLs for the roles.
Parse has nine integrations with other services. Three of them — Mailgun, Mandrill, and SendGrid — are for sending email. Stripe is for charging credit cards. Twilio sends SMS and voice messages. Third-party modules are available to integrate Parse with Cloudinary, Instagram, and Paymill.
As far as I can tell, implementing enterprise data integration with Parse requires writing a REST Web service wrapper for the data source and a JavaScript module for Parse. I haven’t seen any options for hosting Parse other than using its own multitenant cloud.
As you can see from the scores listed at the bottom of the first page of this article, AnyPresence earned the highest marks: a combined score of 9.1 and an Editor’s Choice badge. I feel that AnyPresence offers more value than the others for enterprises that need to integrate their existing systems with mobile applications, as it generates customized SDKs, along with apps and back ends, from your model and design. Costing a “low six figures” per year, however, it won’t fit into every company’s budget.
FeedHenry, which earned an overall score of 8.6, is also an enterprise-oriented MBaaS. FeedHenry has a nice integration with Git for collaboration and version control, and I like its hosted app build service, its Node.js back end and curated Node modules list, and its drag-and-drop form designer. Like AnyPresence, FeedHenry may not fit into every company’s budget.
Kinvey, with an overall product score of 8.3, engages as a company with the developer community, as well as with corporate IT departments. I like the way Kinvey does enterprise data links through its internal NoSQL database API, and I appreciate the way it has structured its hooks for back-end business logic.
I criticized Appcelerator for its apparent lack of effort to curate data integration modules, and considered that its high price relative to FeedHenry and Kinvey may diminish its overall value, giving it a net score of 7.8. However, Appcelerator as a company only recently pivoted into the MBaaS space. It may yet fill in its product’s missing functionality and adjust its pricing to be more competitive.
Finally, I consider Parse suitable for building and operating back ends for consumer-facing mobile apps, and not business apps, given its lack of any data connectors other than a basic REST client. My other major reservation about Parse is its usage-based pricing, which lets a developer get started easily but could potentially bite an underfunded startup that suddenly had a viral hit on its hands without a real business model. Its score is 7.6, the lowest in this group.
That isn’t to say you shouldn’t use Parse. It’s a viable, low-friction way to get started with back end as a service. However, if you choose to use it, go in with your eyes open, monitor your costs, and be prepared to throttle or eliminate service calls that are running up bills you can’t afford.
For business apps, AnyPresence and FeedHenry lead the pack in both ease and capabilities. Kinvey is not far behind, and its pricing is more favorable for smaller businesses.
Best Microsoft MCTS Certification, Microsoft MCITP Training at certkingdom.com