• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform by Zaizi (Alfresco Platinum Partner)
 

Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform by Zaizi (Alfresco Platinum Partner)

on

  • 1,388 views

Alfresco is a scalable repository that can be used as the foundation for an organisation's content and collaboration stack. ...

Alfresco is a scalable repository that can be used as the foundation for an organisation's content and collaboration stack.

Join Zaizi, Alfresco Platinum Partner as they share their practical experience of implementing Alfresco as a secure and scalable content platform for a multinational trading business.

The presentation will demonstrate how a Alfresco has been developed and used as an enterprise content application framework.

Statistics

Views

Total Views
1,388
Views on SlideShare
1,349
Embed Views
39

Actions

Likes
2
Downloads
0
Comments
0

2 Embeds 39

http://www.chevallereau.eu 28
http://www.linkedin.com 11

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Hi, my name is Benjamin Chevallereau and I’m working as Solution Architect for a company called Zaizi. The goal of this presentation is to explain you how we implemented Alfresco as a content platform during all phases of the development process.\n
  • So the summary of this presentation, I will give you some information about Zaizi and our experience on big Alfresco implementations. \n\nAfter, I will introduce briefly Alfresco as a platform, but I will assume that you have some knowledge on Alfresco. \n\nIf you’re new to Alfresco, you can visit Alfresco.com to learn more. \n\nNext, I will define more precisely in which context we worked for a big global company. \n\nAnd finally, I will give you all elements of how we solved the main part of our problems during all steps of the process development.\n
  • Zaizi is a consultancy and systems integrator specialising in assembling smart content solutions using Alfresco, Liferay, Ephesoft and Solr. \n\nWe are an Alfresco Platinum partner and Ephesoft Platinum partner, Ephesoft is a scanning solution.\n\nWe built and delivered wide range of enterprise solutions including document and web content management systems, portals and corporate extranets on Alfresco. \n\nThese projects are mainly built for the UK market, but we already deployed projects in Europe and Africa.\n
  • Zaizi has several years of experience on Open Source Enterprise Content management and we focused on these technologies. \n\nOur engineers comes from everywhere in the world and architected, implemented and reviewed most of the major Alfresco and Liferay deployments in Europe.\n\nWe have already provided expert assistance to other systems integrators.\n\nZaizi is the most active company in the Alfresco community and we want to continue this major effort.\n\nWe already contributed code to Alfresco for inclusion in core product and we hope to continue. Zaizi and Alfresco have a very closed relationship and we hope to contribute again.\n\nAnd finally, thanks to our very strong experience, we are recommended by Alfresco and Liferay the most challenging of implementations. \n
  • Zaizi’s headquarter are based in London but we are a global company. We have an office in Spain, South Africa and Sri Lanka. Today, about 30 people work for Zaizi.\n
  • Alfresco provides 3 main components: \n* Document management: it means that Alfresco delivers full ECM functionality to manage any content – Documents, Images, Video and Audio in A single unified repository. \n* Web content management: Alfresco provides all functionalities to author, collaborate and publish your web content to Drupal, Liferay or your own webapp.\n* Collaboration: Alfresco Share is a modern, browser-based platform for social content management and collaboration.\n\nAnd finally, all these components are based on the Alfresco content platform which is an open source and open standards Java content platform for building any content-rich application.\n\n\n\n\n
  • This webinar is based on a real project that we are doing for a big global company. This one is divided in several subsidiaries! The goal of the Alfresco project is to provide an ECM solution globally as a content platform and to simplify the development, the deployment and the maintenance across the global company.\nTypically, each subsidiary manages his own Alfresco instance. These one contains some features that must be deployed in all subsidiaries. Each instance is after based on several physical servers deployed all over the world.\n
  • In this complex structure, we have to answer to all these questions to be the more efficient as possible and the more cost effective. These questions are:\n* How to develop? It means what are the best practises to develop on Alfresco, to ensure the reusability of components...\n* How to package ? It means what is the best way of packaging depending of the constraints of the project, the architecture and the deployment step.\n* How to test? It means that we have to check that the custom code developed works correctly and that there is no conflicts between modules or packages.\n* And finally how to maintain? It means that we have to check the good health of servers.\n
  • So we start by the development step. Of course, a best practice is to use a version control system. It seems very trivial, but it happens often to start to develop on Alfresco modifying directly the local Alfresco instance and to forgot which files that are modified. And during the packaging step, some work can be simply lost!! The combination with a bug tracker (like JIRA) is highly recommended too.\nThe Alfresco content platform is based on a Java framework called Spring. So, the use of an IDE is highly recommended, and more particularly the tool called SpringSource Tool Suite. This one contains all necessary plugins to start to develop on Alfresco. This one is based on Eclipse so you can easily other plugins like a FreeMarker editor...\nAn other very interesting plugin is JRebel. 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!!\nAnd finally, it’s highly recommend to use a Maven repository to easily create new module, to package it and to deploy it locally or remotely. Maven will simplify really the development in a distributed team.\n \n
  • On this slide, I just want to remind you some of the best practices to follow during an Alfresco project.\nAlways, use the extension mechanism provided by Alfresco. So you can use all extension folders and all extensions point provided through Spring.\nAlways package your custom code as AMP or JAR file, install it in a vanilha Alfresco and run your tests following this way.\nPackage your own code related to a same feature in only one file. It will simplify the reusability of your development.\nAlways test locally your code, using JUnit for example.\nAn other important recommendation is to use namespaces everywhere it’s possible!!\nAnd finally, use Maven to manage your extension (to create using archetypes and to publish) and your delivery package.\n
  • We use Maven for all our projects but the use of it in a complex structure like this is really very useful. Furthermore, our development team is located in different countries, and Maven simplify the packaging and the deployment of release.\nNext, we use JUnit to test locally but remotely too. The use of JUnit allows to do reporting test to ensure the quality of your own development,\nFor the code quality, we use Sonar to check that coding rules are respected, to launch unit tests and to check usual metrics!\nAnd finally, we use selenium to run smoke tests before JUnit tests to check that the Alfresco instance is running without problems. Selenium can be used to do more tests using the web user interface.\n
  • About best practises on testing, of course, all custom code should be tested with JUnit.\nThese tests can used locally and remotely.\nMore complex JUnit tests can be used for performance tests.\n
  • Here is the global process of packaging that we use for this kind of complex project. As I presented previously, we use SpringSource Tools Suite (STS) as IDE. First, each STS project are stored in a version control system, and more particularly subversion in our case. All theses projects are usually generated using Maven and archetypes created by ourselves or directly by Alfresco. Each STS project corresponds to a specific Alfresco module. These ones can be packaged as AMP or JAR files. The next step is to combine and to pick up Alfresco modules that we want and to integrate them with the Alfresco webapp or the Share webapp. This step is done with Maven too. And finally, when the generated RPM was tested locally, we can released it to Maven. This one will be available to be installed in the right Alfresco instance and the right server.\n
  • Alfresco provides a lot of extension mechanism at different levels. So, it’s very important to understand correctly all these mechanisms.\nThe common way to package Alfresco extension is to use AMP files or JAR files.\nMaven should be one of the most important tool that you use to build and to manage extensions and projects. To maximize and to simplify the management of your Maven repository, you can combine it with Nexus.\n
  • During the deployment phase, we have already packaged all Alfresco extension, combined them with Alfresco and Share and released them in Maven. During this step, we have to deployed these RPMs on each server. Of course, we suppose that servers run in a compatible OS with RPM like RedHat or Ubuntu.\nBut before to deploy them, we have to configure each server. This configuration is done automatically with Puppet. This tool give systems administrators the way to setup efficiently and very quickly a new server. I guess that you know that Alfresco needs some pre-requisites like ImageMagick, OpenOffice, SWF tools... We have to configure Apache too... And all these tasks can be done directly by Puppet.\nNext you can use directly a module management tool like YUM.\nThis process allows to increase reusability of our modules and to improve the quality of our delivery.\n\n
  • Again, but it’s very important, Maven should be really used to manage your Alfresco projects.\nUsually, you have to provide 2 different RPM: 1 for the alfresco engine and the other one for Alfresco Share. These RPMs include your custom module.\nThe use of a standard module management tool, like YUM, is highly recommended. During the installation, we can check a lot of pre-conditions. For example, we can check if Tomcat is running, if it’s not the case, we can shutdown it and restart it after the installation.\nAnd finally, the use of Puppet allows to automate the setup, the configuration and the deployment of Alfresco. To automate these tasks ensure that servers are all configured using the same way.\n
  • After development, packaging, and deployment, we have to ensure that Alfresco servers are correctly running.\nAlfresco enterprise provides a JMX interface that gives systems administrators to access to Alfresco configuration and to start some maintenance jobs if it’s necessary. By default, Alfresco exposes a lot of beans by default. But, it’s of course possible to add new bean in your Alfresco extensions.\nAnd finally, we can use AppDynamics and JMeter to manage performance of Alfresco. AppDynamics is a performance management solution, highly focused on managing the performance and availability of applications across cloud computing environments.\n
  • JMX is very powerful and very useful but has to be used with caution. Modifications done through JMX are not persisted. So, you will forgot all modifications after a restart of Tomcat. So, the configuration shouldn’t be modified in production environment using JMX.\nBut JMX will be very useful to enable or to disable logs dynamically to identify a potential issue in production.\nDuring the development step, JMX can be very useful to find the right configuration.\nFinally, AppDynamics (combined with Jmeter) is a perfect tool to monitor Alfresco servers in a cloud environment. It’s a very powerful tool and useful to report issues.\n
  • Here is a big picture of our development process and all the tools that we used. Roughly, we use STS to develop, we store all extensions in Subversion and we use Maven to manage our package and projects. Sonar is used to evaluate the quality of our development. Next, we use puppet with yum to setup an Alfresco instance and to deploy a package in a complex environment. After that, we use JMX to manage our Alfresco instances and AppDynamics to ensure the good health of our servers.\n
  • So, I hope that this webinar was interesting. Here is my complete contact information details.\nDo you have any questions ?\n

Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform by Zaizi (Alfresco Platinum Partner) Zaizi Alfresco Solution: Implementing Alfresco as a Content Platform by Zaizi (Alfresco Platinum Partner) Presentation Transcript

  • Implementing Alfresco as a Content PlatformBenjamin Chevallereau
  • 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 ConclusionImplementing 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 companyImplementing Alfresco as a Content Platform
  • Alfresco PlatformImplementing Alfresco as a Content Platform
  • Context Company Company Company Dept A Dept B Dept A Dept B Dept C New york Paris Chicago London SingaporeImplementing 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 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
  • 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
  • Testing and quality phase We use Maven to package locally and to deploy locally or remotely. Version Control 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; Launch unit tests; Development 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
  • 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. WorkstationImplementing Alfresco as a Content Platform
  • Packaging phase Version Control System STS Projects Create an Eclipse project per module. Package a coherent set of customisation in a same package, AMP 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
  • 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 nature. AMP 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
  • 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 London in 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
  • Best Practises Use Maven as a module repository. Provide 2 RPMs per Alfresco Singapore instance : Alfresco and Share. New York London Use a standard module Paris Chicago management tool to deploy RPMs like YUM. Dept A Dept B Dept A Dept B Dept C Use puppet to manage the global process of deployment: Configuration, Deployment, ...Implementing Alfresco as a Content Platform
  • 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
  • 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
  • Big picture JMX Version Control System Development Workstation STS Projects AMP Generate Dept C Singapore Dept B London Chicago Dept A Dept A Dept B New York ParisImplementing Alfresco as a Content Platform
  • Contact us Benjamin Chevallereau, Solutions Architect Zaizi Limited Thank You 222 Westbourne Studios 242 Acklam Road London W10 5JJ Phone: +44 20 3582 8330 Mobile: +44 77 8047 2123 Email: bchevallereau@zaizi.com Skype: bchevallereauz www.zaizi.comImplementing Alfresco as a Content Platform