Table of Contents |
---|
Why Use AEM
Leader in Gartner Quadrant in 2017, now 7 years in a row.
Architecture Components
Component Front-End to Back | Purpose | Summary | Notes | Key Reading MatrialMaterial | ||||
---|---|---|---|---|---|---|---|---|
Content Delivery Network | ||||||||
Akamai | CDN (Content Distribution Network) | |||||||
Content Management System | ||||||||
Apache Web Server with Adobe Dispatcher Module | Web Server, Caching and Load Balancing | Caches into static content pages generated by | CMS Publisher to improve performance and provides a layer of security protection. Requests from User stops at Dispatcher which initiates a cleaner request to the Publisher. The Adobe Dispatcher Module is proprietary Adobe software. | The Adobe Dispatcher module loads like any other Apache module but is closed source. Note that there are two versions (standard and SSL) with the same extracted name. Is the Adobe Dispatcher module what also receives cache expirey information from the Publisher? | ||||
AEM Publisher | CMS Publisher | Assembles and serves the published content as static html. | ||||||
Content Repository | CMS Database Cache | See Content. Repository further below AEM Instance for Author for details. | ||||||
AEM Instance for Author | CMS Author | Create, upload and edit content and to administer the website. Powered as follows,
| Has two user interfaces, old and new (add more to this later). | If possible, ensure only available within the Intranet. | ||||
Content Repository | CMS Publisher Database Cache | NoSQL File based data storage for content-centric applications, implementing Content Repository API for Java Technology (JCR 2.0). Uses Apache Jackrabbit as JCR implementation and Apache Jackrabbit Oak as module manager (searching, versioning, transactions, etc.) of repository with additional customization on top of Oak called CRX CRX3 (Code Repository Extreme 3) to add features (synchronous updates, key-value persistence, clustering, static extension, individual workspace index). This finally communicates to a MK (MicroKernel). Default and recommended storage format is to use tar files TARMK (Tar Micro Kernel) which also offers Cold Standby to sync repositories. MongoDB is an alternative data storage introduced in AEM 6.0 which provides active site redundancy. However, Adobe does not yet endorse full fledged as of 6.0 for active site redundancy (ie sharding support was problematic and dropped). Adobes only reason to recommend MongoDB is if author instance has load requiring one instance. Even then, a larger Author machine likely the better solutionAlternative is MongoDB but not Adobe does not recommended except for specfic use cases. More details on selection further down in Technical Notes. Note Azure blob storage is not supported. AWS S3 is supported with Adobe's S3 Datastore Connector. | There are always limits to any type of file store, for example maximum number of files in a directory. Adobe is not clear on how the product deals with this. Planning should also be done around categories of assets, ie media, images and normal content. It especially becomes a problem when restoring.
| |||||
DAM (Digital Asset Management System) | Management of Production ready Digital Assets | As best practice, the DAM connected to AEM should be used for production ready, not high fidelity digital assets. | ||||||
Deep Content Management Technology Components | ||||||||
TarMK | ||||||||
Mongo | Sharding no longer supported. Only added as of 6.1. | |||||||
Solr powered by Lucene | Native System Search Engine | Used by the native system to perform lookups and performs indexing. | ||||||
Solr powered by Lucene | Site Search Engine | Bonsai Framework evaluation is to not use embedded and keep the CMS function purely to Authoring. Instead use an external Solr based search engine. | ||||||
AEM Instance for Author | CMS Author | Create, upload and edit content and to administer the website. | CMS Author Database | |||||
Microsoft AD or Single Sign-On | Centralized Authentication Directory | In companies with effective identity onboarding it is strongly recommended to leverage. Out of the box, AEM's authentication does not meet minimal standards (enforcing password complexity, password recovery, etc...). | Optional and should fail back to local authentication repository if AD fails. Currently AEM does not support one-time email users. As such decision is to not use AD in a large org to quickly provision Business users in and out of the system. Confirm users deactivated do not take license seats . Check if deleted users can be recreated with same GUID to more easily pass audit and compliance . | |||||
CRX | Code Repository Extreme. CRXDE Lite | Adobe's web user interface to interface with Apache Sling. CRXDE Lite looks to be Adobe's own proprietary implementation of JCR by extending Apache Jack Rabbit Oak.Get list of what CRX adds to Apache Sling (instructor thought it might be Jack Rabbit Oak )extension sitting on top of Apache Sling Web Console and Apache Felix Web Console. | ||||||
Apache Felix | Implementation of OSGi ImplementationSpecification | Can redeploy code pieces without requiring a restart. Each bundle requires a unique name space. Manages service discovery and registry. | ||||||
Apache Sling | Control to expose and access resources. | REST Architecture. | ||||||
JCR | Object Oriented Database | |||||||
JackRabbit | Handles multi version control with refresh function to handle real-time updates. | |||||||
Microkernel | Provides an abstraction layer for the storage of content in JSON. | |||||||
Vault | Extract out of TarMK for normal file system. | |||||||
Jetty | Container | Ahhh... not super clear but in Error 404 starting up noticed it's powered by Jetty. | ||||||
Granite | ||||||||
Roy Fieldinghttp specifications, sling, JSOP Thesis | Senior Principal Scientist at Adobe Systems | Significant achievements include, HTTP Specifications (Principle Author), originator of the Representational State Transfer (REST), co-founder of the Apache Software Foundation. | ||||||
David N | JCR | |||||||
Note to incorporate more clarity from this article in https://www.terrabeata.com/2015/03/aem-interview-questions-what-is-the-technology-stack-of-adobe-experience-manager/ Also more good stuff in this technical deep dive http://dev.day.com/content/ddc/en/gems/technical-deep-dive-of-the-aem-6-platform.html | ||||||||
Site Search | ||||||||
Solr powered by Lucene | Website Search | Used internally for DAM but also available as module for Customer facing website. | Keep distinct from CMS system for Customer facing website. Some products offer as a plugin, but only implement if outside of the CMS system for load and security purposes. | |||||
Development - Author | ||||||||
Kits | Samples, Tools and Commons |
Adobe Experience Manager Shortlist of Project Documentation
Technical Notes
General
AEM 6.x with Apache Sling uses TarMK with Apache Jackrabbit Oak. Key aspect of speed is the combination deserializes the repository into memory. It is not caching the repository in memory. The repository exists in memory and uses the tar files to serialize and persist the data. It will deserialize the entire repository into memory if enough memory available. So give AEM lots of memory.
...
Since most Enterprise use a CDN, uses TARMK. From Adobe's microkernal recommendations,
- TarMK is designed for performance
- MongoMK is used for scalability
- TarMK is designed for performance
- of Authoring servers
"Adobe highly recommends TarMK to be the default persistence technology used by customers in all deployment scenarios, for both the AEM Author and Publish instances".
MongoDB is an alternative data storage introduced in AEM 6.0 which provides active site redundancy. However, Adobe does not yet endorse full fledged as of 6.0 for active site redundancy (ie sharding support was problematic and dropped). Adobe's only reason to recommend MongoDB is if author instance has load requiring one instance. Even then, a larger Author machine likely the better solution.
SDD or HDD? - Ask Adobe how often the microkernal writes?
...
- AEM 6.2
- Apache 2.4.x
- Ubuntu Server LTS 64-bit (exact version should not matter)
Download
Note |
---|
June 2017 - Downloads do not seem to work with Chrome. Have had success with Safari. |
No public downloads as far as I can tell. Log into Licensing Website. Click LICENSES and Downloads. Click Adobe Experience Mgr.
...
You should see "Adobe Experience Mgr" but it says "No Serial Number Required". This is not true. Instead look for "AEM Standard" with Production Version "5.6" and you will see a serial number under the "Serial" column. Copy and paste into a standard text file for later.
Setup of Web Server Dispatcher
The Web Server Dispatcher is just the Apache Web Server (or equivalent) with a module (Adobe Dispatcher) to connect to AEM Publisher to retrieve and serve content.
The advantage is that the Web Server will build a cache of the content reducing load on the AEM Publisher. This is because the AEM Publisher dynamically builds the web pages at every request (even if they do not change). In addition, the Dispatcher can perform load balancing with multiple AEM Publishers.
You may want to read the Adobe Dispatcher online documentation for further background.
Install Apache Web Server per BonsaiFramework with hardening instructions.
Download module and load into Apache per the Adobe Instructions. If following the BonsaFramework you can copy and paste these instructions,
Code Block |
---|
su - serveradmin
mkdir aem
cd aem
mkdir aem-dispatcher
cd aem-dispatcher
# Initial instructions will use non-ssl version between Web
wget https://www.adobeaemcloud.com/content/companies/public/adobe/dispatcher/dispatcher/_jcr_content/top/download_6/file.res/dispatcher-apache2.4-linux-i686-4.2.0.tar.gz
tar -xvpf dispatcher-apache2.4-linux-i686-4.2.0.tar.gz |
...
Setup of AEM Application Server
AEM package comes is built using many of the same concepts endorsed in the Bonsai Framework, hence the entire system in initial download is a single file in two flavours,
- cq-quickstart-6.2.0.jar - executable to run as a Java process .which includes Jetty as an embedded container
- cq-quickstart-6.2.0.war - install in a container like Tomcat
Enable license by entering at startup or in license.properties file (preferred to automation).
By default the package starts up running both the author and publish components as one service. Enterprise configurations will want to segregate and this occurs with a file rename,
Code Block | ||
---|---|---|
| ||
cq-<instance-type>-p<port-number>.jar |
Change,
Code Block | ||
---|---|---|
| ||
mv cq-quickstart-6.2.0.jar aem-author-4502.jar
mv jre.... java
/opt/aem/author/java/bin/java -XX:MaxPermSize=512M -Xms1024m -jar /opt/aem/author/aem-author-4502.jar -unpack
Java HotSpot(TM) Server VM warning: ignoring option MaxPermSize=512M; support was removed in 8.0
Loading quickstart properties: default
Loading quickstart properties: instance
Setting properties from filename '/opt/aem/author/aem-author-4502.jar'
Option '-quickstart.server.port' set to '4502' from filename aem-author-4502.jar
Verbose mode - stdout/err not redirected to files, and stdin not closedResourceProvider paths=[/gui, /gui/default]
quickstart.build=0.0.0.0_0_0_6_2_.20160414
quickstart.properties not found, initial install
UpgradeUtil.handleInstallAndUpgrade has mode INSTALL
Saving build number in quickstart.properties
Upgrade: no files to restore from pre-upgrade backup
33 files extracted from jar file
Running chmod +x /opt/aem/author/crx-quickstart/bin/start
Running chmod +x /opt/aem/author/crx-quickstart/bin/stop
Running chmod +x /opt/aem/author/crx-quickstart/bin/status
Running chmod +x /opt/aem/author/crx-quickstart/bin/quickstart
Running chmod +x /opt/aem/author/crx-quickstart/opt/helpers/crx2oak.sh
Not starting the Quickstart server as the -unpack option is set
Quickstart files unpacked, server startup scripts can be found under /opt/aem/author/crx-quickstart
|
Modify temporary directory,
Code Block |
---|
CQ_JVM_OPTS # may modify in serverctl or start script |
...
Author Server
Rename file,
Code Block | ||
---|---|---|
| ||
mv cq-quickstart-6.2.0.jar cq-author-p4502.jar |
This will result in an author instance running on port 4502.
Publish Server
Rename file,
Code Block | ||
---|---|---|
| ||
mv cq-quickstart-6.2.0.jar cq-publish-p4502.jar |
This will result in an publish instance running on port 4502.
Next Steps
In a large organization you will also need to consider the following,
- Brochure and Onboarding - Key goal is to explain Explain what to expect and limitation enforced by your organization to be enterprise.
- Security - Restrictions to enforce
- Operations Runbook - DR procedures
- Author Development - ...
- Author Workflow - ...
- Author - ...
- Contributor - ...
- Subscriber - ...
- Get ready for Adobe 6.3 https://solutionpartners.adobe.com/home/news/2017/03/get_ready_for_adobe_.html
...
AEM Good Bad and Ugly - Pretty good technology feature with description dump.
Amazon Offering of AEM as a Service - (to Read) Possible ideas of how we setup explain our service. p15, interesting points on dynamic conent ESI, page 15 mod_rewrite in Apache prevent request passing to Dispatcher module.