4 ms·
An obvious question is whether the focus on performance first is correlated with the success of stack overflow. If the same level of succes could have been achi
by urban_winter 5y ago
An obvious question is whether the focus on performance first is correlated with the success of stack overflow. If the same level of succes could have been achieved without squeezing as much performance out of each server then the sacrifice of testability is a dubious one.
The article doesn't explain why horizontal scalability wasn't pursued instead of their approach of performance efficiency (i.e. greater performance from a given amount of resource). It's certainly true that at the time that SO was starting, scaling horizontally required far more handbuilt tooling than it does today but it certainly was already a widely used pattern. The likely reason is cost, but that then comes back to the first question - would SO have been equally successful if it had higher infrastructure costs in its early days?
The persuit of efficient performance at the cost of aspects of quality (of which testability is only one) can only be justified if efficient performance is truly necessary for success. A much smarter person than me warned against premature optimisation. That seems relevant here.
- kjgkjhfkjf 5y agoThey use the Microsoft stack, so they'd have to buy more licenses if they scaled horizontally. Yes, it raised quite a few eyebrows when they announced this decision.
- tomnipotent 5y ago> it raised quite a few eyebrows No it didn't, except for people that seem to raise eyebrows regardless of what they read.
- simonjgreen 5y agoIf you understand Microsoft licensing well you'll know it also costs to scale vertically. Depending on your license procurement model (SPLA, Retail, OEM, OVA) you are usually paying for server software on a per-cores basis. Some products (included most mentioned) have a scale tipping point where they become more flexible (DC licensing).
- sofixa 5y agoPer core is recent, it was per socket until ~2019.
- mrweasel 5y agoI don't really get why people are so focused on the lack of horizontal scaling. They already have 11 IIS servers, that seem like horizontal scaling. As for the databases: People underestimate modern database servers and a well designed database layout. What would you even replace it with, that doesn't complicate the setup? I like SO approach, maximum utilization of the hardware and don't try to be fancy, if you don't have to. Less hardware to manage, it's easier to find people who can quickly be on-boarded to the team, easier to debug.
- ehaliewicz2 5y agoThat warning about "premature optimization" was about optimizing the wrong things that provide no benefit, not a warning about optimizing in general.
- marcos100 5y agoFor those who only read the quote "premature optimization is the root of all evil", here's the context: "Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their programs, and these attempts at efficiency actually have a strong negative impact when debugging and maintenance are considered. We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%." From some readings of Knuth, I have a feeling that he always think about efficient code.
- disgruntledphd2 5y agoHe definitely does. For an example, look at fascile 1 for Volume 1 of TAOCP (his new, improved assembly language for the books). https://www-cs-faculty.stanford.edu/~knuth/mmix.html https://www-cs-faculty.stanford.edu/~knuth/mmix.html He talks about measuring costs in this ASM, and he mentions that it's both cpu and mems that he measures, which is something I'd never seen before in algorithmic analysis (but which of course makes perfect sense given the large discrepancies in speed between them).