Stuff The Internet Says On Scalability For February 10, 2012

HighScalability Tested, Mother Approved:

  • 12,233TPS: Twitter @ Super Bowl; 11 Million Slices: Dominos @ Super Bowl; 500K requests per second: S3;
  • The great mobile money drain. Mobile: high resource costs, low revenue. Mobile traffic on Plenty of Fish is growing at 3% a month, rising to 3 Billion pageviews a month, 40% of signups are mobile, and all traffic will soon be 60-70% mobile. The problem: how do you make money on mobile?
  • Time to chuck microprocessors for a networks of cells? How Networks of Biological Cells Solve Distributed Computing Problems: Computer scientists prove that networks of cells can compute as efficiently as networks of computers linked via the internet. We believe that there is a need for a network model, where nodes are by design below the computation and communication capabilities of Turing machines.
  • Unrelated? GDrive at last and S3 Drops Storage Pricing.
  • If you are StackOverflow and your data is overflowing, what do you do? Move it to its own hardware, add memory, add cores, add SSDs. Good discussions in the comments and on Reddit.
  • A spam fighter at Facebook. Interesting to see how the attack strategies change over time. Facebook battles: drive-by download, fake accounts, social engineering (self-XSS), and malicious browser extensions. They constantly monitor for negative events like friend requests being declined, messages reported as spam, etc.
  • RockMelt shows how they model time series data using Cassandra. Using a RDBMS would work but would run into scalability problems as the data piles up. The secret is creating a schema using column families. There are several options discussed, the went with: classifying our time series data into Hourly, Daily, and Monthly buckets gives sub-second response times.
  • Ilya Katsov from GridDynamic has a great new blog called Highly Scalable,  where he goes indepth, with lots of diagrams, on scalability topics. You may like: MapReduce Patterns, Algorithms, and Use Cases, Implementation of MVCC Transactions for Key-Value Stores, Performance of Priority Queue Sorting with Pagination, Ultimate Sets and Maps for Java, Part II, and Tricks with Direct Memory Access in Java.
  • Nginx vs Apache. Andrey Alexeev  says "[Developers] want to switch to a different architecture in regards to integration with the applications; that is, switch from mod_php or mod_perl with Apache to php-fpm or fastcgi/perl with Nginx. There are several reasons why it might be a good idea to switch — ranging from a better utilization of hardware resources (and a better performance) to something like improved security and making the entire configuration more flexible."
  • Determining response times with tcprstat: Tcprstat is a free, open-source TCP analysis tool that watches network traffic and computes the delay between requests and responses.
  • Fast Enough VMs in Fast Enough Time. Laurence Tratt with an epic post on the little known speciality of tracing JIT internals. On Hacker News.
  • The NoSQL movement - How to think about choosing a database. A rich analysis of the selection process by Mike Loukides: For years, the relational default has kept developers from understanding their real back-end requirements. The NoSQL movement has given us the opportunity to explore what we really require from our databases, and to find out what we already knew: there is no one-size-fits-all solution.
  • Foursquare has created Java heap analyzer that's fast enough to execute at runtime: HeapAudit – JVM Memory Profiler for the Real World. Superb explanation of the various memory problems that are common to complex long running java apps. They found they were allocating too much memory too frequently and it's difficult to track down problems using traditional tools with Scala.
  • Wedoist chose AWS over Rackspace because: better geographical reach which means better performance, better service selection (RDS, SES, DynamoDB, etc). Dedicated hosting wasn't an option, even though it's much cheaper, because they want to focus on developing software, they want geographical reach, and they to easily scale.
  • In Programming without a call stack? Cristian Posta reviews the paper Programming Without a Call Stack –  Event-driven Architectures by Gregor Hohpe. IMHO event handlers can create arbitrarily deep call graphs, so we aren't really free of the call stack. Also, A Solution to CPU-intensive Tasks in IO Loops
  • SSTable (Sorted String Table) and Log Structured Storage: LevelDB. Ilya Grigorik with a wonderfully detail explanation of SSTable, a key data structure behind BigTable, that efficiently stores large numbers of key-value pairs while optimizing for high throughput, sequential read/write workloads. Key ideas: data is stored in a sorted blob of key-value pairs with a key-offset index; writes go to RAM; in-memory data structures are flushed to disk; indexes to SSTables are kept in RAM. Writes are always fast and a read at works takes disk seek. Also, Leveled Compaction in Apache Cassandra, Why are the writes of Cassandra executed faster than MySQL's?
  • On why Amazon uses a tiered pricing structure rather than a continuous structure: They specifically want to economically encourage bringing the house with you to get the cheapest rate (total commitment); or encourage building a larger house than you might otherwise have. A continuous function of price reduction per unit, rewards everyone as they go; Amazon very specifically doesn't want to do that (users gain benefit at every step, and are rewarded just for being at any given metric, encouraging no particular scale or usage). The price points are supposed to be mental carrots, in other words. It can of course be debated which approach is better, but I have to suspect Amazon has a lot of data on scaling and pricing from retail behavior.
  • Caching and tuning fun for high scalability. Great slide deck by Wim Godden: Caching has been a ’hot’ topic for a few years. But caching takes more than merely taking data and putting it in a cache : the right caching techniques can improve performance and reduce IO.
  • The AppScale TaskQueue Implementation with RabbitMQ. One of Google App Engine's most intersting features is their Task Queue implementation. This article talks about using RabbitMQ to make a similarly functional system using Nginx and HAProxy.
  • Is Pushing the CAP: Strategies for Consistency and Availability any good? I wouldn't know, it's hiding behind a pay wall. Bad form. Tear down these walls!