The system implementation can be found here, divided into:
- Services - The microservices implementation that make up the backend of the system.
- Protos - The protocol buffers used for gRPC communication between the microservices.
- Gen - The generated code from the protocol buffers.
- Traefik - The configuration for the Traefik reverse proxy used for routing requests to the microservices.
- gRPC Gateway - The configuration for the gRPC Gateway used for exposing the gRPC services as REST APIs.
- Reduced Microservices: in this phase, we made some changes to both the application architecture and the functional requirements by reducing the number of microservices to implement. We removed the
AuthService, theUserService, theSocialServiceand theFeedService(replaced byPopularService, which instead of providing threads based on the user’s followed communities and users, provides the most upvoted threads and comments). By doing this, we reduced the complexity of the system and the number of microservices to implement, which helped us achieve the goals of this phase. - Database: we used a local MongoDB instance with three collections:
communities,threadsandcomments. - Datasets: the friends dataset was discarded as it was no longer needed and the reddit posts dataset was modified to fit our needs by fitting our three collections. Since the original dataset didn’t include comments, the
commentscollection is initially populated with an empty array, ready to store future comments.