Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform

Embed Size (px)

Citation preview

  • 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]