IntroductionMiddleware can be used for a variety of things in order to better handle various aspects whereby large systems may be horizontally distributed horizontally rather than vertically (resources per node increased). A strain of middleware which I am focusing on today is largely used to define message-passing within primarily distributed systems.Description – 20Message-oriented middleware (MOM) is a form of middleware that decouples clients from servers by usage of message queues as a way of storing messages ready to be fired.
Middleware is software or hardware that handles requests from one peer (or client) to another (server). Holistically, it connects often convoluted/complex and pre-existing systems. Broadly speaking it delivers discrete (distinct one-off, non-stream data) messages from one application to another. Middleware software/hardware solutions can either be used on their own or with other solutions such as RPC (Remote Procedure Calls) whereby a subroutine can be executed in a different address space/network to invoke remote interactions to infrastructure – this is done by sending a request message to a known remote server to execute with the supplied variables/parameters.PurposeThe purpose of message-oriented middleware is to relay messages to and from a source to a destination (primarily) asynchronously in order to allow for non-real time communication as well as other benefits including ease of distribution of resources as it is not required that there is only one pool of resources that could be processing the queues.Role (in distributed computing)The role of message oriented middleware is to allow sending and receiving of messages between distributed systems. It creates a distributed communications layer that isolates the applications/data stores from each other in order to be able to distribute workloads as directed.
With this clients can potentially send messages and have the reasonable expectation that it will be processed when there is computing time available.Non-functional requirementsNetwork BW – bandwidth is key as this could potentially be a bottleneck if messages (of large sizes) need to be passed but are unable to be done due to network limitations.Auditability and control – as with all middleware, limiting access directly to the software application that messages are being sent to helps to track what happens and where with a centrally stored log. Although MOM doesn’t explicitly state whether you can or cannot modify/inspect the messages received, it is possible to do this in order to prevent Availability – the system should be designed to be able to handle faults, this could mean in the case of a client sending data asynchronously they could store the message in a local queue waiting for it to be processed.Backup – messages being passed must be auditable and once received should have multiple backups indicating the point of failure thus if a system were to fail the messages could be reliably re-queued without fear of potential duplication or it being absent.CapacityCostDependenciesDocumentationDisaster recoveryEfficiency (resource -> load)Effectiveness (performance -> effort)ExtensibilityFailure ManagementFault ToleranceInteroperabilityMaintainabilityManagementModifiabilityNetwork topologyOperabilityPerformancePlatform compatibilityPortabilityReliabilityReportingResilienceResponse timeRobustnessScalability (both horizontal – more pods and vertical – more resources per pod) – This is one of the most key aspects of any distributed systems is that there is a need to scale, without a messaging handling system the distribution of workloads would be much more difficult, unreliable and much more resource intensive.SecurityStabilityThroughputBackground – 20One of the main needs of distributed computing is a method of transferring data (as well as spreading workloads due to the sometimes limited resources a single piece of hardware can have but a cluster can expand horizontally). The old way of processing this have been the terminal-host server model.
In this model the platform would receive a user invoked method and then process and return the result to a terminal screen, this is not asynchronous so during this process the server would connect to the database and execute commands to either get, insert, update or remove data. This is still considered an exchange of data between two applications although severely bottlenecked by self imposed limitations.Middleware is a piece of software that handles transfer of information from one application to one or many other applications. MOM stands for Message Oriented Middleware and allows developers to focus on developing applications by managing the message parsing between operating systems, hardware and various communication protocols.
The applications that use MOM follow a very simple architecture. They implement a messaging client and a messaging API. Clients can be applications or system components. The messaging API is used to send messages to MOM. MOM then distributes the message to other clients. One of the big advantages of this system is that it does not rely on the transport layer. It solves the issues in the communication layer and uses it instead.In the modern world the distributed computing model has gained a lot of popularity.
In this environment different operating systems communicate with different hardware using different applications. The network structure and protocols are also often different. All this makes the communication complicated and developers up until MOM was introduced had to solve these networking issues themselves. The applications they wrote would use very low-level communication layers (RPCs, sockets and shared memory). The disadvantage of these applications is that they can only run well in a local network.SourceInfrastructure e.
g. api and toolsStatusPopularityMaturityMOM is quite new – even in terms of the Advanced Messaging Queue Protocal (AMQP), it was conceived in 2003 and eventually in 2011 the first stable version dubbed 1.0 was released. A lack of standards has resulted in poorly interfacing with each other and software vendors having unique ways of communicating.
Application Context – 10Kinds of applications, hardware/software environmentThe main aim of message oriented middleware is to provide a communication channel to distributed application systems, linking applications across organisations using message queues to store messages received. The target platforms of MOM are stand-alone applications that operate, evolve and are maintained independently from other in the environment. The two examples of environments where MOM would be useful are the stock market and online shopping.Protocols – 10A protocol is a set of rules – in this context for communication. I will focus primarily on software-based protocols for communication using Message-Oriented Middleware. All mentioned protocols will be taken from Wikipedia as these are the most likely to be popular and thus I’ve used these as well as thrown in a few of the ones I am familiar with and have experience utilising on a distributed platform.Overall MOM is designed to support asynchronous (queued/non-immediate) communication unlike other forms of middleware such as RPC (Remote Procedure Calls) where there is synchronous communication and if there is one party offline then the operation as a whole fails. MOM can accept a message from one client and then queue it ready for the server to be able to retrieve the message when available to handle a task.
Thus MOM requires protocols to be able to accept communications when the intended server(s) is(/are) offline to be processed at a later date.Typical use – 20MOM is normally used as part of large enterprise distributed software systems that are usually diverse with regards to operating systems, database technologies as well as other things such as communication limiting factors usually in the form of private networks limiting access – two servers spanning across two datacenters may have the need to communicate e.g.
a user storage database needs to be modified by a service that is running on a server in another data center with ease. MOM allows for an external endpoint on the network but does also limit the access to other areas on the network as it does not open up the network other than to those specific endpoints.In my experience of using MOM we use this alongside RPC to make updates to records and run programs. MOM is great for service-to-service communication. An example of this would be an API microservice receiving a POST request to update a customer’s details and then queuing that message to be sent on to another service which in turn calls another service that handles customer information updates that results in a domino effect occurring and this can be both asynchronous and synchronous communication.Block Diagram – 10Reflection/conclusion – 10MOM has a key role to play as part of enabling and sustaining distributed software applications, with the boom of development and systems using microservices – a solid base supporting communication/message passing is becoming ever more important.References10 years of RabbitMQ Messaging.
(n.d.). Retrieved from https://www.rabbitmq.com/Advanced Message Queuing Protocol.
(2017, December 27). Retrieved from https://en.wikipedia.
org/wiki/Advanced_Message_Queuing_ProtocolMessage-Oriented Middleware (MOM). (n.d.). Retrieved from https://docs.
oracle.com/cd/E19340-01/820-6424/aeraq/index.htmlMessage-oriented middleware. (2018, January 02). Retrieved from https://en.wikipedia.org/wiki/Message-oriented_middleware