Scaling at Twitter with Drupal & Thrift
ATTENTION: You must signup in advance to attend this workshop. You will need to have a valid SXSW badge, and an activated SXsocial account. To reserve your seat, please go here: https://sup.sxsw.com/schedule/IAP26451
In this workshop, presented by Twitter's Gazebo team, participants will learn:
1. Why Twitter chose Drupal and how they use it
2. Apache Thrift and the advantages of using it
3. How to use Thrift to connect Drupal to a remote service
By the end of this workshop, participants will have created a Drupal app that uses Thrift to connect to remote service.
Twitter relies on its websites to help it reach every person on the planet. At this scale, Twitter needs a standard way to build, maintain, and operate these websites. The “Gazebo” was introduced as a shared platform and now powers about.twitter.com, engineering.twitter.com, business.twitter.com, and more.
A publishing tool and CMS for non-engineers, this Drupal-based platform allows Twitter to scale consistently across all its sites, leverage existing internal services, and maintain the required level of security.
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between various languages. It is used at Twitter to provide interfaces for internal services to allow teams to easily connect and exchange data within our existing platform.
Thrift can seem difficult to setup and implement when compared to alternatives like REST, but there are a number of advantages. Because Thrift generates both client and server interfaces, the result is more consistency and safety with regard to data types and exception handling. In addition to HTTP, Thrift supports other protocols allowing services with large volumes of data to be routed more appropriately.
Participants will create new Drupal modules using the Form API and thrift module to capture form values and send those values to a remote service. These new modules will be used to illustrate transmitting data via Thrift and storing values in a remote key/value store instead of MySQL.
We will discuss how using a key/value store is more efficient and scalable than a standard relational database. Furthermore, we will show the flexibility that Thrift’s abstraction provides and how it applies to other systems including: user authentication, file systems, email services, etc. Time permitting, we will create an additional module that implements sending messages through Thrift when the form is submitted.
- Proficiency in PHP and Drupal development
- Solid understanding of full LAMP stack
What to Bring:
- A standard Drupal 7 installation (https://drupal.org/download) configured on top of a LAMP (or WAMP) environment
- Drush (https://github.com/drush-ops/drush) set up and configured to be in the user's path
For example, you should be able to:
$ cd sites/default
$ drush dl token