1. The network is reliable
2. Latency is zero
3. Bandwidth is infinite
4. The network is secure
5. Topology doesn't change
6. There is one administrator
7. Transport cost is zero
8. The network is homogeneous
We can summarize the major challenges of integration solutions into to the following
- Networks are unreliable
- Networks are slow
- Any two applications are different
- Change is inevitable
- File Transfer : One application writes a file and another application reads from the file. The applications will need to agree on filename,location and format
- Shared Database: Multiple applications share the same database schema, the integration happens through the database.
- Remote Procedure Invocation/ Web services: One application exposes one sort of functionality that can be accessed remotely by other application as remote procedure. This could as well be a web service. Communication occurs in real time and synchronously.
- Messaging: One application publishes a message to a common message channel. Apps need to agree upon message channel and format. Communication is asynchronous.
- Apps are tightly coupled.
- Apps A and B need to scaled together
- If A needs high availability then even B needs to made highly available.
- The model of communication involves the applications to be polling for the availability of the data from the other application.
- Apps involved in integration (A,B) are loosely coupled .
- Apps can be scaled independently of each other
- Apps can functionally be available independent of each other. App A can be up and functional even when B is down. App A will queue up the data that is required by B , When B is up it start consuming the events from A.
- Apps do not have to be build to support peak load as the asynchronous messaging allows the processing to be spread out over time. Asynchronous dampens the load.
- Throttling Ability.
- Reliable Communication - reliable and guaranteed delivery
- Platform/Language agnostic integration
- It is a complex programming model. Asynchronous messaging requires developers to work with an event driven programming model.
- Message sequence issues - Message channels guarantee message delivery but they do not guarantee when message will be delivered. Might require some logic to re-sequence the events at the consuming end if IN ORDER Delivery is a required SLA.
- Synchronous Scenarios- There might be scenarios where synchronous is required for better user experience. Intelligent workaround schemes might be required to support it.
- Performance-- Messaging is best suited to keep the system in sync after the initial data replication. Messaging is not suited from the performance aspect to be used as mechanism to replicate data.
- Limited platform support. This methodology is not yet mainstream and the support and best practices are in limited availability.
- Vendor Lock-in: Messaging brokers used might result in a vendor-lockin problem. But as along as we stick to to the standards like JMS and stay away from using the broker specific features most of the vendor lock problems can be mitigated.