Point-to-Point using Sockets
- Generally seen with legacy systems that have been in existence for a while.
- Typically these communicate over an ASCII text based protocol
- Over time you end up with a plethora of such brittle point-to-point interfaces, which are tricky to manage and to modify. (Integration Spaghetti)
- There also exist variations of interfaces that are quite similar in nature and in intent.
- Each interface builds it own failure recovery mechanism
- Some of these interfaces are synchronous in design but are functionally asynchronous.
RMI or RMI/IIOP
- Suitable when both the Service Provider and the Consumers are implemented in Java
- RMI being a binary protocol makes it easier to transport large amounts of data
- I wouldn't use it for large-scale deployments, as it gets tricky to manage resources like RMI Service Threads
- It requires a registry, to access a service reference. There is another way of accessing RMI service, without using a registry, by using reference objects. In my view, going through the registry is the easier route
- Firewall issues around ports being enabled. RMI over HTTP attempts to work around that issue
- RMI activation framework helps increase availability of RMI Services, and helps better manage resources on the server
Object Serialization over HTTP
- Service providers and consumers interact by serializing binary objects over HTTP.
- Leverages the scalability and availability of standard HTTP servers like Apache.
- Leverages the ubiquity and firewall-friendly nature of the HTTP protocol
- Suitable when both the Service Provider and the Consumers are implemented in Java
- Being a binary protocol makes it easier to transport large amounts of data
Integration using MOM
- Publish/Subscribe
- Pub/Sub is a highly advertised feature of MOMs.
- In my view, this model fits in a world where the subscribers are highly dynamic.
- If you have a high number of subscribers, pay careful attention to how messages a published over the network. Multicast reduces the latency in publishing, and has a lower network impact.
- Point-to-Point
- Things to watch out for are: Queue Depth, Sequence of Messages, Message Correlation, Duration in Queue and Message Expiration.
- Pro-active monitoring and management of the dead-letter queue.
Web Services
- These are typically accessed over HTTP, which is a synchronous protocol. This introduces Availability Coupling between the Service Provider and the Consumers.
- The better way to communicate is by exchanging documents.
- Stick to industry standard XML schemas
- Authentication and Authorization is a tricky problem to solve
- There is some value in attempting to solve the Service Versioning issue, by following the same approach as that for Component Versioning
- The plethora of WS standards reminds me what happened with CORBA. In the end, only a handful of standards remained standing, and the vendors ended up implementing only those standards.
- Then you have the whole set of arguments around REST vs. Web Services.
Enterprise Service Bus (ESB)
- It is an attempt to emulate (conceptually) within the middleware world, what the computer hardware vendors ended up doing, to solve their integration issues.
- The typical value-add of such products are: Protocol Transformation, Process Orchestration/Choreography, Monitoring & Management, Service Versioning, SLA management, etc
No comments:
Post a Comment