May 28, 2013
Shopzilla allows customers to easily find, compare, and buy anything on the web. They reach over 40 million customers each month, connecting them to 100 million products from tens of thousands of retailers. Riak powers both their Keyword and Scrapbook Data Services.
Previously, Shopzilla was using large installations of RDBMS as their primary data platform. This worked well for some use cases – however, it had unnecessary features and was expensive for some services, especially read-heavy use cases with large datasets. For these use cases, they wanted an open source solution that offered deployment on commodity hardware and support for high read and write throughput. With downtime having a direct impact on revenue, availability was a critical factor. Riak was evaluated alongside MongoDB, Redis, and HBase. Ultimately Riak not only fit all of their criteria, but also offered ease of management and operations, allowing their development team to focus on other areas of the business.
Shopzilla uses Riak to store data for its Keyword and Scrapbook Services. The Keyword Service serves metadata about primary keywords and requires real-time access. It stores over 1 billion keywords and can process tens of millions of new keywords at a time. They migrated this service over to a six-node Riak cluster that uses Varnish for caching. Riak is accessed via protocol buffers for high performance and uses the LevelDB backend, best suited to implementations with a very large number of keys. Under moderate load, they see 95% of traffic requests come in under 10 milliseconds.
The Scrapbook Service allows Shopzilla to aggregate product information from different web sources to add supplemental details on their product pages. This means they potentially need to store data equivalent to the scale of their product inventory. Since this product information is accessed via Product ID, it was a perfect fit for Riak’s key/value data model. To provide familiar ad-hoc SQL querying capabilities, they worked with their content team to aggregate and stage this data in an Oracle schema before bringing it into Riak. This allowed them to design a schema based on their needs that would not affect the speed in which Riak serves this data. Most of their online requests are served in well under 5 milliseconds.
Riak has been in production at Shopzilla for over a year now. According to Will Gage, Principal Software Architect at Shopzilla, “I haven’t had to worry about Riak since implementation because we haven’t had any significant problems with it. We’re confident we made the right choice with Riak. It works as it’s supposed to and its stability is great. We’ve watched it work through real-life network partitions under load and recover quickly with no intervention. In short, Riak lets us focus on things other than the database.”
May 22, 2013
Basho recently held its second distributed systems conference, RICON East in New York City. Months of preparation led to two days of concentrated learning, with community members from academia and industry sharing where we’ve been and where we’re going.
By design, many of the presentations had little direct relationship to Riak: RICON is a marketplace for ideas, not for product. However, two of the speakers tackled topics I discussed recently in my blog series on the subtleties of Riak configuration.
This is a follow-up to that series to examine those talks. I won’t repeat earlier content in any significant detail.
Rich Hickey, Using Datomic with Riak
Datomic is a very different take on databases, more akin to a version control system than a traditional RDBMS. In Datomic, records (“facts”) are never changed, but rather can be replaced as needed.
The notion of immutable facts leads to a conceptually simple distributed model that allows for transactions: a view into the database is simply a checkpoint of the facts. It’s always possible that a client may be reading an old checkpoint, but the facts at that checkpoint will be consistent regardless of what further updates have been applied.
Riak is one of several backends that can be used with Datomic.
How Datomic queries Riak
Because Datomic keeps a record of all keys in the system, and because the values for those keys never change, reads can be expedited by setting
However, as you’ll recall,
R=1 has an important complication: if the first vnode to respond does not have a copy of that key (perhaps there’s a sloppy quorum in play due to a node failure) the request will “successfully” complete with a
This default behavior can be changed by setting
notfound_ok=false so that the coordinating node will await an actual value before reporting it back to the client, and in fact this is how Datomic operates.
Kyle Kingsbury, Call Me Maybe: Carly Rae Jepsen and the Perils of Network Partitions
Kyle conducted extensive testing of various distributed databases in the face of network partition. Specifically, he wanted to see whether writes were successful (and properly retained) during and after the partition.
His testing of Riak with
allow_mult=false (the default) revealed 91% of writes were lost after the partition healed.
Riak is, however, the only database that retained 100% of writes during a partition, but only when
allow_mult was set to
true in order to allow sibling resolution on the client side after the partition.
allow_mult=true, there is no way (currently) for Riak to resolve conflicting writes other than to accept the last value written.
Important: Riak would also do a perfectly good job of preserving all writes under the Datomic model of creating immutable key/value pairs. It may seem like all databases should handle that scenario properly, but in fact some will throw away all writes on one side of the partition.
Kyle emphasizes what I mentioned in part 1 of this series: if you can’t create immutable objects, and don’t want to handle conflict resolution via the client, CRDTs will allow for automatic resolution in the future, so long as you can make your data fit that model.
Kyle has expanded his talk into a blog series.
Basho will be hosting two more RICON conferences this year, in San Francisco and London. As was true in New York City in May and San Francisco last fall, the talks will be streamed live over the Internet and would be well worth your time.
However, speaking from personal experience, the talks are just a portion of the overall value offered by RICON. It is difficult to convey the atmosphere during and between sessions, but even the afterparty was replete with technical discussions.
If you’ve not experienced it, you can browse the #riconeast tag at Twitter for a feel for the reactions of those present (and those not) to the RICON experience, and please consider joining us next time.
RICON East videos should be available soon; the album of RICON 2012 videos is recommended.
May 21, 2013
Last week at Google I/O, Google’s popular developer conference, Tyler Hannan of Basho was invited to speak on a panel entitled, “Distributed Databases Panel: An Exploration of Approaches and Best Practices.”
During this talk, Tyler and other panelists discussed how modern distributed databases provide high availability, scalability, and fault-tolerance to protect critical data across all industries. In addition to Tyler, this talk featured Julia Ferraioli (Google Compute Engine), Brian Dorsey (Google Developer Relations), Chris Ramsdale (Google Cloud Platform), Mike Miller (Cloudant), and Will Shulman (MongoLab).
You can watch the entire talk below:
May 16, 2013
EklaBlog is a popular, easy-to-use blogging platform based out of Nantes, France. They host hundreds of thousands of blogs and see over eight million unique visitors each month. They use Riak to store and serve all of their static files, including images, music and documents.
EklaBlog is a relatively young tech company that started their business alongside other innovative startups at Company Campus, a popular coworking space in France. It wasn’t long before they began to see significant growth in the amount of data hosted on their platform. Like many startups, they began with a single server, instead of a single server with a backup. As they grew, access exceeded the bandwidth available and performance problems began to surface. With more and more users depending on the platform, it became clear their existing infrastructure would be a bottleneck for growth and present availability and performance problems.
EklaBlog needed a solution that would never lose data, scale quickly at low operational cost, and provide an easy-to-use HTTP interface. They also needed to serve files both quickly and predictably, with a consistent low latency profile. All of these attributes were critical to the consumer experience of their platform. After evaluating other solutions, including GlusterFS, MogileFS, and classic file storage, they selected Riak as their primary data store.
“We thoroughly evaluated a number of different solutions before selecting Riak,” said Godefroy de Compreignac, CEO at EklaBlog. “Now we are absolutely convinced that Riak is the most reliable and cost-efficient solution for us. It’s the perfect fit for our needs.”
They launched with Riak in the beginning of 2013 and quickly scaled their cluster up from four to five nodes, each with 1.8TB of usable storage. They use Bitcask, Riak’s default low-level storage backend. Bitcask’s write-once, append-only nature enables very high throughput and low latency. Eklablog currently stores 5.8TB of data in Riak. They add about 15GB of new data each day, serving hundreds of queries per second.
For Eklablog, Riak’s key/value data model provides a simple structure that’s well suited to serving large volumes of image, music, and document files. Eklablog provides three specific platforms, and uses a Riak bucket for each. Files are stored with a unique key generated via a hash function.
May 6, 2013
The free Riak AMI available on the AWS Marketplace has been updated to the latest version, Riak 1.3.1.
In Riak 1.3, we introduced:
- Active Anti-Entropy
- Updates to Riak Control
- Expanded IPv6 support
- Improved MapReduce
- Simplified Log Management
Riak 1.3.1 includes all these features with some additional changes enumerated in the release notes.
For those of you currently using Riak on AWS, or interested in testing Riak on AWS, the AMI makes installation and configuration much easier. We see open source and Riak Enterprise users leverage AWS both as their primary infrastructure and to support hybrid implementations.
Installation instructions for the AMI are available on in our docs.
May 1, 2013
On May 15 & 16, immediately following Basho’s Distributed Systems conference RICON East, Basho will be hosting Riak Training in New York. The cost to attend is $400. In addition, a 50% discount is extended to those holding a conference pass to RICON East.
If you’re interested in attending, tickets can be purchased at the Riak Training in New York page. Seats are limited. If you have any questions, you can reach out to firstname.lastname@example.org.
Riak training is a two day, hands-on, in-depth look at Riak. It is designed for engineers, developers, and operations staff to learn how to run, operate, and build apps with Riak. During this training, participants will learn how to:
- Set up a small Riak cluster
- Query the cluster using basic Key/Value, Links, 2i, and Map/Reduce
- Understand deployment and performance considerations
- Evaluate application Access Patterns
- Consider data modeling implications in a distributed system
This training will also go over a number of topics, including:
- Introduction to Riak
- Basic Querying
- Riak Under-the-Hood
- Deployment Considerations
- Performance Tuning
- Application Development
- Data Modeling
- Distributed Systems Engineering
In addition we are offering Riak training in San Francisco from May 20-21. Tickets for the San Francisco training can be purchased on the Riak Training in San Francisco page.
SoftLayer & Basho Partner for High-Performance, Scalable Riak In The Cloud
Turnkey Big Data Environments Available Across SoftLayer’s Global Infrastructure
Dallas, TX and Cambridge, MA — April 30, 2013 — Basho and SoftLayer Technologies today announced the availability of Riak and Riak Enterprise on SoftLayer’s global cloud platform. The integrated solution provides the availability, fault tolerance, operational simplicity, and scalability of Riak combined with the flexibility, performance, and agility of SoftLayer’s on-demand infrastructure.
SoftLayer and Basho have collaborated to make Riak—an open source, distributed database—deployment more accessible and flexible through a pay-as-you-go service model. The solution enables organizations to swiftly deploy scalable production-grade systems, accelerating the speed of deployment of big data applications and providing greater business agility. Organizations can design and deploy a complete solution set through SoftLayer’s Web-based Solution Designer, with ongoing management and provisioning available via the company’s portal, mobile apps and API.
Common use cases for Riak include fault-tolerant, low-latency storage for content, user and session information, mobile data, log files, JSON/XML documents, and more. For customers that require replication of clusters between multiple data centers, Riak Enterprise is available and also adds extended monitoring and 24×7 support. Customers use multi-datacenter replication, in two or more sites, to serve global traffic, maintain active backups, run secondary analytics clusters, or meet disaster recovery and regulatory compliance requirements.
“Customer demand for easy-to-deploy and manage big data cloud-based solutions continues to rise,” says Duke Skarda, CTO of SoftLayer. “We are seeing substantial adoption through joint customers, such as Bump. Our platform was built specifically to support the kind of Web-scale distributed applications that big data exemplifies, and our partnership with Basho is further validation of our commitment to deliver a complete suite of scalable, high-performance big data solutions.”
“Basho and SoftLayer have long catered to innovative developers building the next generation of web, social and mobile applications. Today, enterprise customers are demanding the same, an architecture that provides for zero-data loss and delivers zero-downtime,” says Bobby Patrick, executive vice president and CMO of Basho. “We believe distributed systems software, such as Riak, and distributed infrastructure is required to help customers truly achieve these ambitions. Basho is excited to partner with SoftLayer to help companies easily deploy applications that are truly distributed, scalable, and always available.”
Bump is one of the most popular mobile apps on the market today. The app makes it easy for users to share their contact information, photos, and other objects by simply “bumping” their smartphones. Bump uses Riak to store user data including events, communications sent and received, handset information and authentication tokens.
“Operational ease is key to our business success,” says Mark Smith, Operations Lead at Bump. “The combination of SoftLayer, who we already trust with our business and data, and Basho, who makes the database that we trust at scale, saves us time and effort and allows us to focus on our business, not our data infrastructure.”
Features & Benefits
- Web-based SoftLayer Solution Designer makes it easy to configure and deploy Riak environments on demand and at the click of a button.
- High performance and superior availability and scalability leveraging the broadest cloud infrastructure platform in the industry including dedicated bare metal servers and a broad range of storage options.
- Global private network allows for high-speed, secure replication between clusters
Optimized infrastructure and best-practice deployments based on joint insights, expertise, and experience from SoftLayer and Basho.
- Pay-as-you-go model provides the flexibility of monthly or annual billing and no long-term contracts.
April 30, 2013
Today we are pleased to announce the availability of Riak and Riak Enterprise on SoftLayer’s global cloud platform. Users can now easily configure and deploy Riak environments on the SoftLayer platform with a flexible, pay-as-you-go service model. The solution makes it easy for organizations to quickly deploy scalable production-grade Riak systems on-demand. The partnership accelerates the speed of developing and launching applications with Riak, provides ease of operations with scale, and enables global multi-datacenter replication.
Features of the joint offering include:
- Web-based tool to configure and deploy Riak on demand and at the click of a button
- Pay-as-you-go model providing the flexibility of monthly or annual billing and no long-term contracts
- Rapid deployment on dedicated, bare-metal servers for optimum performance
With the Riak Enterprise offering on SoftLayer, users can replicate data stored in Riak across SoftLayer’s global infrastructure. This multi-datacenter replication capability provides data locality, disaster recovery, global load balancing, and active backups. SoftLayer’s global private network allows for high-speed, secure replication between clusters.
The integrated solution provides the availability, fault tolerance, operational simplicity, and scalability of Riak combined with the flexibility, performance, and agility of SoftLayer’s on-demand infrastructure.
Bump is one of the most popular mobile apps on the market today, and is already using Riak on the SoftLayer platform. “Operational ease is key to our business success,” says Mark Smith, Operations Lead at Bump. “The combination of SoftLayer, who we already trust with our business and data, and Basho, who makes the database that we trust at scale, saves us time and effort and allows us to focus on our business, not our data infrastructure.”
SoftLayer is also sponsoring the RICON East 2013 after party. On night one of the conference, we’re renting out Hudson Terrace for a one-of-a-kind party. SoftLayer and Basho are furnishing drinks, food, and entertainment. All RICON attendees are automatically registered for the party…but, as of today, the party is open to anyone who wants to register.
April 25, 2013
Qeep is a global social network, with more than 19 million registered users sending nearly five million messages each day. Qeep allows you to play games, chat with friends, send pictures, and more. They use Riak to store all user chat messages.
Qeep was founded in 2006. As they started to grow, they realized their single-instance relational database was not going to work for them anymore. Sharding was becoming a significant operational burden and high latency was preventing quick access to the users’ messages. Qeep needed a new solution that could better handle their significant growth.
They started evaluating a number of different NoSQL solutions. With over one billion keys to store and no complex querying requirements, a key/value store would provide straightforward access to user data. Ultimately, Qeep selected Riak due to its high availability, ease of scale, and predictable operational cost. Once chosen, they quickly migrated over 1.8 billion entries of legacy data from their previous relational database installation over to Riak.
Currently, Qeep uses Riak to store all user chat messages. These messages are stored as JSON objects and are accessed using the open source Riak Java Client, offering high performance access for fetching this data. Qeep uses additional structs to model aggregation of data like inbox, outbox and chats between two users. Qeep has made some changes to the Java client to meet their unique caching needs, which can be reviewed on Github.
Qeep has a 12-node cluster with 48GB of RAM per node, connected via a 1GB network. Qeep uses Riak’s LevelDB backend, which is ideal for deployments with a very large number of keys.
“We love the simplicity of administration and scaling that Riak offers,” said Ingo Rockel, Engineer at Blue Lion Mobile, “We have seen huge performance gains since switching to Riak, which has been the biggest plus for us, and has been the basis for planning future feature releases.”
April 24, 2013
Will Gage of Shopzilla presented last week on their production Riak usage at the Santa Monica Java Users’ Group. Gage, a member of the Consumer Site Engineering team, shared details on how they built various user-facing services on Riak, why it was the right tool for the job, and when you might want to use it in production. Will’s talk starts at the 49 minute mark in the video embedded below, and it’s well worth your time. In addition to offering details on data modeling for their specific use cases, he also talks about service latencies for their production applications and how the Riak community played an important role in their decision.
Mark Phillips, Basho’s Director of Technical Evangelism, also presented. His talk starts at approximately the 1:20:00 point and is entitled Riak and the Power of Distributed Systems. An excellent complement to Will’s talk, this covers Riak’s architecture at a high level, how to access it as a developer, and then ends with a few use case discussions.
If you’re interested in more talks on Riak in production and the future of Riak, make sure to grab a ticket for RICON East, happening May 13-14 in New York City. This will be two days of talks, parties, and hacking dedicated to Riak, developers, and the future of distributed systems in production.