Avatar of Gabriel Pa

Gabriel Pa

CEO at NaoLogic Inc
CEO at NaoLogic Inc·

After using couchbase for over 4 years, we migrated to MongoDB and that was the best decision ever! I'm very disappointed with Couchbase's technical performance. Even though we received enterprise support and were a listed Couchbase Partner, the experience was horrible. With every contact, the sales team was trying to get me on a $7k+ license for access to features all other open source NoSQL databases get for free.

Here's why you should not use Couchbase

Full-text search Queries The full-text search often returns a different number of results if you run the same query multiple types

N1QL queries Configuring the indexes correctly is next to impossible. It's poorly documented and nobody seems to know what to do, even the Couchbase support engineers have no clue what they are doing.

Community support I posted several problems on the forum and I never once received a useful answer

Enterprise support It's very expensive. $7k+. The team constantly tried to get me to buy even though the community edition wasn't working great

Autonomous Operator It's actually just a poorly configured Kubernetes role that no matter what I did, I couldn't get it to work. The support team was useless. Same lack of documentation. If you do get it to work, you need 6 servers at least to meet their minimum requirements.

Couchbase cloud Typical for Couchbase, the user experience is awful and I could never get it to work.

Minimum requirements The minimum requirements in production are 6 servers. On AWS the calculated monthly cost would be ~$600. We achieved better performance using a $16 MongoDB instance on the Mongo Atlas Cloud

writing queries is a nightmare While N1QL is similar to SQL and it's easier to write because of the familiarity, that isn't entirely true. The "smart index" that Couchbase advertises is not smart at all. Creating an index with 5 fields, and only using 4 of them won't result in Couchbase using the same index, so you have to create a new one.

Couchbase UI The UI that comes with every database deployment is full of bugs, barely functional and the developer experience is poor. When I asked Couchbase about it, they basically said they don't care because real developers use SQL directly from code

Consumes too much RAM Couchbase is shipped with a smaller Memcached instance to handle the in-memory cache. Memcached ends up using 8 GB of RAM for 5000 documents! I'm not kidding! We had less than 5000 docs on a Couchbase instance and less than 20 indexes and RAM consumption was always over 8 GB

Memory allocations are useless I asked the Couchbase team a question: If a bucket has 1 GB allocated, what happens when I have more than 1GB stored? Does it overflow? Does it cache somewhere? Do I get an error? I always received the same answer: If you buy the Couchbase enterprise then we can guide you.

READ MORE
Low-code enterprise resource planning (ERP) for B2B commerce companies (naologic.com)
30 upvotes·6 comments·218.2K views
Wojciech Bator
Wojciech Bator
·
November 6th 2020 at 10:04AM

I agree with you. What's more, Mongo provides really powerful tool which is Aggregation Framework. With it's pipes you can model the data any way you wish. Interesting thing is that the Couchbase team criticized it for being complex solution - https://blog.couchbase.com/couchbases-n1ql-query-shatters-the-limits-of-mongodb/ . I'd argue - Aggregate Framework save a lot of my time, allowing me for data processing that was pretty much impossible to do with n1ql or sql queries in a performant, clean way. Sorting on aggregated column in paginated table is one simple example. While sorting and paging is covered well, aggregation functions in SQL and their further processing in pipeline feels incredibly dumb after using Mongo Aggregate Framework for some custom scenarios.

Mongo is my number 1 pick for apps like admin panels or dashboards hosted on premise.

·
Reply
Gabriel Pa
Gabriel Pa
·
November 6th 2020 at 1:29PM

I agree. Couchbase is lying about its performance. Advanced features are only available in the enterprise version.

·
Reply
Flaviu Radulescu
Flaviu Radulescu
·
March 2nd 2021 at 5:04PM

I agree with you on most of the points, and I can add that as a paid customer (enterprise) the support is very bad. I am getting better support on the forum/community than the paid one through support. But regarding performance, I don't agree. I have been able to achieve 1.6M operations per second on 3 servers and a DB of 22 TB.

·
Reply
Youssef El maqiss
Youssef El maqiss
·
November 14th 2020 at 1:18PM

i agree with you

·
Reply
Prasanth Vaaheeswaran
Prasanth Vaaheeswaran
·
November 13th 2020 at 4:37PM

Couldn't agree more -- similar experience with Couchbase and their technical team. Their answers almost always were around buying more.

·
Reply
Gabriel Pa
Gabriel Pa
·
November 16th 2020 at 9:51AM

It's great to see I'm not the only one

·
Reply
CEO at NaoLogic Inc·

We switched to Traefik so we can use the REST API to dynamically configure subdomains and have the ability to redirect between multiple servers.

We still use nginx with a docker-compose to expose the traffic from our APIs and TCP microservices, but for managing routing to the internet Traefik does a much better job

The biggest win for naologic was the ability to set dynamic configurations without having to restart the server

READ MORE
Naologic (blog.naologic.com)
12 upvotes·3 comments·1.4M views
Jerry Koerkenmeier
Jerry Koerkenmeier
·
March 16th 2020 at 6:19PM

Gabriel - are you using a service mesh like Maesh (from Containous which develops TraefikEE), Istio, or NGINX as service mesh? I agree Traefik is fantastic for routing and growing quickly. But wouldn't a service mesh assist with making the microservices and APIs discoverable and have better traffic control? Or is that how you have NGINX set up fronting your services?

·
Reply
Patricia Dugan
Patricia Dugan
·
March 5th 2021 at 11:01PM

Hello, Jerry. Here's the case study we did with Naologic. Perhaps it'll be useful for you. https://traefik.io/blog/naologic-surpasses-scaling-demands-of-microservice-infrastructure-by-using-traefik/

·
Reply
Gabriel Pa
Gabriel Pa
·
March 6th 2021 at 10:03AM

We're adding Maesh in our next major version upgrade, yes. We handle service discovery via K8S API

·
Reply
CEO at NaoLogic Inc·

We implemented our first large scale EPR application from naologic.com using CouchDB .

Very fast, replication works great, doesn't consume much RAM, queries are blazing fast but we found a problem: the queries were very hard to write, it took a long time to figure out the API, we had to go and write our own @nodejs library to make it work properly.

It lost most of its support. Since then, we migrated to Couchbase and the learning curve was steep but all worth it. Memcached indexing out of the box, full text search works great.

READ MORE
Naologic: Increase revenue through better collaboration between employees, vendors and remote teams (naologic.com)
10 upvotes·453.7K views
CEO at NaoLogic Inc·
Shared insights
on
OAuth.ioOAuth.ioFirebaseFirebase
at

Created our own OAuth.io UTH service and migrated away from Google Firebase Authentication. It caused us a lot of problems. We had false positives, slow speeds when sharing tokens between applications and deleting a user fails and returns void so you have to recheck to see if the save was successful or not

READ MORE
6 upvotes·106.5K views
CEO at NaoLogic Inc·
Recommends
on
RxDBRxDB
at

If you want to use Pouchdb might as well use RxDB which is an observables wrapper for Pouch but much more comfortable to use. Realm is awesome but Pouchdb and RxDB give you more control. You can use Couchbase (recommended) or CouchDB to enable 2-way sync

READ MORE
4 upvotes·242.7K views
CEO at NaoLogic Inc·
Recommends
on
TraefikTraefik
at

I'd recommend using Traefik. I used it both in Kubernetes and on simple EC2 servers. If you need help with the configs let me know

READ MORE
4 upvotes·5.7K views
CEO at NaoLogic Inc·

We offer our customer HIPAA compliant storage. After analyzing the market, we decided to go with Google Storage. The Nodejs API is ok, still not ES6 and can be very confusing to use. For each new customer, we created a different bucket so they can have individual data and not have to worry about data loss. After 1000+ customers we started seeing many problems with the creation of new buckets, with saving or retrieving a new file. Many false positive: the Promise returned ok, but in reality, it failed.

That's why we switched to S3 that just works.

READ MORE
2 upvotes·300.7K views
CEO at NaoLogic Inc·
Recommends
on
KubernetesKubernetes
at

If you are just starting out, might as well learn Kubernetes There's a lot of tools that come with Kube that make it easier to use and most importantly: you become cloud-agnostic. We use Ansible because it's a lot simpler than Chef or Puppet and if you use Docker Compose for your deployments you can re-use them with Kubernetes later when you migrate

READ MORE
Naologic (blog.naologic.com)
2 upvotes·292.3K views
CEO at NaoLogic Inc·
Shared insights
on
NestJSNestJSNode.jsNode.js
at

We started using NestJS even more and replaced our Node.js IPC for microservices with the native decorator of NestJS . It's more stable, you don't have to worry about connection status and .toPromise() works great. Same for

READ MORE
2 upvotes·157.2K views
CEO at NaoLogic Inc·

Stripe is awesome and works great for subscription models but there's a problem: If you want to make money, you need to have multiple payment gateways. That's why we choose Chargebee .

We can integrate with Adyen or SagePay for EU customers without needing to create a new integration

READ MORE
1 upvote·103.1K views