The number of companies that use strategies and methods for the storage, management and distribution of content and documents associated to the processes of the organization is growing. These methods are grouped under the name of Enterprise Content Management (ECM). Under the ECM umbrella, we find solutions for the management of documents, web content management, searching, collaboration and the management of digital assets. The ECM type solutions aim to facilitate the management of organization information by simplifying the storage, security, permissions, retention and informational flows.
Following the acquisition of the Swiss company, Day Software, by Adobe, the Day Communique product line turned into Adobe CQ, and will soon turn into Adobe Experience Manager (AEM). In the year 2014, those from Adobe became market leaders in the Gartner Magic Quadrant for Web Content Management solutions.
AEM is a platform dedicated to the most complex and ambitious organizations, which allows the management of high degree granulation information. The situations where it is suitable to use this product are the multi-site and multi-language portals, where the independent administration of content by several content editors, based on some processes defined by the organization, is required.
This thing is possible due to an ingenious technical solution and a thorough understanding of the ECM domain by the creators of the product. From the point of view of technologies, AEM is a mix of Java open source frameworks and Adobe proprietary libraries.
In order to manage a high complexity system such as AEM, they decided to use an OSGI container, Apache Felix, for the management of packages and libraries. OSGI is in itself a topic for several articles, but in the given situation, the main advantage it brings is the possibility of turning different parts of the system on and off, without affecting the general functioning of the application and zero downtime deployment.
The truly innovating part is the introduction of Apache Jackrabbit Oak as a solution for the level of data storage. Jackrabbit Oak is a content repository arborescent which implements the JCR (Java Content Repository) and WebDAV standards, which allows the uniform handling of the resources, regardless of their typology. Thus, for an Oak user, it becomes transparent if the resources he accesses are web pages, documents, images or other digital assets.
The web framework is also open source, Apache Sling, which allows the JCR management in a REST manner. The Sling power resides in the fact that it abstracts the access to JCR and offers different ways of resource rendering, through a mechanism of selectors. Thus, a JCR node can be presented as JSON, HTML, XML etc.
With these frameworks at the base of AEM, the system offers a wide range of UI components which editors can use directly in the pages through a drag & drop mechanism. So, the responsibility of creating the page has been transferred from programmer to the content editor. It is the programmer's responsibility to set up the templates based on which the pages will be developed and to create, when necessary, personalized components for the client's needs. The development of custom visual components is relatively easy, being based on well-known technologies such as JSP and ExtJS, to which we also add an Adobe library, called Granite.
On the infrastructure level, AEM was designed to run in a distributed environment and it offers different capabilities of setting up the server instances, from a single instance to cluster or load balancing on several instances.
The AEM server can function in two modes: author and publish. In the author mode, the instance is used to set up the platform and to create content, whereas, in the publish mode, the instance conveys the content to the clients. The number of author and publish instances do not have to be correlated, and AEM provides a mechanism of data replication from the author, on publish. Thus, the uploading on servers is distributed, and a high activity of the editors will be felt only on the author instances, without affecting the performance for the clients, since they connect to publish. Adobe also offers a separate module, called Dispatcher, which has the cache and load balancing functions. The responsibility of managing the cache is taken off the programmers' shoulders, since the Dispatcher automatically invalidates the cache the moment when a page has been modified.
In conclusion, the Adobe solution is dedicated to multinational organizations which have accumulated considerable amounts of content which they wish to use in different ways. We appreciate the transfer of responsibilities from the development area to the content editors. They can work independently from a development team in order to create a site, since there is a series of components available to satisfy their needs.
The AEM disadvantages are: the prohibitive price (450.000$ average cost for licenses and a total implementation cost reaching about 2M $) and also the fact that the learning curve for this technology is steep, requiring a team that has experience in Java EE technologies and ECM concepts.