A long journey (not always a nice journey)
User Generated Contents always represented a challenge in AEM Sites (and previously in CQ5).
Many years ago, with CQ5.4 / CQ 5.5, UGC implied the concept of reverse replication: since contents posted by the users were stored on a single publish node (so on a single JCR repository) this content had to be replicated on all other nodes to make it available to all web users: a (digital) mess. Imagine thousands of small contents going back and forth your AEM architecture through recplication agents, even for a single like, with the possibility that one of these could go wrong. How unstable, under performant and a nightmare to maintain this mechanism was is easy to imagine: but someone implemented it on some real customer scenario (me being one of them ).
Out of the box component were available to quickly implement common UGC like Blog, Forum and Comments. Setup was easy and you could quickly integrate these functionalities in CQ5 very; but performance and stability were totally not adequate. The approach soon demonstrated to not be sustainable and a new solutions has been searched.
After some time, a new implementation appeared, following the wave of the introduction of MongoDb. Instead of putting UGC inside JCR repo on the publish (usually TarMK) UGC were sent to a centralized MongoDb dedicated only to this, removing the need for an infamous reverse replication. All components were completely rewritten me and my collaborator were not happy about that, because frontend adaption was quite complicated compared to previous version). We adopted this solution and used in a real production environment on an important digital magazine website. Even if the architecture was clearly better, the overall infrastructure looked unstable and the need for MongoDb required specific know how we didn’t have at that time.
Also this implementation did not last much time and a better, more structure approach was then delivered with AEM Communities, based on a separate centralized cloud storage where to store UGC. I didn’t have the pleasure to work on this version (our digital magazine customer meanwhile had decided to integrate an external service like Disqus) but I have read of different implementations taking advantage of this framework, finding it stable and scalable. But the point is that AEM Communities are not supported any more and that they are not available as a possible integration in Adobe Experience Manager as a Cloud Service.
In different situations I found myself answering to a customer that a simple “like” feature was not available out of the box in AEM and that an external integration would have been required. Normally when asking to Adobe Support, the received answer was to integrate third party solutions. And in some scenarios this is what we have done, actually without big problems, even if sometimes accepting compromises.
So, no other possibilities than going outside and search for not integrated solutions? This was the question that was flushing in my head some months ago when I decided to go to my R&D team with the request to come up with a zero-code, fully integrated UGC solution to be used in AEM as a Cloud Services. The idea was simple: a library of UGC components that simply needs to be added to a page in order to have basic functionalities like reactions (like / dislike), comments, rating & reviews and simple polls, with an integrated moderation tool in the author, possibly with some AI support (you cannot miss AI in any implementation nowadays…). All based on a stable, low cost and highly performant serverless cloud architecture hosted on AWS, Azure or any other cloud provider.
This is what we decided to implement. We have called it AEM Community Framework and has been released in September 2024.
Here below the architecture:
The pillars of the solution are the following:
⦁ Zero code integration: we didn’t want any effort to add community services to an existing website. Likely to the very first implementation delivered with CQ5, adding comments, reactions or reviews is as easy as to drag a component in a page and publish it
⦁ Data ownership: the solution requires to setup a serverless deployment on AWS (Azure to come). Hence all the data will remain completely in the availability of the customer without the need of exposure to third party integrators (like Disqus)
⦁ Data Encryption: all the communications between AEM and the Cloud Storage is done through server-side calls encrypting all the data. No information is stored on database in a clear way
⦁ OOTB integration with AEM user model: as long as the hosting website uses the standard User AEM profile model, no need to configure or customize anything: user session is automatically picked up from AEM.
⦁ AI supported: thanks to the integration of sentiment analysis it is possible to benefit from automatic moderation of contents decreasing UGC total cost of ownership.
We have designed AEM Community Framework because we saw the possibility to fill a potential hole with user generated contents management. We created it on the base of all previous experiences, trying to put in everything we always wanted to find in the solutions we were trying to integrate.
AEM Community Framework is easy to be integrated and simple to be customized and extended. In case you wish to evaluate it, reach us out to this page for further information: https://www.codeland.it/products/community-framework/