I have a requirement where user can create his own set of assets (collection) and can share it, so for this we are planning to save the created collections under somewhere /content/dam/<site-name>/collections. So how should we sync user created collections to all our publish instances? Can we use Sling Content Distribution Model for this?
Agreed with @vaibhavi_235640 , if it is user-generated large content then it should be stored centrally and shared with the all the publishers for performance perspective and SRP is the right approach for this.
Implementation: SRP Community Content Storage
AEM6.1 introduces the concept of Social Resource Providers(SRP)(it is now renamed and should be called as Storage Resource Provider). With this, the UGC content is no longer replicated across your publish instances. The UGC content is stored in a central repository or a common community content storage. All the UGC content is directly created, stored, and access from this common storage. Only the content created under /content/usergenerated is persisted in this common storage. The rest of the site content is still persisted on the individual publish servers. You can visualize this with the below image:
The common UGC store allows you to keep your architecture simple by having all your Publish servers on TarMK. This way you can keep your publish instances in a TarMK farm topology. TarMK is always the recommended deployment option for your publish instances in AEM6.1.
UGC Storage Options AEM 6.1 provides 3 options to configure this UGC storage: 1) Adobe Social (ASRP) - The UGC content is persisted in Adobe Social cloud. 2) MongoDB (MSRP) - The UGC data is persisted in a shared MongoDB server. 3) JCR (JSRP) - default, The UGC data is persisted in a common JCR repository. This is currently only recommended for non-production systems. By default, the storage option is JSRP but if you do not configure a common store, the UGC data will only be visible in the AEM publish instance where it is created.