If you deploy using Kubernetes, then Google compute engine is probably the easiest one to get started on, since they support Kubernetes out of the box. We’ve recently gotten Couchbase running on Kubernetes, see the couchbase/kubernetes github repo and this talk from Connect.
The value add of using Couchbase on Kubernetes is that it makes the mechanics of scaling up and down very easy. It also makes it easy to throw other components into your cluster and be able to manage them in a consistent way.
As far as whether Kubernetes is “recommended” – it’s still pre-1.0 and fairly bleeding edge, so if that’s beyond your risk level, you might want to look at some more conservative approaches like running the components directly on the virtual machines.
For that, we do have some Ansible based automation that you might want to check out, in the perfcluster-aws repo as well as in the ansible-couchbase-server repo.
You mentioned GCE and AWS, but another provider to look at is Joyent Triton, which is a “Docker container” cloud. Hosts are abstracted away, so you just deploy containers. Also since there’s no hardware virtualization, you should be able to achieve bare metal performance. See this wiki page and this talk for more info.
Yes, a single instance will work fine. The processes will be competing for resources, but if you start with a small load, it won’t be an issue.
You only want to expose the Sync Gateway node to the internet. If you have multiple Sync Gateway nodes, you’ll want to put it behind a load balancer. The link that @zgramana posted below has some more info on load balancers, as well as these docs
As far as scaling out, a “typical” cluster might be something like:
- 3 dedicated AWS/GCE instances (virtual machines), each running Couchbase Server
- 3 dedicated AWS/GCE instances, each running Sync Gateway
- 1 dedicated AWS/GCE instance running Nginx
As your load increases you should be able to scale the Sync Gateway instances horizontally.
PS: we also have a Gitter chat room