Microservices are the latest software development craze. All the kids are doing it. When I started hearing about the concept, the first advantage that came to mind was the single responsibility principle. If you take the principle from other aspects of the software engineering principle, it seems to follow than a service - like a class, or library should only do one thing, and do it well. I'll give Microservices that.
However, performance, and scalability were not things that sprang to mind. Without getting in to a huge discussion, there will probably always be cross-talk amongst services which will mean that not only could performance degrade because servers are weighed down with load, but network latency can and probably will degrade performance.
Then, someone told me that they had broken their service up in to 20+ Microservices for the purpose of scalability. This has perplexed me somewhat. I had to probe them by what they meant. Surely, Cloud computing on Azure and so on had solved this problem? When I probed a little further, I was told that a database can not scale up, so no matter how many computers you have in the cluster, the database will always be the bottleneck. The monolith database must be broken down in to smaller chunks for each service. Excuse me? A database can not scale up? Have Microsoft, Amazon, and Google just been lying about their scaling database platforms?
Amazon Relational Database Service
Literally, that's my question. Have Microsoft, Amazon, and Google just been lying about their scaling database platforms? Don't they work? I mean, if these platforms do scale up in the sense that more resources are added with replication and so on, then why would breaking a monolith database up in to smaller chunks make it perform better?
Have you tried out these platforms? Are you running very large databases with lots of tables, rows, columns with thousands of transactions per second? What's the consensus on this? Is there some reason that using these scalable database platforms is not as good as breaking the databases down in to smaller chunks?
For the purpose of this question, assume that sharding can not be used as the primary scaling technique. The database must scale with millions of rows, lots of columns and tables.
PS: This isn't a question of whether or not Microservices are a good idea. The question is very simple. Can a database scale up?