Spok is a social content sharing application. A "spok" is a content (picture, animated gif, video, sound, URL, raw text, html text, poll, riddle and more to come) that will be published ("spoked") by a user. Every spoke could thereafter been (or not) re-spoked by other users.Every single user interaction (new spok, re-spok, unspok, comment, ...) will be stored with detailed space and time information.
When a spok is posted, it becomes an object shared between all the users. The strength of the system is that the spok lives its own life, depending on the other users re-spokes. When a spok is deleted (by his creator or by any re-spoker), the spok remains available for all the other spokers. The association between the spok and the spoker is deleted, but the spok continues its life.
The requirement of the application was to store every single user interaction (new spok, re-spok, unspok, comment, ...) with detailed space and time information. The purpose was to provide a complete timelined map of these interactions, from multiple points-of-view (for a specific user, for a specific spok or for the overall application).
In Spok app, the architecture is asynchronous, non blocking and highly fault tolerant. Data is sent through web sockets.This is a dual messaging pull and push system that doesn't require any previous request.
For example, the client UI could be updated without any interaction, from the client to the server, by a simple push of the required data through a specific channel. So Websockets based pull/push mechanism was heavily utilized to give it the reactive flavor. A major challenge was to design a websocket based microservice architecture which was done with the help of Akka-HTTP.
On the data model side, there were going to be linkage of every Spoke with Spokers. There are also linkages between Spoker's following other Spoker's and doing re-spokes. Another major challenge is to keep performance of every api under 100ms.
For the product we used the right technology for the right need. This enabled us to build the platform within the stipulated time and with the right quality. We used the DSE stack, web socket based microservice architecture and invested in high quality coding for which we kept a tab through CodeSquad. In just 6 months, Spok is ready to be launched in the market.