When the AEM 6.1 Communities functionality was first released about 4 years ago, I’d just created my first blog post with AEM architecture diagrams for the Rackspace blog, and promised all my teammates that I would TOTALLY create some great diagrams of how the Adobe Experience Manager / Solr / Mongo / Sling Distribution setup worked.
Well, now here we are a few versions later, and in the intervening years I’ve made still further promises to co-workers to make some understandable diagrams of how this all works. Well, sorry team, I’m finally catching up my backlog.
First: Understanding the Problem of UGC on AEM
In AEM (with the exception of the new AEM as a Cloud service) each Publish instance keeps an entire copy of ALL of the content a user could possibly want to see, with the exception of things like – say – a custom on-site search engine like Sinequa or Solr, or a Commerce engine like Hybris.
So, if you wanted to implement some social features like comments, blog posts, likes, ratings, bookmarks, blog “follow” functionality, etc, that all needs to be stored somewhere that all users can get to.
In the old days (i.e. AEM 6.0 and earlier) your only option was to have all of your publicly logged-in users to be REAL AEM users, and a comment or a “like” posted on one AEM publisher would then have to get reverse-replicated back to the Author (which is not supposed to be taking public traffic) which then forward-replicates it out to the other publishers. This setup was EXCEPTIONALLY brittle, and with its multiple redundant points of failure could handle FAMOUSLY little traffic before falling over dead. The most problematic AEM site I ever worked on, causing me more heartache and grief than virtually anything else I’ve ever worked on in my career was AEM 6.0 with such a setup.
And don’t ask me for a diagram of it, I won’t do it.