There's Cloudant, but are there any others?

72 views
Skip to first unread message

Brendan Duddridge

unread,
Oct 29, 2015, 2:11:37 PM10/29/15
to Couchbase Mobile
Hi,

I'm looking for a Couchbase hosting service to provide Couchbase Lite replication services for my (non-enterprise) Mac and iOS apps. Here are my requirements:
  1. Security. I don't want to have access to any user's data. All communication with server must be secure. Storage of user data must be secure.
  2. There must be an API so that my app can create both databases and user accounts on demand with multiple databases per user account.
  3. Each user must have their own databases. I don't want documents from one user intermixed with documents of another user. One reason is for security, another is that different users can possibly have documents with the same documentID. I think having separate databases solves this problem. I'm not sure if Couchbase Server's "channels" feature allows for this.
  4. Lots of storage available for attachments. In order to provide easy access to files outside the document, I'm using the attachments feature of CBL.
  5. A nice to have would be direct client billing. I would prefer if my customers had to sign-up for an account and pay for the service themselves rather than me having to pay on their behalf.

Does such a service exist outside of Cloudant? I think Cloudant sounds like a fantastic service to use, but they want to charge me a starting price of $2500 / month for a hosted solution and that's with only 480 GB of disk space. They seemed very reluctant when I asked them about using attachments to store files. Not sure why, attachments are a great feature of Couchbase and it solves a huge problem with synchronizing files. My data has to be available offline, so I can't just store a URL to some other file storage system like Amazon S3 and I don't want to write my own file sync solution. That's why I chose Couchbase Lite in the first place.

Perhaps I'm just living in a dreamworld where such a service exists. Currently my app uses iCloud Drive and Dropbox for syncing user's data. So it's up to the user to provide their own cloud storage space.

Why don't I just keep using iCloud Drive and Dropbox for cloud storage? Mostly because I am also giving user's an option to use Couchbase Lite's peer-to-peer  replication feature and using document attachments is perfect for this. I don't have to worry about syncing files separately from the database. It just all happens automatically. I don't want to have to write different code for syncing files via a cloud service and a separate one for syncing peer-to-peer. And then what about if the user switches from syncing via a cloud service to syncing via peer-to-peer? I'd have to manage copying files from the cloud service down to their device and then adding them as document attachments so they could be synced peer-to-peer.

Anyway, so I'm hoping that it's possible for me to provide this kind of sync service to my customers. If anyone has any advice it would be greatly appreciated.

Thanks,

Brendan

Jens Alfke

unread,
Oct 29, 2015, 6:56:13 PM10/29/15
to mobile-c...@googlegroups.com
On Oct 29, 2015, at 11:11 AM, Brendan Duddridge <bren...@gmail.com> wrote:

Hi,

I'm looking for a Couchbase hosting service to provide Couchbase Lite replication services for my (non-enterprise) Mac and iOS apps. 

I’m not aware of any hosted services other than Cloudant. I’ve heard talk of companies setting up Couchbase Server / Sync Gateway hosting services, but I haven’t hard of any that are running yet. (But don’t take this as a definitive ‘no’.)

One halfway option is to run your own virtual server using a service like AWS or Heroku. Couchbase has pre-configured images you can install to instantly set up a system with Couchbase Server and Sync Gateway.

  1. Security. I don't want to have access to any user's data. All communication with server must be secure. Storage of user data must be secure.
Those are different things. Secure communications is just SSL, of course. Secure storage could just mean that the provider is doing its job enforcing access control. But for you to not have access to user data implies that the data has to be encrypted, with the user holding the decryption key. That’s not something we support yet, although there are hooks in the replication API for doing it (there’s a callback you can register to transform a doc’s contents when it’s pushed or pulled.)

  1. Each user must have their own databases. I don't want documents from one user intermixed with documents of another user. One reason is for security, another is that different users can possibly have documents with the same documentID. I think having separate databases solves this problem. I'm not sure if Couchbase Server's "channels" feature allows for this.
Database-per-user is feasible as long as users don’t share documents. If they do, then those databases all need to replicate with each other on the server side, which is difficult to configure and runs into scaling problems. (This was the very issue that led Chris Anderson to come up with the idea of channels.)

With Sync Gateway there would only be a single database, but channels govern user access to data. You do need to ensure that different users’ docs don’t have the same docIDs — either use UUIDs only, or put the userID into the docID.

  1. A nice to have would be direct client billing. I would prefer if my customers had to sign-up for an account and pay for the service themselves rather than me having to pay on their behalf.
If there’s really no sharing between user data, you could even have every user sign up for their own Cloudant account. Then you don’t have to deal with accounts or billing at all, and you definitely don’t have access to their data :)

—Jens

Brendan Duddridge

unread,
Oct 29, 2015, 7:43:42 PM10/29/15
to Couchbase Mobile
Hi Jens,

Thanks very much for the feedback.

Today I created my first AWS account just to see if I could get Sync Gateway and Couchbase Server 4 community editions running. There's a lot to learn it seems.

I'll work on the documentID UUID issue and I have a question about that which I'll post in a separate thread.

I think maybe if I can offer my customers various options that would be ideal. So I'm thinking 3 ways to sync:
  1. Peer to peer.
  2. Shared service via my AWS instance.
  3. User provides their own CouchDB compatible server (Cloudant or Couchbase).
I guess the problem will be managing authentication for any of those services.

I'll have to scour the documentation and tutorial videos to find some information on that. Or see if I can hire someone to help me set them up. I used to do server app development, but that was with WebObjects running on our own OS X Xserves. Haven't really done anything server side in about 5 years.

Thanks,

Brendan

James Nocentini

unread,
Oct 31, 2015, 4:14:53 AM10/31/15
to Couchbase Mobile
There are also Docker images hosted on Docker Hub for Sync Gateway and Couchbase Server.

In this blog post, I explain how you can set up continuous delivery for your staging server http://jamiltz.github.io/2015-10-23-continuously-deploy-couchbase-mobile-stack-with-docker-tutum/

In the tutorial, we're using Tutum which is a platform to deploy your app components on different providers (AWS, Digital Ocean).

It might be a bit of work to set it up initially but then the development experience and release cycle is really nice.

James

Brendan Duddridge

unread,
Oct 31, 2015, 5:46:51 AM10/31/15
to Couchbase Mobile
Hi James,

I've heard of Docker, but I don't know much about it just yet.

I'll give your blog post a read.

I don't plan on doing much development on the server side though. I want it really just for replication of the data from my Mac and iOS apps.

Thanks!

Brendan
Reply all
Reply to author
Forward
0 new messages