Case Study – Sportlobster & Stream
The No.1 Online Sports Community
Sportlobster is the platform that fuels your passion for sport. It allows you to join the conversation with fellow sports fans, discussing the hot topics around the teams and sports stars that matter to you. Being on Sportlobster keeps you informed with personalised news and live scores and let’s you take on friends or fans from across the world by predicting results on a wide range of sports. The platform was founded in 2013 by Andy Meikle, Arron Shepherd and Nico Cary. Over the past few years Sportlobster has grown to being the number one online sports community. The app is available for Web, Android and iOS.
Sportlobster initially invested in an in-house solution; however, as the company grew, they ran into some limitations at scale:
Andy Raines (Engineer at Sportlobster): “Whilst our in-house solution was working fairly well for the majority of our users, there were some outliers which would cause us to have unpredictable query times which were proving challenging to tune at a SQL level. Due to this we would occasionally see long queries running on our database, as well as providing a poor user experience for the users in question. Beyond that we knew our existing solution would not work for some of the more advanced features we wanted to offer within our product (popularity ranking for example) without some major rework.”
Andy Raines: “We had considered building it ourselves - but after analysis, the developer time required as well as maintaining new technologies we were unfamiliar with was too high a cost. We looked at the market for any possible 3rd party solutions and Stream was a perfect fit. They gave us what we needed as well as some additional benefits we had not even considered. This means we can spend our precious engineering time on other parts of our product.”
Next, we asked Andy how the integration with Stream went.
Andy Raines: “Very good - the support we got from the engineers at Stream was excellent, and the documentation is good. Where we did have questions or problems, we would get answers quickly and the online documentation would be updated shortly afterward to reflect the clarification. We had to implement our own abstraction layer on top of the PHP SDK because we wanted to use Stream with a similar interface as Doctrine, and integrate it as a service within Symfony - if there were already a solution like this out there the implementation would have been trivial, but it was still very straightforward without.”
Sportlobster’s feed shows both recent as well as popular lobs:
Feeds are extremely fast and on average load in 20ms. Integrating Stream was significantly more affordable than building, maintaining and hosting an in-house solution. In addition it brings the added benefits of:
Advanced features such as ranked feeds are in use and help keep user retention and engagement high. Stream’s extensive feature set allows Sportlobster to easily adapt to changing product requirements with simple code modifications. The team at Sportlobster is looking to add several new features to improve the feed experience. We asked Andy what upcoming additions are being considered:
Andy: “First it is worth stating that we’ve got the major advantages out of our migration to Stream already. Now we have feeds which are consistent and responsive. In addition we have the ability to view content by popularity as well as in chronological order. We are going to continue to tune our popularity algorithm over the coming months and we also plan to expand the abilities of our feeds in future, making them more personalised and relevant to our users.”
You can learn more about Stream’s feed personalization here. The ranking methods can easily be configured via Stream’s dashboard. As a closing question we asked if they have any tips for new users of Stream.
Andy: “Read the online docs, use an SDK and don't try to do anything too smart - Stream can take care of almost everything for you. If you have any questions then reach out - the engineers are great. If you have a large existing dataset like we did, make sure to start planning the migration nice and early as it can take some time get get right, especially when you have lots of moving parts and dependencies like we did.”
You can learn more about Stream’s support for importing large sets of historical data in the docs.