ADORSYS-GIS / webank-UserApp

Apache License 2.0
5 stars 2 forks source link

(TK-003): Create the Webank-UserApp Architecture #6

Closed Arielpetit closed 3 weeks ago

Arielpetit commented 1 month ago

Description:

The objective of this task is to ensure the Webank-UserApp architecture is clearly documented to guide the development process and address key technical decisions, such as:

Requirements:

Acceptance Criteria:

Estimate: 5

francis-pouatcha commented 1 month ago

Description from https://github.com/adorsys/eudiw-app/issues/20

The objective of this task is to document the decision taken on the architecture of the project. we need to understand why:

there is a fe-be secure layer in the app why we're building an event bus for communication the reason for abstraction of the fe components from fe-be components, how to define interfaces for communication between fe components and fe-be components

francis-pouatcha commented 1 month ago
  1. FE-BE Secure Layer: The decision to include a secure layer between the front-end (FE) and back-end (BE) is primarily driven by the need to protect data integrity and privacy. In a mobile app, sensitive information such as user credentials, personal data, and transaction details are often exchanged between the client and server. The secure layer uses encryption to ensure that this data cannot be intercepted or tampered with during transmission. This is crucial for maintaining user trust and for compliance with data protection regulations.

  2. Event Bus for Communication: The use of an event bus is a common pattern in modern app development, particularly in apps that follow a microservices architecture. The event bus allows different components of the app to publish and subscribe to events. This means that a component can react to events that it is interested in, without needing to know which other component produced the event. This decoupling of components leads to a codebase that is easier to maintain and evolve over time.

  3. Abstraction of FE Components from FE-BE Components: The decision to abstract the FE components from the FE-BE components is a reflection of the Single Responsibility Principle (SRP). By ensuring that the FE components are only concerned with presentation logic, and the BE components with business logic, we increase the maintainability and testability of the code. This separation of concerns also makes it easier to work on the FE and BE independently, which can be a big advantage in a team development environment.

  4. Defining Interfaces for Communication between FE and BE: Defining clear interfaces for communication between the FE and BE is crucial for the robustness of the app. These interfaces, often defined in an API (Application Programming Interface), ensure that both the FE and BE agree on the format of the data to be exchanged. This reduces the likelihood of errors and makes the system easier to debug.

francis-pouatcha commented 1 month ago

Architecture Decision Document

Objective

The objective of this document is to document the architectural decisions made for the project, with a focus on security and communication between components.

1. Frontend-Backend Secure Layer

2. Event Bus for Communication

3. Abstraction of FE Components from FE-BE Components

4. Defining Interfaces for Communication between FE Components and FE-BE Components

5. Back-end Security

6. Database Security

Conclusion

Documenting these architectural decisions provides insight into the rationale behind the design choices, guiding future development efforts and ensuring alignment with project goals and requirements. This includes a strong emphasis on security at all levels of the application, from the front-end to the back-end and the database, as well as efficient communication between components.