3 ms·
>Large internet companies like Amazon, Netflix, and Twitter have shown that single monolithic codebases do not scale to large numbers of users, and crucially la
by dx034 10y ago
>Large internet companies like Amazon, Netflix, and Twitter have shown that single monolithic codebases do not scale to large numbers of users, and crucially large numbers of developers.
How is that true? These companies have shown that you can scale well if you don't have monolithic approaches, but that doesn't mean that you cannot scale if you have one. Just because someone is successful by using approach B doesn't make approach A unsuitable.
Quite the opposite. Some banks handle more than a billion transactions per day on monolithic infrastructure (think of big investment banks with a sizeable amount of trades per day). It's very costly, but it does work reliably.
EDIT: One thing I don't get: Most banks use a central database somewhere because you need to have accounting values that you can rely on (e.g. how much money you have on your account). How do they do that? They must use some synchronization with locking that works across all services which rely on them, but how will that scale well when they get dozens of transactions per second? How do they guarantee the integrity of their data?
- obeattie 10y agoI'm the post's author. The key point I was trying to make was not that monolithic systems cannot handle the throughput, but that they become more and more difficult to extend and maintain as they grow. None of the companies mentioned started out with a microservices architecture – they moved to them (at great expense) when they found development difficult to scale.
- dx034 10y agoThanks for the answer. I'm not against your approach, just curious if it will work. How do you handle synchronization for large numbers of users? Many bank related transactions require some kind of locking (getting account balances, authorizing transfer, ...), doesn't that lead to a high probability of deadlocks at some point?