Productivity apps are awesome. Here at Cloudant, we’ve been known to use more than a few of them. So when we learned about what Release Mobile (@ReleaseMobile) was building on our very own NoSQL database service, we were pumped.
Release Mobile is based in London, and their latest applications help business people and software developers work more efficiently with the data both parties need to use and consume every day. Applications like datownia (@datownia) and SystemSync (@SystemSync) are essentially cloud data-sharing platforms (like Box) that speak businessperson on one end (spreadsheets, PDFs) and software developer on the other end (APIs, JSON). Release Mobile uses our friends at Windows Azure to host its application servers, and the back end is, of course, Cloudant on IBM/SoftLayer. Datownia and SystemSync plug into cloud storage services businesses already know and love like Box, Dropbox, Google Drive, and Microsoft SkyDrive, so uploading spreadsheets, PDF forms, and other documents is easy, no coding required.
The concept behind Release Mobile’s newest apps is to help businesses share data with developers. Making data highly available and easy to work with is our way of thinking at Cloudant. So we had a good discussion when we sat down with Ian Cox, CTO of Release Mobile, to learn more about the company’s applications and how they use Cloudant. Ian shared some great diagrams of Release Mobile's application architecture (, , ), so be sure to read on!
Cloudant: Release Mobile has several applications in production. Which ones use Cloudant?
Ian: Datownia came first on Cloudant. In its most basic form, it’s just a service that can turn any spreadsheet into an API. On top of that, it manages changes to the data and versioning, and provides a delta API as well.
SystemSync uses the same underlying document store, but it has a different focus than datownia. It’s more about enabling business customers to easily collect data from multiple people, without having to manually enter that data into separate systems. It’s for businesses that have a load of partners that are filling in spreadsheets, PDF forms, or any other document with fields to complete. SystemSync collects and stores all that data automatically, and properly formats it to easily integrate with their own databases and enterprise systems (CRM, analytics, etc.).
On our end, both apps use the same document store/CouchDB-level codebase, but they are quite different higher up the stack. Datownia has had some good success to date, but SystemSync is not available yet. We’ll be signing up customers for pilot trials starting in October.
Cloudant: Why did you move Release Mobile to Cloudant?
Ian: When designing datownia, I quickly realized we needed a schemaless database, and it had to be a document-oriented database. Because we were delivering JSON via our API, it made sense that we needed a document-oriented database that was storing JSON. So, that’s how we decided CouchDB seemed like a good fit. It seemed relatively well-supported and mature. That’s why we went with CouchDB. It’s pretty easy to get going with it, as well.
We did initially have our own instances of CouchDB, but weren’t sharding it particularly well. When we got to the point when we had to start reconsidering scalability, I realized that I didn’t want to be managing it. That wasn’t what I wanted to be learning about. I wanted to be concentrated on our product.
I found Cloudant and it seemed like a good fit. I talked to a few people there and was encouraged by their expertise. Plus, what made it a much easier decision was that Cloudant had Lucene-based searching already integrated into it — and we would have needed to do that anyway. Cloudant saved us from having to do it ourselves, plus you’ve integrated Lucene in a really nice way.
Cloudant: How do SystemSync and datownia use Cloudant’s Lucene search capabilities?
Ian: I’m more talking about datownia here since I haven’t implemented Lucene for SystemSync yet. Datownia has a database per customer. For all of a customer’s spreadsheet data, each row is turned into a document in Cloudant. Then we form a Lucene index across those "row" documents that will enable search on any field within that database of documents. We expose the Lucene syntax straight out through the datownia API so it translates some of the field names to things that make more sense in the context of our API. That’s pretty much it.
It was straightforward to get going. We didn’t have to make any major code changes to our application, other than for Lucene searching, which was inevitable since it was a new feature. But even those weren’t very hard. We also use the LoveSeat C# client library for working with .NET. Here’s a diagram of how our architecture fits together:
Cloudant: Since developers and business people could potentially make updates simultaneously, have you run into any issues with conflicts? How has syncing changes been?
Ian: We’ve yet to run into any consistency issues. It might be related to the way we’ve implemented our applications that conflicts are unlikely. Each downstream user, essentially, has a spreadsheet, and there’s not more than one user of those spreadsheets.
Because of the way we’ve partitioned the data on Cloudant, we don’t have issues with spreadsheets being updated in multiple places and then syncing those changes and aggregating them on Cloudant. We also have a way of working out which rows have been added or deleted, and we insert downstream records into Cloudant, which track which rows have been changed.
Cloudant: How has the performance been on Cloudant?
Ian: Our usage patterns are lightweight, so performance has been good to date. We’re a long way from needing to scale up. But the good thing, from my point of view, is that I don’t have to worry about that. I know that if we do have to scale up our database infrastructure, we could do it through Cloudant quite easily.
We haven’t implemented caching on our API tier yet, so our usage of Cloudant will go down as we do that. Right now, we’re making a lot of redundant requests to Cloudant when we know things haven’t changed. So caching is something we’ll be adding soon.
We’ll probably use the Windows Azure-based caching, which I believe is based on Memcached, or is certainly Memcached-compliant. It will be easy to add in because we know when users have updated documents. In theory, we don’t have to be calling Cloudant in these scenarios because we know the answer already and can store it right to the cache.
Cloudant: With Cloudant now, what types of issues do you no longer have to deal with?
Ian: Because we addressed database scalability preemptively, there’s been a lot of piece of mind in that area of our system. It could have been a real headache for us to build out the back end ourselves, manage it, and then migrate it to something else later. I’m glad we handled this problem early on with Cloudant.
It was great chatting with Ian from Release Mobile to learn about how Windows Azure applications are using Cloudant and the new ways customers are taking advantage of Cloudant Search.
If you find yourself constantly shipping spreadsheets between your business department and the developers supporting it, consider giving datownia’s API-as-a-service a try. And be on the lookout for a release of SystemSync coming in October.
-- Mike Broberg, marketing communications manager, Cloudant