Building a Scalable Reserved Seating Ticketing Solution with Redis and Lua

After working in online ticketing for many years, I’ve seen how speed is everything especially during large on-sales where the general public swarms on a site as if it were a DoS attack.  Since the items being sold are unique inventory, the system has to be much more fluid than found in your typical retail store.  Tickets must be locked, reserved or released back into the pool when users reject their seat choice or simply walk away from their browser.  This may seem straightforward but the concurrent nature of ticketing where you have multiple users competing for the same inventory is what can make the system behavior very unpredictable.  Too much latency from the added bloat of things like message buses and ORM libraries will sink a ticketing system quickly which means it must be extremely lean and efficient in order to survive.  Teamed up with a small group of ticketing veterans, our goal was to build Eventbrite’s first reserved seating system to demonstrate the value of keeping things simple for the sake of performance and long term maintainability.

Continue reading

Technical on-boarding, training, and mentoring

Software engineer and Hackbright graduate Nicole Zuckerman took the stage with Kate Heddleston at PyCon this year to talk about how to make junior and new engineers into independent and productive members of your engineering team as quickly as possible. They focused on python specific resources and libraries that will help you create a simple but effective on boarding program, and talk about case studies of companies that have had success using these techniques.

Eventbrite has been onboarding junior engineers out of Hackbright Academy in the past year and has some new techniques we’ve learned to get engineers up to speed quickly.

  1. You don’t need to be an expert in order to help a new engineer out with something – having other relatively new engineers helping your new one get started takes load off the more senior engineers and helps both teacher and student. Student feels like they’re not SO behind, and teachers get a better grasp of the material they’re teaching. This is particularly useful when setting up the dev environment; have the most recent addition to the team assist in dev env setup.
  2. Buddy system – unrelated to teaching, but bringing new engineers on board culturally
  3. Code labs – a hour set aside for new engineers to ask questions about code, and usually lead into topics like Django’s ORM
  4. An environment where it’s OK to ask questions
  5. Short, medium, long term goals – explicit ones- i.e. tracing a web request in Django (short term goal).

Styleguide-Driven Development at Eventbrite: Introduction

We use a living frontend styleguide to document our brand’s visual style and commonly used HTML, CSS, and JavaScript components. This styleguide includes functional examples and sample markup, and acts as an entry point for both product prototyping and development.

This is the first of a series of posts that will explore the evolution of the styleguide since its inception in March 2013, and the ways it has changed our approach to development.

Continue reading

Open Sourcing Dorsal

Dorsal on GitHub

TL;DR, a client-side JavaScript boilerplate automation system.

Dorsal allows you to register your bespoke, artisanal, hand crafted plugins. It will then scour the DOM in search of your plugins and instantiate them. We were inspired by the directives system in Angular and wanted to bring something similar to our frontend stack. Dorsal, is platform agnostic, has no dependencies and is designed to work IE8+.

Seat Designer (part 1): Raphael + Backbone Integration

Fully interactive applications on the web have been a dream for years. A few hundred minor changes and some engineering talent focusing on frontend web in the past 3 years has made the bar much lower for creating these immersive experiences. Here at Eventbrite we pulled out more than a handful of tricks to get seat designer launched. This series of blog posts is our official run down!

Continue reading

Python packaging simplified, for end users & app developers

 

Asheesh covers the practical use of Python packaging tools. You’ll see how to keep your system clean as an end user excited about installing a Python module from the web, the purpose of setup.py, how virtualenv makes life easier (and sometimes harder), what Ubuntu/Debian tools can offer, and how to make a complex app easier for new contributors to run. It is heavy on stories and recommendations.

Our Strategy to Migrate to Django

In 2010, the Eventbrite engineering team began early work on an effort to move to the Django web-framwork. At the time, Eventbrite was built using some in-house frameworks, that a layman might describe as no framework.

We believed that in the long-term, moving to a feature-rich framework with a vibrant community would be a huge help to productivity and hiring. We were right.

In the short-term, some of the immediate benefits of moving to Django were:

  • unit-test framework
  • database model abstraction (Django ORM)
  • request middleware
  • URL routing
  • form building
  • python-based template language and i18n support

Moving from no framework to Django was an obvious choice, but it’s much easier to say than to do. Even in 2010, Eventbrite was powered by hundreds of thousands of Python and template code. Simply re-writing it would mean shutting progress down for months, and even then, the task would be to painstakingly replicate every feature in brand-new Django code. In other words, re-writing this much code is an option, but not one that many startups would make.

Continue reading