As we went through how problems are addressed with Messaging and Message Brokers, we are now ready to dive into the software architectures that are parallel with these solutions. Message Brokers create an abstraction between modules, applications, and processes. The abstraction, which is created with Message Brokers, is simply defined as Message Oriented Middleware. As we know, Message Brokers has a functionality to apply asynchronous patterns on the affected modules, applications, and processes. Then, it comes to Event Driven Architecture that is strictly related with the asynchronous system. After defining these related software architectures, let's dive into this amazing stuff.