1. (New) Redesign process - sebas0163/My_RESTaurante GitHub Wiki
Starting SOA Architecture:
The following diagram shows the previous SOA Architecture that we will use as a base in order to design our new microservices architecture approach.
Business Needs:
The business is developing an interactive menu application for a restaurant that includes functions for food recommendations and reservation management with enhanced security.
Goals and objetives of this particular business:
- Improve Functionality and Usability: Enhance the existing university project's functionality and usability.
- Apply Microservices Architecture Principles: Learn and apply microservices principles in a real project.
- Develop Documentation and Process Tracking Skills: Develop skills in documenting and tracking software development processes.
- Meet Quality Standards and Deadlines: Ensure the project meets the established quality standards and deadlines.
- Transform to Microservices Architecture: Change the project's architecture to a purely service-oriented one.
Needed Outcomes:
- Successful redesign of the application to meet microservices requirements.
- Modifying existing services to add new features required as: enhanced security and different localities.
- Comprehensive documentation of the redesign and new services.
- Effective integration and testing of the new services within the existing architecture.
- Presentation and defense of the project demonstrating its functionality and compliance with requirements.
Information Architecture
All communication of information between services will be performed with HTTP REST technology through JSON messages as detailed in the microservices reference architecture. Communication with the client web app will be done through HTTPS to enhance security and every authentication process, or processes that requires being authenticated will be managed using JWTs (Json Web Tokens).
Semantic Information Design
In this step we defined the messages exchanged by services.
For User authenticator service:
-
User login: { email: abc, password: abc }
-
Add new user: { name: abc, email: abc, password: abc, pin: abc, access_level: abc}
-
change password: { email: abc, password: abc, pin: abc}
-
changeAccessLevel: {admin_email: abc, admin_password: abc, permit_email: abc, access_level: abc)
-
deleteUser: {email: abc, password: abc}
Reservation service:
-
editReservation: {id: abc, email: abc}
-
createNewAdminReservation: {time: abc, date: abc, quota: abc, people: abc, email: abc)
-
get and delete reservation by Id: {id: abc}
-
createReservation: { email: abc, timeid: abc, people: abc }
-
getReservationByEmail: {email: abc}
-
getReservationByLocal {local: abc}
-
editReservation {id: abc, time: 02/10/2024T12:00, user: myuser, people: 3}
Microservice Identification:
Every service from the base project is being repurposed to transform them into microservices.
The identified microservices are:
- BackendCore
- FoodCore
- TimeCore
- ReservationCore
- UserCore
Microservices Specification
This is specified in the microservices section.
Service Realization
To go through the development history of these services feel free to check the commit views in this git repository.
Application Architecture:
Application architecture is as follows, each component will be detailed in microservices:
Implementing MicroService-Oriented Solutions
Last step was the implementation, testing and deployment of the microservices. The integration and unit tests were performed in jest framework and each test is documented with each component.