I try to keep this blog targeted and on topic. So even though I may be thankful for the song of the tinniest sparrow at sunrise, I'll save you from all that. It's hard to tie scalability and the giving of thanks together, especially as it sometimes occurs to me that this blog may be a self-indulgent waste of time. But I think I found a sentiment in A New THEORY of AWESOMENESS and MIRACLES by James Bridle that manages to marry the topic of this blog and giving thanks meaningfully together:
I distrust commercial definitions of innovation, and particularly of awesomeness. It’s an overused term. When I think of awesomeness, I want something awe-inspiring, vast and mind-expanding.
So I started thinking about things that I think are awesome, or miraculous, and for me, it kept coming back to scale and complexity.
We’re not actually very good about thinking about scale and complexity in real terms, so we have to use metaphors and examples. Douglas Adams writes somewhere about how big the Hitchhiker’s Guide to the Galaxy actually is—imagine a sheet of paper, then a filing cabinet full of sheets of paper, then a room full of filing cabinets, then a skyscraper full of rooms, then a city full of skyscrapers, a country, a planet, a solar system and so on. I couldn’t find the exact quote, so his thoughts on space will have to do:
Just wonderful. I especially love the quote So I started thinking about things that I think are awesome, or miraculous, and for me, it kept coming back to scale and complexity. This perfectly sums up why the topic of scalability is so endlessly diverting. It can take you anywhere you want to go and everything eventually ends up back again.
Thanks for reading and...
- Eventual Consistency by Example by Sergio Bossa. Attempts to clear up some misconceptions about eventual consitency as discussed in Amazon's Dynamo paper.
- Boston Big Data Summit keynote outline by Curt Monash. Interesting topics: Big Data and the cloud actually have relatively little to do with each other and The NoSQL movement is a lot like the Ron Paul campaign.
- I think RDBMS has set the industry back by 10 years by Henry G. Baker, Ph.D, from 1992. I can categorically state that relational databases set the commercial data processing industry back at least ten yearsand wasted many of the billions of dollars that were spent on data processing. Henry thought OO databases would change things. They didn't. The question is why?
- Intel cloud service tests the scalability of your code. Intel has a cloud based tool that can test how your application will perform on will on a number of multicore processor configurations -- 1, 2, 4, 8, or 16 hardware threads.
- Mapreduce 1, a lecture by Brian Harvey.
- Gear6 has released a software version of their cache product. Interesting departure from the appliance model. Appliances are good because they allow you complete control and something to hang some margin off of. Yet if you want to sell into the cloud you have to build software components, not a hardware solution. Seems like a good idea for those who want a tricked out memcached solution out of the box.
- Hadoop at Twitter (part 1): Splittable LZO Compression. How Twitter is using Hadoop to analyze a tweasure trove of tweets.
- A funny/insightful/sad/truish Dilbert cartoon on how clouds fit into Dilbert's world.
Contributed by Wolfgang Gentzsch:
Now that we have a new computing paradigm, Cloud Computing, how can Clouds help our data? Replace our internal data vaults as we hoped Grids would? Are Grids dead now that we have Clouds? Despite all the promising developments in the Grid and Cloud computing space, and the avalanche of publications and talks on this subject, many people still seem to be confused about internal data and compute resources, versus Grids versus Clouds, and they are hesitant to take the next step. I think there are a number of issues driving this uncertainty.
read more at: BigDataMatters.com
You don't even have to make a bid, Randy Shoup, an eBay Distinguished Architect, gives this presentation on how eBay scales, for free. Randy has done a fabulous job in this presentation and in other talks listed at the end of this post getting at the heart of the principles behind scalability. It's more about ideas of how things work and fit together than a focusing on a particular technology stack.
In case you weren't sure, eBay is big, with lots of: users, data, features, and change...
- Over 89 million active users worldwide
- 190 million items for sale in 50,000 categories
- Over 8 billion URL requests per day
- Hundreds of new features per quarter
- Roughly 10% of items are listed or ended every day
- In 39 countries and 10 languages
- 70 billion read / write operations / day
- Processes 50TB of new, incremental data per day
- Analyzes 50PB of data per day
Think of building websites as engineering composite materials. A composite material is when two or more materials are combined to create a third material that does something useful that the components couldn't do on their own. Composites like reinforced concrete have revolutionized design and construction. When building websites we usually bring different component materials together, like creating a composite, to get the features we need rather than building a completely new thing from scratch that does everything we want.
This approach has been seen as a hack because it leads to inelegancies like data duplication; great gobs of component glue; consistency issues; and messy operations. But what if the the composite approach is really a strength, not a hack, but a messy part of the world that needs to be embraced rather than belittled?
They key is to see data as a material. Right now we are arguing which is the best single material to build with. Is it NoSQL, relational, massively parallel, graph, in-memory, or something else entirely? It all seems a bit crazy. Each material has both limits and capabilities. What we need to think of building is a composite material that combines the best characteristics of what is available into something better.
Jonathan Ellis reviews in the NoSQL Ecosystem the origin of the NoSQL movement and 10 different NoSQL products and how their 1) support for multiple datacenters, 2) the ability to add new machines to a live cluster transparently to the your applications, 3) Data Model, 4) Query API, 5) Persistence Design. The 10 systems reviewed are: Cassandra, CouchDB, HBase, MongoDB, Neo4J, Redis, Riak, Scalaris, Tokyo Cabinet, Voldemort.
A very thorough and thoughtful article on the entire NoSQL space. It's clear from the article that NoSQL is not monolithic, there is a very wide variety of approaches to not being a relational database.
Queuing work for processing in the background is a time tested scalability strategy. Queuing also happens to be one of those much needed tools where it easy enough to forge for your own that we see a lot of different versions made. Resque is GitHub's take on a job queue and they've used it to process million and millions of jobs so far.
What is Resque?
Redis-backed library for creating background jobs, placing those jobs on multiple queues, and processing them later. Background jobs can be any Ruby class or module that responds to
perform. Your existing classes can easily be converted to background jobs or you can create new classes specifically to do work. Or, you can do both.
GitHub tried and considered many other systems: SQS, Starling, ActiveMessaging, BackgroundJob, DelayedJob, beanstalkd, AMQP, and Kestrel, but found them all wanting in one way are another. The latency for SQS was too high. Others didn't make full use of Ruby. Others still had a lot of overhead. Some didn't have enough features. And still others weren't reliable enough.