release & change management in salesforce
TRANSCRIPT
Release & Change Management In Salesforce
Kalyan LankaSalesforce Technical Architect
Agenda
• Why Release Management?• The method!• Best Practice for Salesforce
Projects– REI Systems Experience
• Best Practice for Product Organization/ISV organization– Xceede Solutions experience
• Demo & QuestionsRelease & Change Management in
Salesforce By Kalyan Lanka
Why Release Management?• Release Management is a process of managing software
releases or software development process• Often release planning/management starts on Salesforce
projects like this:
Release & Change Management in Salesforce By Kalyan Lanka
Why Release Management?
• Secret sauce for timely completion of sprints
• Increases Software Quality of your project
• Avoid discovering and fixing issues after going live in production
• Fail fast, fail cheap and Pivot• Happy Developers & testers• Happy Management• Happy Customers
Discover & Design
Salesforce Development
Life Cycle
Build & Release
Validate & Test
Train & Release
Release & Change Management in Salesforce By Kalyan Lanka
Release & Change Management in Salesforce By Kalyan Lanka
Salesforce Environments• Production – Salesforce Org. where
business users use to run the business
• Full Sandbox – Backup/UAT/Training Org. that companies use to train employees, backup production or conduct UAT
• Developer Pro – Testing environments or Integration test environments
• Developer – Development Environments
• Pre-Release – Sandbox for Pre-Release testing
Production
Full Sandbox
Developer Pro
Developer
Pre Release
Version Control & Why?
• Tracking and managing change is imperative for successful projects• Unfortunately not much emphasis has been given on Salesforce
projects on the need Version Control• Version Control gives ability for developers and leads to identify
and pre-empt issues and bad Salesforce development practices• Provides ability to back-up code/configuration changes• Extends Salesforce into a platform for multi-projects
implementation and providing flexibility in feature roll-out to usersRelease & Change Management in
Salesforce By Kalyan Lanka
Release & Change Management in Salesforce By Kalyan Lanka
Change Management Approaches• Change Sets
– Good• Simple method for deployments• Point and Click methods
– Bad• Not easy to manage large changes• Time-consuming and not repeatable• Manual and error prone
– Recommended for simpler projects
• IDE Deployments using Eclipse/Mavensmate– Good
• Can determine easily what files to deploy• Ability to track changes to components• Deploy to multiple sandboxes or production easily from the IDE
– Bad• Not easy to manage large changes• Time-consuming and not repeatable
– Recommended for simpler projects
Release & Change Management in Salesforce By Kalyan Lanka
Change Management ApproachesChange sets IDE Metadata API
• Simple & Declarative method for deployments
• Identify dependencies and deploy related components
• Fast and easy deployments for simple changes
• Can be move across orgs. easily
• Can determine easily what files to deploy
• Ability to track changes to components
• Deploy to multiple sandboxes or production easily from the IDE
• Ability to track test coverage of class and run test classes
• Ability to deploy changes across multiple organizations quickly
• Ability to semi-automate extraction of metadata and deploy across connected and unconnected orgs
• Reduces the risk of unforeseen changes and deployments
• Difficult to track changes• Complexity increases
exponentially when components increase
• Only possible in Connected Orgs
• Difficult to track changes• Left to the developer to
deploy the changes• Using development
environments for deployment in production
• May not follow Organizations Security guidelines & polices
• Difficult to track changes• Manually run changes and
identify dependencies• Not easy to automate for
pre and post deployment steps
• May not follow Organizations Security guidelines & polices
Release & Change Management in Salesforce By Kalyan Lanka
Change Management Approaches - Recommended
• Automated Builds and Deployments– Advantages
• Use Version Control for track and monitor changes• Use Continuous Integration tools to deploy changes in Salesforce Org. using
Metadata API• Ability to develop organizations specific tools and scripts as pre and post
deployments• Leverages best practices that are followed by other technology stacks
(Java, .NET.. ) in the organization• Increased adherence to compliance requirements
– Disadvantages• Need to identify the organization release and change management strategy early
in the project life cycle• Team needs understanding of Version Control and Continuous Integration
principles• Can be time-consuming and need expertise of internal processes and technologies
like Java, Ant and CI tools
Release & Change Management in Salesforce By Kalyan Lanka
The Method! - The tools• Salesforce IDE (Eclipse/Sublime Text
– MavensMate)• Salesforce Metadata API• Version Control (Git /SVN
/Perforce/TFS)• Continuous Integration
(Jenkins/Hudson)• Build Server (Windows/Linux/AIX)• Requirement Management & Bug
Tracking Tool (Confluence/JIRA)• Ant & Java• Lots of Planning & patience..
Release & Change Management in Salesforce By Kalyan Lanka
Best Practice for Salesforce Implementation Projects
Release & Change Management in Salesforce By Kalyan Lanka
REI Systems Experience Problem• Multiple Sub-Projects under bigger implementation• Needed to keep Development Orgs. and testing orgs. Constantly in sync.• Change Sets had Limitations on managing changes and deleting the
changes• Test Classes were breaking just before going to higher environments• Validation and Test environments were not maintained with latest changesSolution• Implemented Github and developers forked the Metadata in
Eclipse/Sublime Text• All changes where checked into Git by using Eclipse Plugin• Git is used for Code Reviews and Quality Control• Jenkins is used to deliver the changes to higher environment• JIRA is used for bug tracking and managing changes in higher
environments
Release & Change Management in Salesforce By Kalyan Lanka
REI GovGrants
Release & Change Management in Salesforce By Kalyan Lanka
Best Practice for Product Development
Release & Change Management in Salesforce By Kalyan Lanka
Xceede Solutions Experience Problem• Offshore resources for development• Ability to track progress and changes to the product• Know the features complexity ability to fail fast• Visibility into development and track features with code• Test and fix the issues identified quicklySolution• Implemented Github for offshore developers to fork non managed
package in Eclipse/Sublime Text• Used Aha.io for product management and feature roll-out• Integrated Aha.io with Github for track code changes against features• Github is used for Code Reviews and Quality Control• Jenkins is used to deliver the changes to higher environment• Github bug tracker to manage defects
Release & Change Management in Salesforce By Kalyan Lanka
Product Development Eco - System
Versioning Control
Repository
Continuous Integration & Build
Server
Developer IDE
Local Version
Repository
Developer Org
Test Org
Production Org
Trial Org
Developer IDE
Local Version
Repository
Developer Org
Log Issues post testing in GitHub
Build &
Deploy
Release & Change Management in Salesforce By Kalyan Lanka
Demo & Questions
Kalyan [email protected]
http://lnkdin.me/kalyan@kalyanlanka