Advanced Software Engineering
Advanced Software Engineering
Unorganized source codes and modules with no definite roles can become a
problem for the application.
Skipping previous layers to create tight coupling can lead to a logical mess full
of complex interdependencies.
Basic modifications can require a complete redeployment of the application.
2. Event-driven Architecture Pattern
A good example that uses event-driven architecture is an e-commerce site.
The event-driven architecture enables the e-commerce website to react to
various sources at a time of high demand. Simultaneously, it avoids any crash of
the application or any over-provisioning of resources.
Usage:
For applications where individual data blocks interact with only a few modules.
Helps with user interfaces.
Shortcomings:
The plugins must have good handshaking code so that the microkernel is
aware of the plugin installation and is ready to work.
Changing a microkernel is almost impossible if multiple plugins depend on it.
Applications and software systems that function with a large user base and a
constant load of requests.
Applications that are supposed to address scalability and concurrency issues.
Shortcoming:
It is a complex task to cache the data for speed without disturbing multiple
copies.
Applications like emails, online banking services, the World Wide Web,
network printing, file sharing applications, gaming apps, etc.
Applications that focus on real-time services like telecommunication apps are
built with a distributed application structure.
An application with centralized resources and services that has to be
distributed over multiple servers.
Shortcomings:
Failure of the master component can lead to a loss of data with no backup
over the slave components.
Dependencies within the system can lead to a failure of the slave
components.
There can be an increase in overhead costs due to the isolated nature of the
slave components.
There can be a loss of data in between filters if the infrastructure design is not
reliable.
The slowest filter limits the performance and efficiency of the entire
architecture.
During transmission between filters, the data-transformation overhead costs
might increase.
The continuous transformational character of the architecture makes it less
user-friendly for interactional systems.