Zaizi is a consultancy that specializes in implementing Alfresco content management systems. They discuss best practices for developing, testing, packaging, deploying and maintaining Alfresco implementations. This includes using version control, Spring, Maven and JUnit for development, packaging customizations as AMP modules, deploying with Puppet, and monitoring performance with JMX and tools like AppDynamics. The goal is to build reusable modules and a repeatable implementation process.
2. 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
3. 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.
! Weare an Alfresco certified Platinium Partner, Ephesoft
Platinium Partner and Red Hat Enterprise Linux Ready
Partner.
Implementing Alfresco as a Content Platform
4. 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
5. Zaizi is a Global company
Implementing Alfresco as a Content Platform
7. 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
8. Questions that need to be asked
! How
to develop ?
! How
to package ?
! How
to test ?
! How
to maintain ?
Implementing Alfresco as a Content Platform
9. Development phase
Version Control
System
! 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.
Development
! Alfresco has made Spring the core foundation of its architecture. Workstation
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.
Implementing Alfresco as a Content Platform
10. Best Practises
Version Control
! Always use the extension mechanism provided by Alfresco using System
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.
Development
Workstation
! 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.
Implementing Alfresco as a Content Platform
11. Testing and quality phase
! We use Maven to package locally and to deploy locally or
Version Control
remotely.
System
! 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;
Development
! Launch unit tests;
Workstation
! Check standards metrics.
! The use of Selenium can be used as smoke test before
JUnit tests to check the good healthy of the server.
Implementing Alfresco as a Content Platform
12. Best Practises
Version Control
System
! 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
Development
performance tests.
Workstation
Implementing Alfresco as a Content Platform
13. Packaging phase
Version Control
System
STS Projects
! Create an Eclipse project per module.
! Package a coherent set of
AMP
customisation in a same package,
called an AMP : Alfresco Module
Generate
Package.
! Aggregate all AMPs in a same RPM to
deliver in a specific project.
Implementing Alfresco as a Content Platform
14. Best Practises
Version Control
System
! It s important to understand the
extension mechanism provided by
Alfresco.
STS Projects
! AMP modules or JAR files can be
used to package customisation
depending of the customisation
AMP
nature.
Generate
! 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
15. Deployment phase
! A RPM module contains several AMP
modules developed and tested
individually. These module contains, of
course, Alfresco and Share too.
Singapore
New York
! After packaging and deploying RPM in London
Maven, we use puppet :
Paris
Chicago
! To install all pre-requisites,
Dept A
Dept B
Dept A
Dept B
Dept C
! 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
16. Best Practises
! Use Maven as a module repository.
! Provide 2 RPMs per Alfresco Singapore
instance : Alfresco and Share.
New York
London
Paris
! Use a standard module management Chicago
tool to deploy RPMs like YUM.
! Use puppet to manage the global Dept A
Dept B
Dept A
Dept B
Dept C
process of deployment:
! Configuration,
! Deployment,
! ...
Implementing Alfresco as a Content Platform
17. Maintenance and monitoring phase
JMX
! The JMX interface allows System
Administrators to access Alfresco Enterprise
via a standard JMX console.
Singapore
New York
London
! Alfresco provides a lot of beans to execute Paris
Chicago
tasks like:
! Start a new synchronisation,
Dept A
Dept B
Dept A
Dept B
Dept C
! Empty cache,
! ...
! AppDynamics and JMeter can be used to
manage performance of Alfresco or servers.
Implementing Alfresco as a Content Platform
18. Best Practises
JMX
! In production, JMX should be used with
caution. Modifications are not persisted after a
server restart.
Singapore
New York
London
! In production, JMX is very useful to enable/ Paris
disable logs to identify a problem, or to start Chicago
some automatic jobs.
Dept A
Dept B
Dept A
Dept B
Dept C
! 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
19. Big picture
JMX
Version Control
System
Development Workstation
STS Projects
AMP
Generate
Dept A
Dept B
Dept C
Singapore
London
Chicago
Dept A
Dept B
New York
Paris
Implementing Alfresco as a Content Platform
20. Contact us
Benjamin Chevallereau,
Solutions Architect
Zaizi Limited
222 Westbourne Studios
Thank You
242 Acklam Road
London W10 5JJ
Phone: +44 20 3582 8330
Email: bchevallereau@zaizi.com
Skype: bchevallereauz
www.zaizi.com
Implementing Alfresco as a Content Platform