Pingcap is loosing hundreds and thousands of potential customers and millions of dollars by not having a single-binary product. The current setup is over-complicated and confusing and I would not touch it with a 10ft pole, as they say. That's why it's worth rewriting the app from mysql syntax to postgre syntax and use cockroachdb more than spending dev, ops, cloud* hours on making legacy code work with this thing. But they'll never learn. It's not like this thing came out just yesterday. I have been keeping my eye on this since it came out and I think it is maybe even superior product to cdb and possibly the best in the category, but again, i am getting head-ache just looking at the setup docs.
First, it’s true that the current setup/deployment of TiDB is not easy. This is something that we're making serious moves to improve. For example,
A. We provide Ansible playbooks to simplify the deployment and rolling upgrade for on-prem users;
B. We built and open-sourced TiDB Operator (https://github.com/pingcap/tidb-operator) to enable TiDB on Kubernetes. We are working on a fully managed service in the public cloud (coming soon). Whether it is one binary or multiple binaries, it’ll be all transparent at the user level;
C. We are improving the default or self-adaptative parameters and are continuously refining the configuration process;
D. We are also trying to reduce the number of components. For example, the new version of CDC is implemented directly inside TiKV.
E. We are developing TiOps tools in a single binary to improve the operating and maintaining experience of the cluster. A fair amount of customers around the world are using TiDB in their production environments and we are making sure they get our help when needed in the setup so it would not be a deal-breaker.
Second, TiDB’s multiple-component or highly-layered architecture is challenging for deployment but the benefits are also obvious:
A. The separation of the storage and computing layers makes it flexible and agile to scale/upgrade each layer as needed. Different layers need different types or different number of hardware resources. If the computing resources become the bottleneck, users can scale the SQL layer by adding more TiDB instances in real-time; if the bottleneck is the storage layer, they can easily add more TiKV instances to increase the storage capacity.
B. As is known to many that we have donated TiKV to CNCF last year. We are fully committed to the open-source community and would like to see TiKV be the building block and foundation of the next-generation infrastructure. For example, we are happy to see some community users sit Redis on top of TiKV, and we ourselves built the TiSpark (https://github.com/pingcap/tispark) connector to run Apache Spark on TiKV.
For more thoughts about this, please take a look at my blog: https://pingcap.com/blog/9-whys-to-ask-when-evaluating-a-dis...
Feel free to give more feedback on https://github.com/pingcap/tidb and our community Slack channel https://pingcap.com/tidbslack. We're glad to discuss more with you on this issue!