↓ Ir para o conteúdo principal

← todas as notas

📎 Webclip

Stack Overflow Architecture

Stack Overflow is presented as a case where scale up remains a practical choice. The page says the site uses a Microsoft stack, keeps the web and database tiers separate, and adds larger machines and more memory when it needs more capacity. It also frames the site as a useful example for comparing scale up, scale out, and NoSQL tradeoffs.

Reading notes
#

  • Stack Overflow is described as a two-tier site with direct database access from the web server code.
  • The platform listed includes ASP.NET MVC, SQL Server 2008, Visual Studio 2008 Team Suite, jQuery, LINQ to SQL, and Subversion.
  • The web tier and database tier run on Lenovo ThinkServer machines, with a QNAP NAS used for backups.
  • The site search relies heavily on SQL Server full-text search.
  • The article says the bottleneck is the database most of the time.
  • It argues that buying hardware can be better than renting when you can manage servers yourself.
  • It says memory is cheap and should be maxed out for near-free performance gains.
  • It says CPU speed matters a lot for the database server, with query times improving as clocks rise.
  • It notes that network equipment can become the main cost driver at low server volumes.
  • It recommends separating application and database duties so they can scale independently.
  • It says applications should keep state in the database so they can scale horizontally.
  • It warns that scale up has limited redundancy and that clusters become expensive when machines are already expensive.
  • It says few applications scale linearly with processor count because locks reduce the benefit of big iron.
  • It describes NoSQL as hard because many common database features have to be built manually.
  • It explains that transactions in many NoSQL systems do not span arbitrary boundaries.
  • It raises multitenancy as a harder problem than it first appears, especially for customization and upgrades.
  • It uses Salesforce as an example of a wide, sparse table design for multitenancy.