Featured in Architecture & Design

Monal Daxini presents a blueprint for streaming data architectures and a review of desirable features of a streaming engine. He also talks about streaming application patterns and anti-patterns, and use cases and concrete examples using Apache Flink.

Featured in AI, ML & Data Engineering

Joy Gao talks about how database streaming is essential to WePay's infrastructure and the many functions that database streaming serves. She provides information on how the database streaming infrastructure was created & managed so that others can leverage their work to develop their own database streaming solutions. She goes over challenges faced with streaming peer-to-peer distributed databases.

Missing Backend Services for Mobile

Jesper Richter-Reichhelm, Head of Engineering at Wooga, spoke at GOTO Amsterdam 2014 about unexpected difficulties to find commoditized back end services that suited Wooga's mobile games needs. Combining reasonable cost, integration with an existing tool chain and transparent access to data proved impossible more often than not, leading to in-house development of said services.

Jesper focused in particular on 3 back end services common to many mobile apps: user data persistence, AB testing analytics and error handling.

In terms of data persistence, Wooga’s requirements to support multi-device user data and multi-environment (CI, test, prod) were not supported by Parse and although Kinvey did the cost for a 40 million user base was too high. Wooga decided to develop their own key-value store using ETags, as well as configuration and authorization services.

Omniata provided a rich feature set for data analytics and A/B testing but the lack of integration with existing tools at Wooga and no deep access to data such as which users received a particular configuration of the app proved too strong obstacles for adoption. Wooga has been developing their own tools for analytics, dashboards and reporting since its early stages.

For error handling HockeyApp lacked information on exceptions and under which conditions the errors happened. Crittercism’s larger feature set was a better fit but the cost was extremely high for a user base of millions. It still lacked support for segmentation (for e.g. comparing if a newer version in A/B testing had more crash reports than an older version) and normalization (for e.g. percentage of users affected by a given error). Wooga included both in their custom made real time error handling tools.

With a growing number of generic backend services at hand, Wooga decided to create a dedicated mobile back end services team following the Amazon model (team provides a simple REST API to its services, game developers are responsible for analyzing results). Developing and maintaining this kind of services in house was imposed by the lack of suitable external options, Jesper highlighted. He exemplified with the use of other services like New Relic for web site monitoring, Github and Travis CI for development, among others.

Jesper mentioned that Wooga is considering open sourcing their backend services next year.