2009-04-21 - Alfresco and Maven NXP case study


Published on

A introduction to Maven based development and lifecycle management for Alfresco architectures, based on the real life case study, NXP, ex Philips semi-conductors, which switched his complete ECM landscape to an open stack.

Published in: Technology
1 Like
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide
  • 10/21/08 21/10/08
  • 10/21/08 So, I guess a bit of background is necessary as I’m pretty new here ;) My name’s Gabriele Columbro, and I’ve been working for more than 3 years for Sourcesense (IT-NL) on big Alfresco implementations, ranging from Big semiconductors companies like NXP (case study) to e-Government projects like GovUnited.
  • 10/21/08 500+ paying support customers in less than 3 years and growing. By way of comparison it took Filenet over 12 years to achieve the same number!
  • 10/21/08 Customizations range to easy model/taxonomy, to new custom workflows/actions/UI configurations, to new feature development. Typical enterprise version customization are integration with proprietary/legacy systems.
  • 10/21/08 Extension is your war container (alfresco.war) in which multiple AMPs gets deployed into. One AMP Typical side effect is: web.xml overwriting due to multiple customizations
  • 10/21/08 What’s application
  • 10/21/08 Basic content services and CIFS, as well as check/in/out, versioning and document metadata support Advanced content manag e ment so workflows, custom business processes support, more specific custom developments.Also publishing and later web content management seemed to be in the scope of Alfresco. More in general what it’s important to underline is that this is the typical ECM landscape of a modern large company which business processes are fully dependent on IT services and ECM technologies (and lately on concepts like knowledge workers social collaboration). This is the reason for such complex and highly integrated architectures, and often enterprises are not yet ready to embrace/implement such complex architecture due to lack of basic Application Lifecycle management.
  • 10/21/08 The situation was exactly growing as in the early Lotus notes times, W ith application redundancy in both different geographic locations or different departments for the same functionality. Reproducibility is definitely the first important feature of an highly complex architecture, as manual composition / integration of our application is simply not possible. Testing and release (meaning clear versioning and distribution) are also mandatory when such a high number of customizations have to coexist and avoid side effects o n other bits of functionality. A dependency is not only a technical concept. I t’s much more: in an organization a dependency between two projects is actually identifying a prioritization and serialization Separate Business processes, separate business cases and separate owners. lifecycle management? It’s the bridge between software engineering and business processes, as it clarify communication to the business by the means of a clearly defined application lifecycle and standard procedures around it.
  • 10/21/08 Define processes means writing huge but digestable procedural document, but that’s the price we have to pay to have a clear business understanding of concepts like ECM and ALM. So for ECM it means a common model and taxonomy, which can be arbitrarily complex. For this we defines clear ALM processes based on maven to have standardization of project creation, development, release and deployment.
  • 10/21/08 Conceptual scheme of the integration @NXP. You can see as Custom business applications so separate business processes are developed as separate AMPs, that in the end get deployed on top of an alfresco repository Extension project (the ECM Foundation). Multiple applications and libraries (AMPs) are deployed into the repository extension. As Having a commons AMP package is
  • 10/21/08 Being a standard raises the possibility of enter major open source communities (especially for integrators). AMPS are non standard j2ee artifact so we developed and contributed A custom Maven plug-in capable of building AMPs and have a WAR dewas contributed
  • 10/21/08 My expertise is that Archetyping or prototyping reduces drastically the Time to market of an application both in a complex enterprise environment, b ut also and especially to speed up the prototyping and reuse of achievements for system integrators
  • 10/21/08 I don’t ask you to go into the details of this , but the interesting bits are from an organization POV, despite all rectangles represents different project locations and so separete business projects, by the means of dependency, inheritance and agggregation Project inheritance, used can centralize key common enterprise project features Project aggregation, to be able to manage multiple project at once We are also 100% open source ready as the AMP produced b
  • 10/21/08 -Team or community is under control and have to motivate why being out of standard (push rather than QA based pull) Scales pretty fine Alfresco 3.0 – > 3.1 took no more than 3 days and they are pretty different products - J i be Rationale: H aving a strong lifecycle management foundation (alongside with your ECM processes) allows to cope with complexity and easily adds new features. This means longevity for your architecture either if your are an enterprise architect or an integrator solution engineer.
  • 10/21/08 As I said Maven allows you to abstract
  • 10/21/08 As I said Maven allows you to abstract
  • 10/21/08 As I said Maven allows you to abstract
  • 10/21/08
  • 10/21/08 As mentioned in previous slide, Alfresco retains the control over the software versions and can therefore commit to levels of service for support. Add to this, UK support are in close physical proximity to Software Engineering which enables effective exchange of knowledge. The SLA’s are annual agreements and their price calculation is based on the project size / system architecture for the business solution. 
  • 10/21/08 As I said Maven allows you to abstract
  • 2009-04-21 - Alfresco and Maven NXP case study

    1. 1. Enterprise Development with Alfresco and Maven Prepared by [email_address] Hilversum, 21 st April 2009
    2. 2. A bit of introduction <ul><li>Gabriele Columbro </li></ul><ul><ul><li>ECM Architect on Alfresco for 2+ years with Sourcesense IT&NL </li></ul></ul><ul><ul><li>2 nd day in Alfresco as EMEA Field Consultant for Professional Services </li></ul></ul><ul><li>Focus </li></ul><ul><ul><li>ECM enterprise integration </li></ul></ul><ul><ul><li>Application Development best practices with Apache Maven </li></ul></ul><ul><li>Clients </li></ul><ul><ul><li>NXP, GovUnited, Banca Popolare di Milano </li></ul></ul>
    3. 3. Why Alfresco? <ul><li>Scales to Enterprise Wide Repository </li></ul><ul><ul><li>Benchmarks up to 100 million objects </li></ul></ul><ul><ul><li>Multi-tenancy and REST front-ends </li></ul></ul><ul><li>Reduces vendor lock-in </li></ul><ul><ul><li>Best of breed open source components </li></ul></ul><ul><ul><li>Integrate in rather than impose your stack </li></ul></ul><ul><li>Grows outstandingly in feature and support </li></ul><ul><ul><li>First CIFS Java implementation </li></ul></ul><ul><ul><li>Sharepoint protocol support </li></ul></ul><ul><ul><li>Social collaboration platform </li></ul></ul><ul><li>Biggest Open Source ECM player </li></ul><ul><ul><li>70,000 Community members </li></ul></ul><ul><ul><li>30,000+ Active installations </li></ul></ul><ul><ul><li>75 countries, 20 languages </li></ul></ul>It’s open source… we can customize it!
    4. 4. Alfresco customizations <ul><li>Custom Modelling </li></ul><ul><ul><li>Custom content model </li></ul></ul><ul><ul><li>Custom space taxonomy </li></ul></ul><ul><li>Custom User capabilities </li></ul><ul><ul><li>Custom UI configurations </li></ul></ul><ul><ul><li>Custom workflows </li></ul></ul><ul><li>New feature development </li></ul><ul><ul><li>Custom webscripts </li></ul></ul><ul><ul><li>Custom JSF components </li></ul></ul><ul><ul><li>Custom SURF components (as of 3.x) </li></ul></ul><ul><li>Integration with 3 rd party products </li></ul><ul><ul><li>LDAP/CAS </li></ul></ul><ul><ul><li>Liferay </li></ul></ul>
    5. 5. Customization packaging <ul><li>2 approaches with different purposes: </li></ul><ul><ul><li>Alfresco extension (WAR): environment dependent builds with core configurations ( classpath:alfresco/extension/* ) </li></ul></ul><ul><ul><li>Alfresco Module Package (AMP) AMPs should be (almost 100%) : </li></ul></ul><ul><ul><ul><li>mutually non intrusive (software module) </li></ul></ul></ul><ul><ul><ul><li>relocable </li></ul></ul></ul><ul><ul><ul><li>reusable with repository version limitations </li></ul></ul></ul><ul><ul><ul><li>self-contained in ( classpath:alfresco/module/*/** ) </li></ul></ul></ul>
    6. 6. NXP Case study <ul><li>40k employees global semiconductors enterprise disentangling from Philips </li></ul><ul><li>Alfresco as key building block of C3, enterprise content repository for the new redesigned architecture </li></ul><ul><li>Content and code reuse main driver of the C3 </li></ul><ul><li>Several parties involved in the huge migration and (up to) 800 customization projects </li></ul>
    7. 7. NXP C3 Architecture <ul><li>Alfresco as Basic Content Services (Versioning, Editing) </li></ul><ul><li>Alfresco as Advanced Content Management </li></ul>
    8. 8. Straighten your processes first <ul><li>NXP Goals: </li></ul><ul><ul><li>Get to the ultimate single sourcing enterprise content repository </li></ul></ul><ul><ul><li>Have multiple customizations being automatically packaged, tested, released and deployed to application servers </li></ul></ul><ul><ul><li>Manage a reproducible build aware of multiple environments (build and runtime configurations) </li></ul></ul><ul><ul><li>Dependency management versioning and centralized repository </li></ul></ul><ul><li>Early phases (2007) </li></ul><ul><ul><li>Multiple parties developing in isolation </li></ul></ul><ul><ul><li>Content silo high risk </li></ul></ul><ul><ul><li>Growing complexity (so TCO) of Alfresco production environment (multiple Alfresco WARs) </li></ul></ul><ul><li>NO design and processes in place for ECM and Application Lifecycle Management (Application Lifecycle </li></ul>
    9. 9. Alfresco SDK Enterprise limitations <ul><li>Project approach: </li></ul><ul><ul><li>Define ECM processes (ECM Foundation) </li></ul></ul><ul><ul><li>Define ALM processes (Application Lifecycle Document) </li></ul></ul><ul><ul><li>Use enabling ALM technologies to support ECM complex architectural integration challenges </li></ul></ul><ul><li>Alfresco SDK Limitations: </li></ul><ul><ul><li>The Alfresco SDK + MMT approach would have required a large amount of scripting and manual configuration </li></ul></ul><ul><ul><li>No explicit support to scale up and cope with enterprise complexity </li></ul></ul><ul><li>Apache Maven was chosen as reference technology for coping with complexity of modern ECM architectures </li></ul>
    10. 10. The Idea
    11. 11. What is Apache Maven? <ul><li>Is the standard de facto in open source Java based application lifecycle management </li></ul><ul><li>Allows to use standard commands to manage all software lifecycle phases from creation to release </li></ul><ul><li>Support project inter-dependencies (and dependency on the officially released Alfresco) and project binary repository </li></ul><ul><li>Maven AMP Plugin </li></ul><ul><ul><li>Packages AMPs </li></ul></ul><ul><ul><li>Allows an Extension WAR to depend on AMP (alternative to the MMT, done at build time) </li></ul></ul><ul><li>Real enabler for the growingly complex NXP architecture </li></ul>
    12. 12. Maven Enterprise Added value <ul><li>Maven Alfresco archetypes </li></ul><ul><ul><li>Provide easy project templates to standardize AMPs and Extensions development </li></ul></ul><ul><ul><li>Have your project up and running in few standard commands </li></ul></ul><ul><li>Dependency management </li></ul><ul><ul><li>You can express your runtime requirements </li></ul></ul><ul><ul><li>Enable complex inter-dependent project to be developed in isolation but deployed in integration </li></ul></ul><ul><li>Project inheritance and aggregation </li></ul><ul><ul><li>Centralize control of libraries </li></ul></ul><ul><ul><li>Centralize environments </li></ul></ul><ul><ul><li>Centralize release/versioning/documentation </li></ul></ul><ul><li>Nexus Enterprise Repository </li></ul><ul><ul><li>Searchable repository of your code assets gears reuse </li></ul></ul><ul><ul><li>Proxying multiple partners deliverables makes teams distributable </li></ul></ul>
    13. 13. Ideas come true
    14. 14. NXP Main Benefits <ul><li>Lower TCO: ~10 AMPs deployed on 1 Foundation repository </li></ul><ul><li>Fast upgrade with Alfresco versions, rolling out 3.1 in May (SHARE build and SharePoint protocol) </li></ul><ul><li>Multiple parties to cooperate under one standard controlled application development </li></ul><ul><li>Ready to use GA open source AMPs (Alfresco and 3 rd party) </li></ul><ul><li>Enforced per project documentation </li></ul><ul><li>Commons reusable model/customizations library </li></ul><ul><li>Automated testing w/Selenium and continuous integration </li></ul><ul><li>Maven integrates with Eclipse, NXP reference IDE </li></ul>
    15. 15. The Alfresco community side <ul><li>Maven Alfresco Archetypes http://repository.sourcesense.com/maven2-sites/maven-alfresco-archetypes </li></ul><ul><ul><li>Alfresco community versions based project templates </li></ul></ul><ul><ul><li>Alfresco Dependencies deployed at http://repository.sourcesense.com/maven2 </li></ul></ul><ul><li>Maven AMP Plugin http://repository.sourcesense.com/maven2-sites/maven-amp-plugin </li></ul><ul><ul><li>Used to package and depend on AMPs </li></ul></ul><ul><li>First release in July 2007, hype in downloads in January 2009 (contributor of the month) </li></ul><ul><li>Archetype v.3.x already supporting SHARE and centralized dependency control </li></ul><ul><li>Enable your work to be 100% open source ready and contributable!!! </li></ul>
    16. 16. Demo <ul><li>Run Alfresco in less than 5 minutes: </li></ul><ul><ul><li>Open Maven Alfresco Extension Archetype website: http://repository.sourcesense.com/maven2-sites/maven-alfresco-extension-archetype/ </li></ul></ul><ul><ul><li>Run the featured command: </li></ul></ul><ul><ul><ul><li>mvn archetype:generate -DarchetypeCatalog=http://repository.sourcesense.com/maven2/archetype-catalog.xml </li></ul></ul></ul><ul><ul><li>As described in the README-m2.txt , run : MAVEN_OPTS=&quot;-Xms256m -Xmx512m -XX:PermSize=128m mvn integration-test </li></ul></ul><ul><ul><li>Point your browser to: http://localhost:8080/alfresco/faces/jsp/dashboards/container.jsp </li></ul></ul><ul><li>Advantages: standard, reproducible, environment aware, no manual download </li></ul>
    17. 17. The power of open source http://www.mindthegab.com
    18. 18. Q/A <ul><li>Any question? </li></ul>
    19. 19. Conclusions <ul><li>Maven can be used as glue to scale out enterprise processes by technologies integration </li></ul><ul><li>Integrators can benefit as well of easy prototyping </li></ul><ul><li>A fool with a tool is still a fool. Focus on your ECM/ALM processes first </li></ul><ul><li>Understand what development approach fits you better ( Maven requires expertise but it’s open source ) </li></ul><ul><li>Get open source under control a with open source technologies ;) </li></ul>
    20. 20. The end! <ul><li>References: </li></ul><ul><ul><li>Gabriele Columbro: http://www.mindthegab.com </li></ul></ul><ul><ul><li>Sourcesense: http://www.sourcesense.com </li></ul></ul><ul><ul><li>Apache Maven: http://maven.apache.org </li></ul></ul><ul><ul><li>Maven Alfresco support: http://wiki.alfresco.com/wiki/Managing_Alfresco_Lifecyle_with_Maven </li></ul></ul><ul><ul><li>Nxp: http://www.nxp.com </li></ul></ul>