Craig McMurty, in his recent posting on Indigo indicates a couple of different scenarios for folks who are developing software today with an eye towards the impending release of Indigo. It is a valuable article and quite interesting. However, Craig missed the integration scenario completely, which is unfortunate.
The scenarios covered:
|Web Application||Use WSE-secured web services to support Ajax controls. No other use of communication protocols recommended.|
|Rich Client (with local db)||Use MSMQ for data replication. Use WSE-secured web services to support synchronous calls.|
|Data collection from devices (slow is OK)||Use MSMQ for data transmission. Use WSE-secured web services to support synchronous calls.|
|Data collection from devices (speed required)||Use Indigo beta bits for communication instead of remoting.|
This is useful if all apps are an island, and never need to share data with one another. Unfortunately, that is not the world I live in. As an architect, it is my responsibility to insure that applications are created with data integration built-in.
The primary patterns of data integration are somewhat technical, but to align them with Craig’s approach, would fall into the following scenarios:
- Data source system shares domain data. The considerations are: security of access to the data source system, whether data can be provided reliably by the data source system directly, and whether synchronous lookup of data would cause an impact on the performance of the data source system. Patterns are needed for situations where the data source system can (and should) provide data in individual records, in ad-hoc lookup sets, and in time-related (usually daily) batch deliveries.
- System of Record generates business event. The considerations are: canonical schema of the business event (see my prior post on business event schemas), a publish and subscribe system for sharing the event, protocol for accepting the notification of the event, and considerations for instrumentation, security, orchestration, and monitoring.
- Operation Data System shares transactional roll-up information (usually to a reporting system). The considerations are: source, version, and age of the data, relationships to known dimension tables, updates to dimension data, data size and load frequency, security and monitoring.
- Application calls on service provided by partner application. This is an interesting (and somewhat dangerous) one. The considerations are: authorization, authentication, subscription management, service schema versioning, network/firewall issues, availability, reliability, monitoring, and error handling
I will do some digging to see if I can determine if Indigo has a story for these scenarios or if they are simply covered by SQL Notification Services, Biztalk, DTS, and WSE (respectively).