Implementing Alfresco as a Content Platform Benjamin Chevallereau
Jan 15, 2015
Implementing Alfresco as a Content Platform
Benjamin Chevallereau
Implementing Alfresco as a Content Platform
Summary
! Zaizi’s 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
Implementing Alfresco as a Content Platform
Zaizi
! Zaizi is a consultancy and systems integrator specialising in assembling smart content solutions using Alfresco, Liferay, Ephesoft and Solr.
! Our team have experience building and delivering a wide range of enterprise solutions including document and web content management systems, portals and corporate extranets on Alfresco.
! We are an Alfresco certified Platinium Partner, Ephesoft Platinium Partner and Red Hat Enterprise Linux Ready Partner.
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 of the 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.
Implementing Alfresco as a Content Platform
Zaizi is a Global company
Implementing Alfresco as a Content Platform
Alfresco Platform
Implementing 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
Implementing Alfresco as a Content Platform
Questions that need to be asked
! How to develop ? ! How to package ? ! How to test ? ! How to maintain ?
Implementing Alfresco as a Content Platform
Development phase
! Use a version control system
! It seems trivial, but it’s 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 on Alfresco.
! JRebel is a JVM-plugin that makes it possible for Java developers to instantly see any code change made to an app without redeploying. It allows to save a lot of time!!
! Use a Maven repository to easily create new module, to package it and to deploy it locally or remotely.
Version Control System
Development Workstation
Implementing Alfresco as a Content Platform
Best Practises
! Always use the extension mechanism provided by Alfresco using extension folders during the development part.
! Always package as AMP or JAR and test again after: It’s usual to forget some files during these steps...
! Package configuration files related to the same part in a same AMP module to increase the reusability of these modules.
! Always test extension locally, using, for example JUnit.
! Don’t forget to use namespaces everywhere it’s possible:
! Content model
! JAVA classes
! ...
! Use Maven archetypes to create new extension.
Version Control System
Development Workstation
Implementing Alfresco as a Content Platform
Testing and quality phase
! We use Maven to package locally and to deploy locally or remotely.
! 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 before JUnit tests to check the good healthy of the server.
Version Control System
Development Workstation
Implementing Alfresco as a Content Platform
Best Practises
Version Control System
Development Workstation
! All developers should define a JUnit test for each module.
! These tests should be executed on each development workstation and on a testing server.
! One or several JMeter scenarios should be defined for performance tests.
STS Projects
Implementing Alfresco as a Content Platform
Packaging phase
! Create an Eclipse project per module.
! Package a coherent set of customisation in a same package, called an AMP : Alfresco Module Package.
! Aggregate all AMPs in a same RPM to deliver in a specific project.
Version Control System
AMP
Generate
Implementing Alfresco as a Content Platform
Best Practises
STS Projects
Version Control System
AMP
Generate
! It’s important to understand the extension mechanism provided by Alfresco.
! AMP modules or JAR files can be used to package customisation depending of the customisation nature.
! Maven can be used to create RPM including several modules. These combination can be unique for a company or a department.
! Of course, these package must be tested entirely to avoid conflicts between modules.
Implementing 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 AMP modules developed and tested individually. These module contains, of course, Alfresco and Share too.
! After packaging and deploying RPM in Maven, we use puppet :
! To install all pre-requisites,
! To configure Tomcat, Apache and all third-party tools.
! To deploy easily using a module management tool like YUM.
! Using this process, we increase the reusability of our modules through the company and their departments.
Implementing 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 Alfresco instance : Alfresco and Share.
! Use a standard module management tool to deploy RPMs like YUM.
! Use puppet to manage the global process of deployment:
! Configuration,
! Deployment,
! ...
Implementing 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 System Administrators to access Alfresco Enterprise via a standard JMX console.
! Alfresco provides a lot of beans to execute tasks like:
! Start a new synchronisation,
! Empty cache,
! ...
! AppDynamics and JMeter can be used to manage performance of Alfresco or servers.
Implementing 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 with caution. Modifications are not persisted after a server restart.
! In production, JMX is very useful to enable/disable logs to identify a problem, or to start some automatic jobs.
! In development and test phase, JMX can be used to define the right configuration of a server dynamically.
! AppDynamics and JMeter should be used to monitor servers but to identify some performance problems too.
Implementing Alfresco as a Content Platform
Big picture
Version Control System
Development Workstation STS Projects
AMP Generate
Dept
A
Dept
B
Dept
A
Dept
B
Dept
C
Singapore
London
Chicago
New York
Paris
JMX
Implementing Alfresco as a Content Platform
Contact us
Benjamin Chevallereau,
Solutions Architect
Zaizi Limited
222 Westbourne Studios
242 Acklam Road
London W10 5JJ
Phone: +44 20 3582 8330
Email: [email protected]
Skype: bchevallereauz
www.zaizi.com
Thank You