3 ms·
Yes, it is easier but is also very rarely done, since if you have scaled another 10x you don't care about the previous stage of scaling and have little incentiv
by hobofan 11y ago
Yes, it is easier but is also very rarely done, since if you have scaled another 10x you don't care about the previous stage of scaling and have little incentive to keep the constant factor at that stage low.
I can understand why such systems are built the way they are, but I still find it sad, since it breaks the expectations of open source software, and creates a chasm between startups at the beginning and end of a big scaling phase. It more or less forces you as an early stage startup to use an inferior design which you know won't scale up beyond a certain point, even though know about a superior design that theoretically scales down to your current requirements.
- gaius 11y agoIf you design a system to support 10x your current workload, you are likely to get a well engineered solution that delivers the performance you need at a price you can afford. If and when you reach 10x, you will have a good body of knowledge to help you do the next 10x. That takes you to 100x. Systems that grow that much are exceedingly rare. The odds of your startup being the next Facebook are incredibly low. But this strategy will get you there, one step at a time. If you sit down and try to design a system to support 100000x your current workload, you are likely to end up with an over-engineered and very expensive mess, then by the time you reach 10x you realize you should have done it differently because in practice the bottlenecks aren't where you thought they'd be. This strategy will bankrupt you before you get to even 10x. This is how you tell who has really scaled systems, from those who only wish they had that problem.