This thesis was performed at the company ShapeUp Club located in Stockholm, Sweden. ShapeUp Club offers a digital calorie counter service for the web, iOS and Android with data synchronization across the platforms.
ShapeUp Club wants to provide their users with the option to synchronize data between ShapeUp Club and external health services. The objective for this thesis has been to develop an extension to ShapeUp Clubs current backend platform where new external health services can be plugged-in quickly and scalable.
External partner APIs will be examined and implemented in the system to validate the functionality of the system. The amount of code needed to plug-in a service should be as minimal as possible for a developer to quickly add another service. To allow for scalability the platform also needs to adapt logic for how often users should be allowed to poll for data from their connected services, to minimize the database load for all parts.
To handle these demands, an extension to ShapeUp Club’s current backend solution was built using the Django framework for Python. By providing a generic base class that new services inherit from, the amount of code necessary for implementing a new service is reduced to methods for API- requests, authorization and serialization of data. To reduce the number of redundant poll requests, users are placed into groups. Each group is a cluster of users with similar frequency of updates. Django’s cache framework is used to handle the concurrency of the sync tasks, which locks a user from syncing the same partner in parallel.
Authors: Hammer, Joakim | Lind, Olle