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.
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 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.
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 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.
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.
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.
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 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 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.
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 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