10 things you need to know to deliver a successful alfresco project
DESCRIPTION
Customer Success is a core value at Alfresco, and for this we have invested in people, processes and tools to maximize the possibility of our Partners and Customers succeeding in Alfresco Projects. In this session, Gab will share his 5+ years experience on running successful Alfresco projects, providing a comprehensive but practical set of recommendations, to overcome common business & technical hurdles of an Enterprise wide ECM implementation and ensure continued success for your projects. This preso also introduces the first pilot of Alfresco Developer Support service, geared towards helping customers and partners developers in developing high quality, scalable and high longevity Alfresco customizations, as well as to help you support those customizations in production.TRANSCRIPT
successful Alfresco projectGabriele Columbro WW Manager Expert Services
10 things you need to know to have a
Today’s objectives
Identify key phases in the Alfresco project lifecycle
Make the right choices in each and every phase
Prevent technical issues and going over budget
Prevent and mitigate risk upon issues
Inception Provisioning & deployment
Release & distribution
Development
Alfresco basic project lifecycle
Inception
Alfresco basic project lifecycle
Tip #1: Leverage the Alfresco SDK• Archetypes —> Generally available project
templates• AMP, Share AMP, All in One
• SDK Parent • Inherit best practice behavior based on years of
successful Alfresco projects
• Benefits• Consistency• Productivity• Rapid setup of project lifecycle
Tip #1: Leverage the Alfresco SDK
Tip #2: Be ECM savvy
Tip #2: Be ECM savvy
• ECM is about content, people, processes• Less about technical rocket science
• What that means• Make sure you design a future proof model
and taxonomy - “the art of ECM”• Ensure your permission model is scalable and
does not prevent future evolutions• Identify content, then people, then how the
content will flow between people and responsibilities
Tip #3: Involve the experts early on
Tip #3: Involve the experts early on• ECM experts can help to:• Identify business value • Define the ECM foundation design and content model
• Alfresco experts can help to:• Get design and development right from the get go• Know the Alfresco specific processes (e.g. Support) and resources (docs,
KB, wiki)
• What are your options?• Alfresco ACE or ACA certified resources, i.e. partners or community
(open source) • Alfresco Partners• Alfresco Consulting• Alfresco dedicated Support packages, like Premiere or Developer
Support
Tip #3: Open Communication & lean responsibilities
Tip #3: Open Communication & lean responsibilities
• Open Communication• Internally• Dev <-> Ops• Shared / managed services• Business & Technical
• Externally• Customer <-> Alfresco• 3-way including Partner
• Lean responsibilities and ownership• Of lifecycle phases (release, packaging, deployment)• Of developed code (customizations support, source code
availability, e.g. Dev Support)
Inception DevelopmentInception
Alfresco basic project lifecycle
Tip #4: Alfresco Open Dev Best Practices
Tip #4: Alfresco Open Dev Best Practices• Best practices pillars• Use only Public APIs (ReST & @PublicApi Java
classes)• Do NOT override / modify Alfresco core webapp• Package and version your customizations• Upper case vs. Lower Case
• Risks vs. benefits• Best Effort vs. Fully Supported• High TCO vs. Low TCO• Version Lock in vs. Version Currency
• Dev Support
Tip #5: Test, test, test
Tip #5: Test, test, test• Flavors of testing• Unit —> Alfresco SDK• Integration —> Alfresco SDK• Black box / regression w/Selenium —> Alfresco
SDK• Load Testing —> Alfresco Benchmark Framework• Consider a POC for large implementations sizing
• Risks vs. benefits• Bugs vs. Quality• Complex supportability vs. Easy troubleshooting• Fail in production vs. Fail early and correct
Inception Release & distribution
Development
Alfresco basic project lifecycle
Tip #6: Define a rock solid delivery process
Tip #6: Define a rock solid delivery process• Mantra: DO NOT TOUCH PRODUCTION MANUALLY!!!• Release early, release often• Unobtrusive packaging and clear versioning• Automation, automation, automation• Did I mention automation?
• Clear collaboration pattern between Dev and Ops • Define a clear DTAP promotion (and back-porting) process of data
and code• D(evelopment)• T(est)• A(cceptance)• P(roduction)
• Alfresco Boxeshttps://github.com/maoo/alfresco-boxes
Inception Provisioning & deployment
Release & distribution
Development
Alfresco basic project lifecycle
Tip #7: Size your system appropriately
Tip #7: Size your system appropriately• Know your use case• Ask the right questions
• Incremental & continuous improvement• Performance testing feedback into further
design• Consider a POC focused on Load Testing• Scalability Blueprint
http://www.alfresco.com/resources/whitepapers/alfresco-scalability-blueprint
• SuperSize my repo• Luis’s session today afternoon
Tip #8: Have a replica of your production repository!
• Why?• Study performances in non productive
environment• Run regression testing on a real life repository
• How?• Automate backup and restore (e.g. Alfresco
BaRT)• Back-porting content, db, indexes on a
periodic basis
• Risk vs. benefits• Long running cases vs. easier troubleshooting• Crawling in the dark vs. control
Tip #8: Have a replica of your production repository!
Tip #9: Monitor. Always.
Tip #9: Monitor. Always.• Even basic monitoring would do, but you should know:• What to monitor• CPU/Memory /Disk• Indexes/db/content store size• Network latency
• How to monitor• Un-intrusive (the over-Heisenberg syndrome!) • Multiple technologies available• Nagios/Icinga (w/ Alfresco integration)• ElasticSearch + Logstash + Kibana
http://summit.alfresco.com/san-francisco/sessions/monitoring-your-alfresco-installation
• New Relic
Tip #10: Work with us!
• Services• Support (Core, Advanced, Expert)• Premiere Services• Consulting• Developer Support (pilot)
• Tools• Alfresco Environment Validation tool• Alfresco Technical Validation tool• Administration consoles• Alfresco Benchmark Framework
Tip #10: Work with us!
Disclaimer:Support Services add-on package currently in pilot phase. Come talk to me if you are interested.
Developer Support
The Developer Support service is a yearly Subscription based service, delivered remotely by development savvy senior Engineers.
The subscription is time limited to periods of 6 months, 1 year or multi-year with no case volume restriction.
Customers will be entitled to a 24h response time SLA.
Developer Support - High level
• SDK, Developer Environment & Productivity • Architecture questions• Public Performance, load testing and sizing best practices• API usage & best practices questions• Support in mapping business requirements into design leveraging
the Alfresco APIs• Code samples and how to customize Alfresco, Share, Workdesk• Roadmap alignment and Sprint Review (at Premium level)• Automation of Alfresco installation, deployment, product
application lifecycle management • Review and recommendations on new/existing
customizations/integrationsCustomization snippets review and recommendations
• Break/fix and Ttroubleshooting assistance on existing customizations
Developer Support - Services
Developer Support - ComparisonActivity Support
Developer Support
Consulting
Will you troubleshoot my custom code for me?
✘ ✓ ✓
Will you facilitate provisioning of product code level fixes if encountered?
✓ ✓ ✓
Will you own technical design of my custom code for me?
✘ ✘ ✓
Will you build my customization for me from scratch?
✘ ✘ ✓
Will you help me understand how to use your public API?
✘ ✓ ✓
Will you recommend best practices for extending Alfresco?
✘ ✓ ✓
Will you join our project kick-off meeting?
✘ ✓ ✓
Will you map our requirements to best practice implementation directives?
✘ ✓ ✓
Will you help me to find bugs in existing custom code?
✘ ✓ ✓
Will you help me troubleshoot my Alfresco APIs usage if I provide a simple
test case?✓ ✓ ✓
Do you provide SLA on response and engagement time?
✓ ✓ ✘
Will you own the delivery of an Alfresco project?
✘ ✘ ✓
Will you come on site? ✘ ✘ ✓
Thank you / Grazie!
Gabriele [email protected]: @mindthegabzhttp://mindthegab.com