Hippo TechWP Understanding Hippo CMS 7 Software Architecture
Hippo TechWP Understanding Hippo CMS 7 Software Architecture
Understanding
Hippo CMS 7
Software Architecture
Introduction
This document describes the architecture of Hippo CMS on an abstract level. This document aims
to provide the basic understanding of the Hippo CMS software architecture to enable Architects to
define their custom requirements for their specific IT ecosystem.
Colofon
Author: Woonsan Ko
Get in touch with Hippo: [email protected]
North America: +1 877 414 47 76 (toll free)
Europe: +31 20 522 44 66
Amsterdam Boston
Whitepaper
Table of Contents
1. Introduction
Actors List
2. Quality Attributes
User/Usability Considerations
Runtime Qualities
Availability
Interoperability
Manageability
Performance
Reliability
Scalability
Security
Design Qualities
Modifiability
Maintainability
Reusability
System Qualities
Supportability
4. Software Architectures
Overall Views
Content Production
Content Delivery
Security Concerns
10
Module View
10
10
11
5.
Summary
12
6.
References
12
Amsterdam Boston
Whitepaper
1. Introduction
For testers,
this will help understand how systems can be integrated
Amsterdam Boston
Whitepaper
Actors
Use Cases
Web User
Search Content
Site
View Content
Search Content
Author
CMS users who can create and
edit content in the system, but
normally cannot publish the
Search
Engine
Web
User
View Content
Editor
Social
Application
Edit Content
from authors.
Webmaster
comments on an article.
Syndicate Content
Content
Subscriber
personas.
Administrator
CMS
Author
Manage Publication
Author Content
of the content.
Manage Publication
Manage Channel
engines.
Editor
Manage Channel
Manage Persona
Manage Persona
Author Content
Content Subscriber
Search Engine
Syndicate Content
and personalization.
Webmaster
Migrate Content
Administrator
Migrate Content
External
Content
Source
Amsterdam Boston
Whitepaper
S
upports enterprise search engine integration.
E
nables industry standards based communications
shows higher level use cases. Please note that the actors
3. Quality Attributes
documents.
C
ontent migration support from external sources in
various formats such as XML and image files.
User/Usability Considerations
Performance
Meets performance needs for online business. System
have to be responsive to execute any action within a given
time interval.
Reliability
system.
E
nables to target and personalize to any visitor based
on context, behavior, geography and profile data.
E
asy management of rich media files such as images
and asset files, and seamless integration for streaming
Scalability
P
rovides social and community features that can be
incorporated into existing sites for sharing of opinions,
P
rovides safe and secure access, and supports access
control with user groups on domain rules.
S
upports integration with industry security standards
S
upports customization and plugging in custom
C
onforms web standards (e.g., W3C XHTML, CSS, etc.).
S
upports search engine optimizations for website.
Amsterdam Boston
Whitepaper
Design Qualities
Reusability
Modifiability
C
omponents and subsystems should be designed to
S
upport templates to be applied to new and existing
S
upport plugin architecture. Developers should be able
to add functionalities with plugins easily.
System Qualities
Supportability
S
hould provide information helpful for identifying and
Maintainability
S
hould be easy to undergo changes on components,
services, features and interfaces when adding or
changing functionalities, fixing errors, and meeting new
business requirements.
Amsterdam Boston
Whitepaper
System Overview
Browser
Client
Application
Server (1)
Lucene
Index (1)
ht
tp
http
CouchBase
Server
DBMS
HTTPd
r RM
JCR
Content
Subscriber
Load
Balancer
Application
Server (n)
(ov
er W
ebD
AV
o
RS
S/
At
om
Search
Engine
JCR Client
Lucene
Index (n)
4. Software Architecture
Overall Views
Deployment View
The following deployment view shows a simplified deployment with core systems. For simplicity, it just shows a typical
simple deployment, without considering specific concerns such as security, caching options,
etc. in detail.
Content Subscribers (e.g., RSS/Atom feed clients) can retrieve contents
through content syndication protocols.
JCR Clients can communicate with the repository, which can be
deployed onto the same Application Server node as shown above or a
separate Application Server node, through the JCR API. The underlying
connection for JCR API for remote clients can be either WebDAV or
RMI. By the standard of JCR API, JCR Clients can communicate with
the repository in either client-server invocation style or asynchronous
event subscription style.
The content delivery web application, SITE, can be deployed onto any
The repository server module, Repository, can be deployed onto an
application server together with the CMS web application, but also can
be deployed onto a separate application server or as a separate web
application.
Each repository instance has its own Lucene index, while all the cluster
repository nodes should share the same DBMS.
Hippo CMS can leverage CouchBase as separate server installation for
storing visitor data used for targeting and analytics.
Hippo repository supports various DBMS such as MySQL, PostgreSQL,
Oracle, MS SQL, Amazon RDS and IBM DB2.
System Admin Tools are mostly web-based applications and can
be deployed onto any JEE compliant servlet containers. System
administrators can also use JMX tools to monitor JVMs and Content
WebSphere, etc.
The content production web application, CMS, can be deployed onto
Content Import Tool application, which imports XML files and binary
files into the repository, can be deployed onto any JEE compliant
Amsterdam Boston
Whitepaper
User Session
Document
Wizard Plugin
Main
Dashboard
Perspective
Plugin Config
Service
Hippo JCR
Repository
JCR Session
Document
History Plugin
Plugin Page
Todo List
Plugin
Plugin Config
Browse
Perspective
Folder Tree
Plugin
Admin
Perspective
Document List
Plugin
Reports
Perspective
Targeting
Perspective
Channel
Manager
Perspective
Experience
Optimizer Plugin
Google Analytics
Plugin
Channel
Manager
Login Page
Like normal Apache Wicket applications, a page component consists
of descendant components. In addition, the CMS Frontend Plugin
Architecture allows dynamic plugin components aggregation, at
runtime, which can be configured in the repository, without having to
know all the descendant components at design time.
With rich component set of Wicket based plugins, native Wicket AJAX
support and extensions of ExtJS and jQuery by Hippo, usability can be
maximized.
WicketApplication is just a standard Apache Wicket filter, and Main
is the entry point Wicket application which shows homepages such
PluginPage consists of multi ple Perspective plugin components and each
Perspective plugin component consists of multiple child plugin components.
For example, Dashboard Perspective plugin component consists of
Document Wizard, Document History, Todo List, Folder Tree, Document
List plugin components, etc.
A plugin component can contain multiple child plugin components
by defining configurations in the repository, which increases
customizability, maintainability and reusability.
All component may use the JCR Session in the UserSession to retrieve/
update content in the repository through JCR API. Also they may use
Hippo Repository API to handle virtual nodes and workflows.
Because it has to communicate with SITE web application at runtime
Amsterdam Boston
Whitepaper
HST Core
HST Client
HST JAXRS
HST Security
HST Commons
HST API
HST Mock
Hippo
Repository API
JCR API
HST Rewriter
The figure above shows module dependencies of the Hippo Delivery Tier:
HST Core is the core module of the Hippo Delivery Tier, including
component manager, pipeline, valves, component invoker, etc.
HST Client is the base module for Content Delivery applications such
as custom HSTComponents, containing base component classes,
utilities, etc.
HST JAXRS contains RESTful API support components based on
JAX-RS standard. Custom JAXRS Resource Beans can be implemented
based on the JAX-RS standard and configured with this module in the
Spring Framework configurations.
HST Security contains authentication/authorization support for
websites, including JAAS and form based authentication support.
Spring Security Framework can be configured with this, too, in order to
support various security requirements such as SiteMinder integration,
Enterprise SSO integrations, etc.
HST Session Pool has JCR Session pool support, with sophisticated
resource management and JMX management features.
HST Content Beans has Object-Content mapping support, which allows
to map JCR content nodes to POJOs and vice versa.
HST Rewriter has HTML content rewriting support with link and image
rewriting features.
HST Commons has default implementations of standard interfaces and
common utilities.
HST API provides all the standard APIs of the Hippo Delivery Tier.
HST Mock contains some necessary mocking classes for easy unit
testing, which increases testability.
The Content Delivery Framework depends on Hippo Repository API
and JCR API.
Amsterdam Boston
Whitepaper
SSO
LDAP
Server
httpd authenticates the secured resources by mod_shib2 module, which invokes Shibboleth
Daemon. Shibboleth Daemon mayServer
communicate with
Enterprise Shibboleth Identity Provider via SAML/HTTPS.
If the user is successfully
authenticated by the handshakes between Client Browser and Shibboleth Identity Provider, then httpd will do reverse
http/s
Browser
HTTPd
proxy to Client
Tomcat.
Application
Server
DBMS
If the user is authenticated in the httpd level by mod_shib2 module and Shibboleth Daemon, then it is regarded as pre-authenticated state from
the viewpoint of Java Web Applications on Tomcat.
< artifact
>
< < the
artifact
>>
< < artifact
> > which should be provided by
Spring Security Framework Filter initializes<proper
user> principal
based on
pre-authenticated
user
information,
SSL
Now, HST-2 Container can use the initialized user principal on serving secured page resources.
Also, CMS Frontend Application can create a user JCR session based on the initialized user principal.
< < artifact > >
Form
Authentication
Configuration
In many cases, HTTPd or other reverse proxy layer node can redirect to
the Enterprise SSO Server for authentication required clients and the
request can be redirected back with a valid security token.
Enterprise SSO Server such as SiteMinder can be accessed by
applications on the Application Server to validate the security tokens if
needed.
CMS and site applications on Application Server can also authenticate
users against LDAP Server if configured.
CMS and site applications on Application Server can also authenticate
users by either Form Authentication or JAAS or Spring Security
Integration. If Enterprise SSO Server is used, Spring Security
Integration is capable of integrating with it seamlessly.
Amsterdam Boston
10
Whitepaper
WCMS
< < artifact > >
mod_shib2
Browser
Client
Apache2
HTTPd
Tomcat
Shibboleth
Deamon
>>
ttp/s
<<h
Enterprise
Federated
Security
Resources
Shibboleth
Identity Provider
LDAP Server
The Apache HTTPd Server has authentication configuration for
secured resources (e.g., /cms, /SITE/secured/articles/, etc.) with
Shibboleth authentication option. For the Shibboleth authentication
option, the Apache HTTPd Server invokes mod_shib2 module which is
deployed onto the server.
The mod_shib2 module communicates with Shibboleth Daemon to
request authentication through either Unix socket or TCP socket based
on configuration.
Shibboleth Deamon may initiate user sessions, manage the sessions
Shibboleth Deamon is configured by shibboleth2.xml. Because the
authentication information should be used in Java Applications
connected through either mod_proxy or mod_jk2, Shibboleth Daemon
should be configured to leave the authentication information as HTTP
Headers.
For authenticated user session, Apache HTTPd Server will serve Java
Web Applications (e.g., Content Production Application and Content
Delivery Application) hosted by Tomcat, which is connected by either
mod_proxy or mod_jk2.
CMS (Content Production) Application and SITE (Content Delivery)
Application can be configured with Spring Security Framework
enabled. Spring Security Framework can read the pre-authenticated
for the specified time duration, let Browser Client be redirected to the
themselves.
CMS (Content Production) Application should be configured to
synchronize the user data from the LDAP Server.
Amsterdam Boston
11
Whitepaper
About Hippo
At Hippo, we believe, digital is here to make our lives a
Resources
1. Hippo Campus Community
http://www.onehippo.org
6. Shibboleth Documentation
https://wiki.shibboleth.net/confluence/
dashboard.action
2. Spring Framework
http://www.springsource.org/spring-framework
https://www.switch.ch/aai/docs/shibboleth/
http://static.springsource.org/spring-security/
SWITCH/2.0/sp/deployment-sp-2.0-debian-
site/
4.0.html
4. Apache Wicket
http://wicket.apache.org
5. Shibboleth (Internet2)
site/docs/3.1.x/reference/preauth.html
http://en.wikipedia.org/wiki/
Shibboleth_%28Internet2%29
Amsterdam Boston
12