Closed Jorgear27 closed 1 month ago
The objective of a research is not to show the tool that has been chosen, but to look for different types of tools to make a comparison between them, name advantages and disadvantages and then make a choice.
In addition, we provide a basic scheme of the interconnection that the Back-End has so that you can better orient yourself and make comparisons of the tools that can be used.
[!NOTE] The tools that we provide in the image are illustrative, you can compare the ones you want.
I think we should consider Go for the backend, it's a compiled language with a low learning curve.
You can use it with https://gofiber.io/
The purpose of this research is to evaluate and compare various back-end technologies that could be used to support the staff access monitoring system. The system requires secure storage of data, user identity management, and real-time access monitoring through a web interface. This research focuses on server frameworks, database systems, and communication protocols.
The Back-End is crucial for the correct development of the staff access monitoring system. As shown in the requirements, the back end must be responsible for the data processing and implementing the logic of the system. It also needs to centralize the data management and provide a secure environment for the communication between the ESP32 and the database.
Given the requirements specified in the Epics SRS, we will evaluate different technologies that can fulfill the needs of the project.
Go is a statically typed, compiled language designed for high performance and concurrency. It is well-suited for back-end development due to its simplicity and efficiency. Go’s standard library includes a robust HTTP server (net/http
), making it an excellent choice for building RESTful APIs or handling HTTP communication.
Node.js is a JavaScript runtime built on Chrome's V8 engine, allowing developers to write server-side code in JavaScript. It is non-blocking and asynchronous by nature, making it ideal for handling I/O-heavy tasks such as web servers or real-time applications.
Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design.
Spring Boot is a framework for building microservices in Java, widely used for enterprise-level applications.
C# is a mature, object-oriented language used for enterprise-level applications, typically in combination with the .NET framework. It is highly versatile and can be used to build web APIs and desktop applications.
Rust is a systems programming language focused on safety and performance, known for its memory safety and low-level control. Although relatively new to web development, frameworks like Actix Web and Rocket make Rust an attractive option for high-performance back-end servers.
In early conclusion, Go offers the right balance of simplicity, performance, and concurrency for our back-end, making it a strong choice for both real-time access monitoring and more traditional web-based administration tasks (over HTTP). The communication protocols and back-end framework together provide a robust and scalable system.
PostgreSQL is an open-source relational database known for its standards compliance and robustness.
MySQL is a popular relational database management system (RDBMS) that uses SQL (Structured Query Language) for querying and managing data. It is widely adopted and suited for applications requiring structured data storage with relationships between tables.
MongoDB is a NoSQL database that stores data in flexible, JSON-like documents rather than traditional rows and columns. This schema-less approach allows for greater flexibility in handling unstructured or semi-structured data.
ScyllaDB is a NoSQL database and offers high throughput and low-latency operations, making it an excellent choice for high-performance, real-time applications.
We believe, MongoDB stands out as one of the best database option for the staff access monitoring system due to its flexibility and ability to handle diverse data formats. MongoDB's horizontal scalability ensures that as the system grows and data volume increases, it can scale efficiently, providing fast access and easy management. Its flexibility, combined with strong community support and integration with modern back-end frameworks like Go, makes MongoDB an ideal choice for this project.
HTTP is a widely used protocol for communication between clients and servers on the web.
net/http
library.MQTT is a lightweight messaging protocol commonly used in IoT (Internet of Things) applications for real-time communication.
HTTP is a reliable choice for the back-end communication of the staff access monitoring system. It ensures straightforward implementation and integration with both the front-end and station devices, while providing the necessary security features.
Research and evaluate different back-end technologies that can be used to support the staff access monitoring system. This includes selecting the appropriate server framework, database system and any other tools taken into consideration.