implementing alfresco as a content platform with zaizi

20
Implementing Alfresco as a Content Platform Benjamin Chevallereau

Upload: alfresco-software

Post on 15-Jan-2015

1.480 views

Category:

Technology


3 download

DESCRIPTION

Slide deck to accompany Alfresco and Zaizi's webinar on implementing Alfresco as a content platform.

TRANSCRIPT

Page 1: Implementing alfresco as a content platform with zaizi

Implementing Alfresco as a Content Platform

Benjamin Chevallereau

Page 2: Implementing alfresco as a content platform with zaizi

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

Page 3: Implementing alfresco as a content platform with zaizi

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.

Page 4: Implementing alfresco as a content platform with zaizi

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.

Page 5: Implementing alfresco as a content platform with zaizi

Implementing Alfresco as a Content Platform

Zaizi is a Global company

Page 6: Implementing alfresco as a content platform with zaizi

Implementing Alfresco as a Content Platform

Alfresco Platform

Page 7: Implementing alfresco as a content platform with zaizi

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

Page 8: Implementing alfresco as a content platform with zaizi

Implementing Alfresco as a Content Platform

Questions that need to be asked

!  How to develop ? !  How to package ? !  How to test ? !  How to maintain ?

Page 9: Implementing alfresco as a content platform with zaizi

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

Page 10: Implementing alfresco as a content platform with zaizi

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

Page 11: Implementing alfresco as a content platform with zaizi

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

Page 12: Implementing alfresco as a content platform with zaizi

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.

Page 13: Implementing alfresco as a content platform with zaizi

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

Page 14: Implementing alfresco as a content platform with zaizi

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.

Page 15: Implementing alfresco as a content platform with zaizi

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.

Page 16: Implementing alfresco as a content platform with zaizi

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,

!   ...

Page 17: Implementing alfresco as a content platform with zaizi

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.

Page 18: Implementing alfresco as a content platform with zaizi

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.

Page 19: Implementing alfresco as a content platform with zaizi

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

Page 20: Implementing alfresco as a content platform with zaizi

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