The software architecture of a system encompasses how its parts are organized, including issues such as the behavior of that structure and which components are responsible for performing a specific set of functions.
The choice of architecture influences aspects such as performance, quality, ease of maintenance and scalability, thus, this decision has a great impact on the success of the project, especially in the long term.
Software architecture proposed by Robert Cecil Martin ( Uncle Bob ) that aims to standardize and organize the developed code, favoring its reusability, as well as technology independence.
EDA is an architectural Design Pattern in which the communication between components is modeled using Event Streams, proposing to perform state change notifications of the application and components promoting loose coupling.
When any external software wants to access the application, it sends a request which is translated by an adapter or a call that passes to the application's port.