Reactive Product Development
Partner : Spok
Technologies Used : Scala, Akka-Http, DSE stack(Cassandra, Graph, Solr, Spark), Akka, Redis, Event Sourcing
Domain : Social
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.
Knoldus started working to build Spok in Knolway (Knoldus software development methodology) rhythm which is divided into 4 steps:- Fusion, Architecture Release, Development Release and Maintain and Enhance. The architecture was based on the Reactive Manifesto and was designed to be asynchronous and non-blocking Api at every level. We used Eventuate to manage event sourcing. We decided to use DSE full stack, so linkage between data is managed by DSE graph, big data analytics is managed by DSE Analytics and searching is implemented by DSE Search. The services were distributed as microservices and were made available through REST endpoints. It took around 12 sprints to build this product. Each sprint was followed by a demo and release on the production environment. After building product, we did analysis and benchmarking over an immense data. Every api is taking under 100ms to respond.
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.
Get In Touch
If you are looking to build a Reactive Product with Scala, Akka, Play Framework or a Big Data Solution leveraging Spark, Knoldus is here to help. We are proven, experienced Certified Lightbend Partner, available for partnering to make your product a reality. Get in touch with us here, Follow us @Knolspeak or just send us an email on email@example.com