8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
1/20
Implementing Alfresco as a Content Platform
Benjamin Chevallereau
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
2/20
Implementing Alfresco as a Content Platform
SummaryZaizis Background
Alfresco Platform
Context and problematic
How to solve it in the
development phase
quality phase
development phase
packaging phase
deployment phase
maintenance phase
Conclusion
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
3/20
Implementing Alfresco as a Content Platform
Zaizi
Zaizi is a consultancy and systems integratorspecialising in assemblingsmart content solutionsusing Alfresco, Liferay, Ephesoft and Solr.
Our team have experience building and delivering a widerange of enterprise solutions including document andweb content management systems, portals andcorporate extranets on Alfresco.
We are an Alfresco certified Platinium Partner, EphesoftPlatinium Partner and Red Hat Enterprise Linux ReadyPartner.
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
4/20
Implementing Alfresco as a Content Platform
The Zaizi Advantage
Specific focus on Open Source Enterprise Content management.
Our engineers have architected, implemented and reviewed most ofthe major Alfresco and Liferay deployments in Europe.
Provided expert assistance to other system integrators.
Most active in the Alfresco community.
Contributed code to Alfresco for inclusion in core product.
Some of our engineers used to work for Alfresco.
Recommended by Alfresco & Liferay for the most challenging
of implementations.
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
5/20
Implementing Alfresco as a Content Platform
Zaizi is a Global company
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
6/20
Implementing Alfresco as a Content Platform
Alfresco Platform
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
7/20Implementing Alfresco as a Content Platform
Context
Company
Company Company
Dept A Dept B Dept A Dept B Dept C
New york Paris Chicago London Singapore
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
8/20Implementing Alfresco as a Content Platform
Questions that need to be asked
How to develop ?
How to package ?
How to test ?
How to maintain ?
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
9/20Implementing Alfresco as a Content Platform
Development phase
Use a version control system
It seems trivial, but its a common mistake to modify directly files in the
deployed folder corresponding to Alfresco.
Should be linked to an issue and bug tracker like JIRA.
Alfresco has made Spring the core foundation of its architecture.So, SpringSource Tool Suite seems to the best tool to develop onAlfresco.
JRebel is a JVM-plugin that makes it possible for Java developers
to instantly see any code change made to an app withoutredeploying. It allows to save a lot of time!!
Use a Maven repository to easily create new module, to packageit and to deploy it locally or remotely.
Version ControlSystem
DevelopmentWorkstation
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
10/20Implementing Alfresco as a Content Platform
Best Practises
Always use the extension mechanism provided by Alfresco usingextension folders during the development part.
Always package as AMP or JAR and test again after: Its usual to
forget some files during these steps...
Package configuration files related to the same part in a sameAMP module to increase the reusability of these modules.
Always test extension locally, using, for example JUnit.
Dont forget to use namespaces everywhere its possible:
Content model
JAVA classes
...
Use Maven archetypes to create new extension.
Version ControlSystem
DevelopmentWorkstation
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
11/20Implementing Alfresco as a Content Platform
Testing and quality phase
We use Maven to package locally and to deploy locally orremotely.
We use Unit and JMeter locally and remotely to:
Test that everything is running;
We use sonar for code quality to:
Check that coding rules are respected;
Launch unit tests;
Check standards metrics.
The use of Selenium can be used as smoke test beforeJUnit tests to check the good healthy of the server.
Version ControlSystem
DevelopmentWorkstation
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
12/20Implementing Alfresco as a Content Platform
Best Practises
Version ControlSystem
DevelopmentWorkstation
All developers should define a JUnit test for each module.
These tests should be executed on each developmentworkstation and on a testing server.
One or several JMeter scenarios should be defined forperformance tests.
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
13/20
STS Projects
Implementing Alfresco as a Content Platform
Packaging phase
Create an Eclipse project per module.
Package a coherent set ofcustomisation in a same package,called an AMP : Alfresco ModulePackage.
Aggregate all AMPs in a same RPM
to deliver in a specific project.
Version ControlSystem
AMP
Genera
te
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
14/20Implementing Alfresco as a Content Platform
Best Practises
STS Projects
Version ControlSystem
AMP
Genera
te
Its important to understand the
extension mechanism provided byAlfresco.
AMP modules or JAR files can be
used to package customisationdepending of the customisationnature.
Maven can be used to create RPMincluding several modules. Thesecombination can be unique for a
company or a department.
Of course, these package must betested entirely to avoid conflictsbetween modules.
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
15/20Implementing Alfresco as a Content Platform
Deployment phase
Dept A Dept B Dept C
Singapore
Dept A Dept B
London
Chicago
New York
Paris
A RPM module contains several AMPmodules developed and testedindividually. These module contains, ofcourse, Alfresco and Share too.
After packaging and deploying RPM inMaven, we use puppet :
To install all pre-requisites,
To configure Tomcat, Apache andall third-party tools.
To deploy easily using a modulemanagement tool like YUM.
Using this process, we increase thereusability of our modules through thecompany and their departments.
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
16/20Implementing Alfresco as a Content Platform
Best Practises
Dept A Dept B Dept C
Singapore
Dept A Dept B
London
Chicago
New York
Paris
Use Maven as a module repository.
Provide 2 RPMs per Alfrescoinstance : Alfresco and Share.
Use a standard module managementtool to deploy RPMs like YUM.
Use puppet to manage the globalprocess of deployment:
Configuration,
Deployment,
...
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
17/20Implementing Alfresco as a Content Platform
Maintenance and monitoring phase
Dept A Dept B Dept C
Singapore
Dept A Dept B
London
Chicago
New York
Paris
JMX
The JMX interface allows SystemAdministrators to access Alfresco Enterprisevia a standard JMX console.
Alfresco provides a lot of beans to executetasks like:
Start a new synchronisation,
Empty cache,
...
AppDynamics and JMeter can be used tomanage performance of Alfresco or servers.
http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/http://java.sun.com/javase/technologies/core/mntr-mgmt/javamanagement/8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
18/20Implementing Alfresco as a Content Platform
Best Practises
Dept A Dept B Dept C
Singapore
Dept A Dept B
London
Chicago
New York
Paris
JMX
In production, JMX should be used withcaution. Modifications are not persisted after aserver restart.
In production, JMX is very useful toenable/disable logs to identify a problem, or tostart some automatic jobs.
In development and test phase, JMX can beused to define the right configuration of aserver dynamically.
AppDynamics and JMeter should be used tomonitor servers but to identify someperformance problems too.
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
19/20
Implementing Alfresco as a Content Platform
Big picture
Version ControlSystem
Development Workstation
STS Projects
AMP Generate
DeptA
DeptB
DeptA
DeptB
DeptC
Singapore
London
Chicago
New York
Paris
JMX
8/2/2019 Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform
20/20
Implementing Alfresco as a Content Platform
Contact us
Benjamin Chevallereau, Solutions ArchitectZaiziLimited222 Westbourne Studios242 AcklamRoadLondon W10 5JJ
Phone: +44 20 3582 8330Mobile: +44 77 80472123Email: [email protected]:
bchevallereauzwww.zaizi.com
Thank You
mailto:[email protected]:[email protected]