Salesforce is one of the most integration-friendly products available that supports real-time, asynchronous or even batch processing. This blog discusses the various options we have for integrate with salesforce rather than how each of these to be implemented.
Outbound (Integrate Salesforce to Remote Systems):
Integration platforms can expose a web service using the WSDL generated by Salesforce which means integration should implement salesforce interfaces. MuleSoft does provide all the tools needed for the integration.
In the test use case I choose, the implementation looks like the following
Near Real Time:
MuleSoft provided Connector can be scheduled to bring in data which makes it near real-time depending on the scheduler settings. Connector can be used to Query the Salesforce objects very much like SQL queries.
Internal to Salesforce, we can define to trigger an event with defined criteria. When the action happens triggering the event, the data can be sent to integration using the integration URL. In addition to sending data to URL, Salesforce has the capability to store the data in Queue before sending it out to remote systems. This gives a much-needed reliability for the data. Queues can be configured to retry x number of times with x interval. Depending on the use case Queue can be set up for reliability either in Salesforce or an integration layer.
Inbound (Integrate Remote Systems to Salesforce):
MuleSoft does provide a very robust Connector for the Salesforce to integrate which can be used for real-time updates to Salesforce.
Bulk Data Transfer:
The connector in itself provides features for the bulk data transfers. However, with bulk operations, there are chances that integration could overload Salesforce. All the bulk data transfer use case should be thoroughly tested for resource utilization.
There is no silver bullet on the pattern to be used, it all depends on the use case.