Hi everyone, I'd like to discuss the ability to have heterogeneous nodes types in CouchDB 4.
In CouchDB 2 and 3 the nodes in the cluster are usually similar, and functionality is uniformly distributed amongst the nodes. That is all nodes can accept HTTP requests, run replication jobs, build indices etc. They are typically deployed such that they similar hardware requirements. In an FDB-based CouchDB 4, CRUD operations, on the Erlang nodes, wouldn't require as many resources, so it would be possible to have a set of nodes, performing just CRUD operations that are much smaller than the equivalent CouchDB 2 and 3 nodes. However, indexing and replication might still require heavy resource usage. So the proposal is to add configuration to CouchDB 4 to allow some nodes to perform only a subset of their current functionality. For example, it would be possible to have 6 1-CPU nodes with 512MB accepting API requests, and, 2 4-CPU node with 4GB of memory each running replication and indexing jobs only, or any other such combinations. By default, with any extra configuration, the behavior would stay as is today -- all nodes will run all the functionality. I created an RFC exploring how it might look like: https://github.com/apache/couchdb-documentation/pull/457 There is a comment there how it could be implemented. So far it looks like it could be fairly trivial since it would build on the couch_jobs work already in place. What does everyone think? Cheers, -Nick