Sunday, October 7, 2007

Integration Technologies in Practice

The following is based on what I have seen and experienced.

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: