Survey Monkey speeded up with Python
SurveyMonkey is the world's largest survey company, with over 1 million survey responses every day on its website. The company has built tools based on over 10 years of experience in survey methodology and web development. Following an acquisition in 2009 it has grown to over 100 employees throughout the United States and Portugal, with headquarters in Palo Alto, CA.
At the time of the acquisition, the company was running a single monolithic C# .NET web application. While the system was running smoothly, it was slow to add, test, and deploy new features. SurveyMonkey decided to bite the bullet and commit to rewriting the application in Python, breaking core features into separate services. Services communicate via hardened web APIs. This decomposition makes it possible to build features on smaller more easily managed codebases which may be released on independent schedules.
Python was the obvious language of choice. It has a proven and long-standing track record at industry leaders like Google. Even newcomers find Python code easy to read and understand. There is a wealth of libraries for building applications quickly and there are excellent tools for deployment, unit testing, and auto-documentation. And perhaps most importantly, Python is a joy to write; this is an important consideration for attracting and retaining top talent.
Most of our services use the Pyramid web application framework (WSGI) and the Jinja2 template engine. API calls are JSON over HTTP/HTTPS.
The transition to Python from .NET has been a great success. Our Python applications handle heavy traffic without problems. Developers have found it possible to add new features much more quickly than before. New employees get up to speed in a manner of days, and recruiting has become easier. Going forward, SurveyMonkey hopes to give back to the Open Source community with some of our internal tools. And down the road, we will expose Python-backed public APIs to encourage additional growth and novel applications.
Chuck Groom is the Head of Engineering at the Seattle SurveyMonkey office.
Survey Monkey speeded up with Python by The Python Software Foundation – by Chuck Groom, Survey Monkey is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Permissions beyond the scope of this license may be available at http://brochure.getpython.info/.