Janrain (Portland, OR) was founded in 2004 to solve the
problem of managing the numerous username/password combinations consumers must keep track of in the increasingly online world. It was an early participant in the OpenID protocol project. From that work, its product expanded to help brands manage their online relationships. Today, the Janrain User Management Platform (JUMP) makes it easy for clients to acquire, engage and learn more about their consumers. Janrain has 365,000 customers in all industries across the globe, including top-tier organizations such as Fox, United Nations, Samsung, Bechtel and NPR.
The Problem and Requirements
JUMP has a backend database and an API accessible via HTTP. Janrain began by using Ruby on Rails, with one element of the backend developed in Haskells Snap framework. It wasnt long before the engineers experienced high errors in their Ruby code, while their Haskell work produced lean, error-free code. Programmers saw that Haskell was an excellent approach to add new features easily and securely with clean and lean code.
HaskellWrite Fearlessly, Build Confidently
When working with Haskell, the programmers found that they spent little time debugging and testing their code. They were confident that greater than 75% of their code would be right and that the built-in type system would find whatever errors there were. They could write fearlessly without breaking the code, as theyd found altogether too common with Ruby.
After this initial success, Janrain had the confidence to build its backend database solution entirely in Haskell, taking advantage of its reliable type system and checking functionality. The end result: the highest-quality production code in less time. The modularity and libraries in Haskell facilitated extensive code reuse and parallel development, as well, further enhancing productivity and reliability.
Case Study
Industry/Application Online user management SaaS Problems Started with Ruby on Rails, which: Had high error rates. Caused API to crash. Was fragile, unreliable. Haskell Solution/benefits Low errors, which were found during compiling, not runtime. Much less time testing and debugging. Faster time to market at lower cost. Scale database calls from 1,000s/sec. to 10,000s/sec. Stable, error-free code ensured long- term reliability and maintainability.
We didnt have to worry about breaking our Haskell code. It just runs and runs, no matter how much we add to it or change.
Haskell does exactly what we need it to do every time. --Philip Weaver Sr. Software Engineer
JanrainUser Management System
We didnt have to worry about breaking our Haskell code. It just runs and runs, no matter how much we add to it or change. We try not to touch Ruby very much, out of fear of crashing the API.
--Philip Weaver Sr. Software Engineer
HaskellConcurrency and Scale
Another key requirement was for the backend to support JUMPs multitenant architecture with simultaneous API calls from multiple clients. Haskell ensured that JUMP would run with strong concurrency in their server environment, so that the frontend could send and receive multiple calls from their diverse clientele with ease. As it shifted into production, JUMP was now capable of handling thousands of logins per second, with the expectation that it would support tens of thousands logins per second as the client base grew.
In contrast, Rubys tendency to crash the API limited its use to prototyping the API and performing only simple modifications in the production version.
HaskellMultiple Benefits
In summary, Haskell contributed significantly to Janrains growth. It delivered to Janrain:
Robust, clean prototypes with few errors.
Reduce time spent on testing and debugging significantly.
Deploy changes and new functions simply, error free.
Shorter development cycle led to faster time to market at much lower cost.
Robust solution processing thousands of requests per second scalable to tens of thousands of requests per second.
Stable, error-free code ensures long-term reliability and maintainability.
Copyright 2013, FP Complete Corp. All rights reserved.
Our practical users learned to code in Haskell easily, becoming knowledgeable in under a year and proficient in one to two years. They didnt have to be PhDs in computer science to pick it up and could write error-free code that was much faster and easier to maintain than in Ruby.