We’ll discuss the concepts of Application Lifecycle Management applied to Alfresco projects: by covering typical Alfresco Enterprise implementation scenarios like building a Proof of Concept, developing an Integration project or Benchmarking your custom deployment, we’ll provide an overview of the state of the art techniques and tools to provide your Alfresco projects with a quick, automated and standard lifecycle. We’ll also demo creating and growing an Alfresco project from scratch using Apache Maven and the Maven Alfresco Lifecycle project.
4. What is ALM?
Application Lifecycle Management is not just “the build”
(although we will focus mostly on that subset)
• Quoting Wikipedia:
“Application Lifecycle Management (ALM) is a continuous process of managing
the life of an application through governance, development and
maintenance. ALM is the marriage of business management to
software engineering made possible by tools that facilitate and integrate
requirements management, architecture, coding, testing, tracking, and
release management.[1]”
• It’s not about the tooling
it’s about how tools are connected to support processes
• Spans through all software & business disciplines
6. ALM 1.0 vs ALM 2.0
Limitation of ALM 1.0
• The theory of unity
• Tries to solve too many problems at once
• Often offered as monolithic proprietary platform
• Not flexible enough
• With respect to the development technologies
• With respect to the management process (Agile, UP variants …)
A vision for ALM 2.0
• Open
• Open source and based on standard (open or de facto)
• Flexible and extensible
• Divide et impera (divide and conquer)
• Start focused and solve general problems incrementally
7. ECM declination of ALM
ECM is enterprise (wide)
• Enterprises (should) have standard mature app lifecycle
• Might involve multiple development projects and team
• Key Cope with complexity over time
ECM is a people business
• POC is a common practice
• Process adaptation over imposition
• Key Fast prototyping and release cycles
ECM is open source powered
• Frequent integration of open source products / libraries
• Enable enterprise processes to cope with platform changes
• Key Dynamic answer to integration requirements & updates
8. Why Alfresco developers need ALM?
Alfresco is a content platform
• Open platform designed for ECM “tailor making”
• Huge spectrum of interdependent projects needing
1. Creation
2. Development
3. Testing and CI
4. Release
Alfresco is growing fast
• In terms of product components & releases
• Typical Alfresco customer penetration phases
1. POC
2. Departmental installation
3. Standard Content Platform for applications
4. Enterprise CM & Collaboration Foundation
10. Setting the stage
5 top objectives for Alfresco ALM
1. IDE Integration
2. Fast prototyping
3. Manage / customize all Alfresco components
4. External product Integration
5. Integration in enterprise process / lifecycle
5 top stakeholders for Alfresco ALM
1. Community / Enterprise Developers
2. Project Managers
3. IT / Operations
4. Enterprise Architects
5. Alfresco Support
11. Flavors of ALM for Alfresco
Cause everybody’s free (to wear sunscreen)
12. Available Approaches
Ad hoc
• Based on ad-hoc, potentially manual procedures
• Note: Strongly discouraged, error prone & no ALM coverage
Full rebuild
• Rebuild Alfresco starting from Trunk/Tags
• Requires enterprise ready process / need for contribution
Ant / Eclipse SDK
• Only fully supported Enterprise approach to date
• Covers mostly build / deployment related use cases
• Limited ALM support, difficult integration in Enterprise processes
Maven Alfresco Lifecycle
• Available at http://code.google.com/p/maven-alfresco-archetypes/
• Community artifacts available at http://maven.alfresco.com
13. Full rebuild from Sources
Rarely needed
• Only in specific contexts
• Community
• Patches
• heavily customized versions
• Enterprise
• Patches But please check first for hotfixes
• Enterprise practices on software management
• Dangerous
• You might lose support and QA added value
• Check
• http://wiki.alfresco.com/wiki/Alfresco_SVN_Development_Environment
• Basically at your own risk !
14. Alfresco SDK
Available with every CE / EE release
http://wiki.alfresco.com/wiki/Alfresco_SDK
Features
• Integrated with Eclipse
• Builds with Ant
• Alfresco & 3rd party libraries available in classpath
• Possible to attach sources & javadoc
• Offer samples (amongst others) for
• Custom Repository Extension
• Custom AMP
• Ant script to integrate in an alresco.war
15. Alfresco SDK How To
Get ahold of it
• Download it from
• Community: http://wiki.alfresco.com/wiki/Alfresco_SDK
• Enterprise: http://support.alfresco.com
• Understand it
• Samples
• SDKAlfrescoRemote & SDKAlfrescoEmbedded projects
Use it
• Import it with Eclipse
• Configure alfresco-global.properties to proper DB/data
• Use the samples
• Custom JSF / Foundation services
• Custom AMP
16. A good tool to begin with…
5 top objectives for Alfresco ALM
1. IDE Integration
2. Fast prototyping
3. Manage / customize all Alfresco components
4. External product Integration
5. Integration in enterprise process / lifecycle
5 top stakeholders for Alfresco ALM
1. Community / Enterprise Developers
2. Project Managers
3. IT / Operations
4. Enterprise Architects
5. Alfresco Support
Covers only the development & build!
17. Maven Alfresco Lifecycle
Vision
“Provide a flexible standard based approach to support the full
lifecycle of an Alfresco application, from inception to release and
integration in enterprise processes”
State of the nation
• Mature project Releases available since 2009
• Backed by http://maven.alfresco.com
• New 4.x compatible release just out! (3.9.0)
Get it
http://wiki.alfresco.com/wiki/Managing_Alfresco_Lifecyle_with_Maven
18. Maven Alfresco Lifecycle 4.0
Development features
• 4.0 ready Multi module archetype
• Repo/Share
• AMPs
• Dependency management
• Integrated support for TDD
Runtime features
• Run embedded in favorite appserver
• Per environment separate configuration
Process
• Mandatory integrated versioning!
• Release & distribution for free
• Integration with other ALM tools (e.g. Jira)
19. Why Maven & Alfresco ?
Standard de facto
1. Alfresco (and AMPs / JARs) is a <dependency> away
2. Standard lifecycle commands
3. Foster build reuse & packaging standardization
4. Enable simple integration with OSS J2EE best of breed
Get your lifecycle to the next level
1. Support the lifecycle from inception to (maintenance) releases
2. Integrated with code quality & task management tools
3. Scales from single community dev to multiple enterprise teams
4. Legal & Licensing focus
5. Can track usage
21. Maven Alfresco Lifecycle 4.0
Development features
• Multi module archetype
• Repo/Share/Solr
• AMPs
• Dependency management
• Integrated support for TDD
Runtime features
• Run embedded in favorite appserver
• Per environment separate configuration
Process
• Mandatory integrated versioning!
• Release & distribution for free
• Integration with other ALM tools (e.g. Jira)
22. Demo
Afresco 4.0 up and running in 2 minutes
Quicker than the installer and ready to roll
23. Demo objectives
Create a new Alfresco 4.0 project
1. Open your favorite Maven compatible IDE Eclipse
2. Create a project from prototype Maven Archetypes
3. Manage / customize all Alfresco components Multi module
1. Alfresco Repository
2. Alfresco Share
3. Solr
Run it & release it (early and often)
1. Run in embedded (supported) Tomcat
2. Manage versioning
3. Simple 1 command release
24. Maven Alfresco Lifecycle 4.0
Deterministic and reproducible builds
• Zero pre-requisites
• Learning curve as complex as ‘mvn clean install’
• Suitable for CI servers
Quick Testing deployment support
• Embedded run
• Environment safe
• Selenium integration
Flexible
• Valid for starters and evaluators
• Scale to the enterprise
• Non IDE dependent
25. Alfresco & Maven
Community Support
• Maven Alfresco Lifecycle Available as of 2007
• Artifacts on http://maven.alfresco.com as of 2009
• 4.x Community artifacts already available
• Using Sonatype Nexus (http://nexus.sonatype.org/)
• Join maven-alfresco@googlegroups.com
Enterprise Support
1. Target: 4.x EE deployed on http://maven.alfresco.com
1. Only JARs / WARs
2. NO POMs
2. Refreshed version of Maven Alfresco Lifecycle available
• Working to get that integrated as “alternative” SDK
26. You don’t want to say “it’s just work” ™
5 top objectives for Alfresco ALM
1. IDE Integration Any Maven compatible IDE
2. Fast prototyping Archetypes
3. Manage / customize all Alfresco components Multi module
4. External product Integration Most OSS builds with Maven
5. Integration in enterprise process / lifecycle Seamless
5 top stakeholders for Alfresco ALM
1. Community / Enterprise Developers
2. Project Managers
3. IT / Operations
4. Enterprise Architects
5. Alfresco Support
27. And now deep in the ALM space…
Future integrations
1. JIRA
• Mylin
• maven-changes-plugin
2. Hudson
3. Sonar
In the spotlight
• Open Source
1. CALM http://code.google.com/p/maven-calm/
2. ALM with Maven http://jabox.org
3. Web project hosting http://www.redmine.org/
• Proprietary
• Insight (http://www.sonatype.com/Products/Sonatype-Insight)