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. / Detta examensarbete har utförts hos företaget ShapeUp Club i Stockholm. ShapeUp Club erbjuder en digital kaloriräknare för webben, iOS och Android med synkronisering av data mellan dessa plattformar. ShapeUp Club vill kunna erbjuda sina kunder möjligheten att synkronisera data mellan ShapeUp Club och andra externa hälsotjänster. Målet med detta projekt har varit att implementera en ny tjänst till ShapeUp Clubs nuvarande backend-lösning där externa hälsotjänster snabbt och skalbart kan implementeras. Externa hälso-API:er har utvärderats och implementerats i samband med utvecklingen av den nya backendtjänsten, för att validera dess funktionalitet. Mängden kod som behövs för att implementera en hälsotjänst bör vara så minimal som möjligt för att utvecklare snabbt ska kunna lägga till ytterligare tjänster. För att systemet ska vara skalbart måste logik finnas för hur ofta användare ska tillåtas att fråga efter data mot de tjänster de har valt att synkronisera mot. För att tillfredställa dessa behov har en utökning av ShapeUp Clubs nuvarande backend-lösning byggts med ramverket Django för Python. Genom att ha en större, generisk klass som nya implementeringar ärver från så har mängden nödvändig kod för varje hälsotjänst-implementering minskats till metoder för API-anrop, autentisering och serialisering av data. För att minska antalet “onödiga” poll-anrop så placerar vi användare i olika grupper beroende på om deras poll-anrop frekvent återvänder utan någon ny information. De olika grupperna bestämmer sedan hur länge användarna måste vänta innan de tillåts göra nya poll-anrop.
Identifer | oai:union.ndltd.org:UPSALLA1/oai:DiVA.org:kth-123584 |
Date | January 2013 |
Creators | Hammer, Joakim, Lind, Olle |
Publisher | KTH, Data- och elektroteknik |
Source Sets | DiVA Archive at Upsalla University |
Language | English |
Detected Language | English |
Type | Student thesis, info:eu-repo/semantics/bachelorThesis, text |
Format | application/pdf |
Rights | info:eu-repo/semantics/openAccess |
Relation | Trita-STH ; 2013:32 |
Page generated in 0.0024 seconds