Appearance
9 - Conclusions
We are satisfied with the platform developed, which originated from our business idea. The main achievements are:
- Achievements of project goals. All project goals were reached, with particular focus on aspects defining a distributed system. The system consists of isolated, loosely coupled components that appear to users as a single coherent platform.
- Requirements fulfillment. All functional and non-functional requirements were satisfied, with iterative refinement based on feedback from potential users.
- Microservices architecture design. The system was designed as a collection of independent services with clear boundaries. Backend microservices communicate and coordinate via a message broker and expose well-defined REST APIs used by the frontend.
- Distributed architecture implementation. Services were containerized using Docker and deployed both with Docker Compose and Docker Swarm, simulating a distributed environment with service isolation and internal networking.
- Modularity and extensibility. The architecture provides a clear separation of concerns, ensuring maintainability, easy addition of new features and future scalability. The modular design also facilitated parallel development of different functionalities.
9.1 - Future Works
Although the platform was designed according to distributed principles, it was deployed on a single physical machine. As a result, the system does not provide real high availability: if the host machine fails, all services become unavailable. Future improvements could include deployment on multiple physical or virtual machines to achieve infrastructure-level fault tolerance and resilience.
From a functional perspective, potential extensions include:
- Allowing organizations to respond to reviews.
- Additional notifications, such as friendship suggestions and updates on liked events.
- Profile insights and statistics.
- Refund management.
- Multi-currency support to enhance internationalization.
9.2 - What we learned
This project allowed us to apply distributed system concepts that we had previously studied only from a theoretical perspective. In particular:
We gained practical experience with the trade-offs between consistency and availability in the presence of network partitions, as described by the CAP theorem.
We experimented with containerization and faced challenges in guaranteeing data consistency across multiple services and system correctness when multiple replicas are deployed.
We gained a deeper understanding of service decoupling, transparency, reliability and resilience both in single and multiple node deployment.
We learnt how to make a real online deployment using a proprietary domain and physical server.