release & change management in salesforce

17
Release & Change Management In Salesforce Kalyan Lanka Salesforce Technical Architect [email protected]

Upload: kalyan-lanka-

Post on 14-Aug-2015

330 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Release & Change management in salesforce

Release & Change Management In Salesforce

Kalyan LankaSalesforce Technical Architect

[email protected]

Page 2: Release & Change management in salesforce

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

Page 3: Release & Change management in salesforce

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

Page 4: Release & Change management in salesforce

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

Page 5: Release & Change management in salesforce

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

Page 6: Release & Change management in salesforce

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

Page 7: Release & Change management in salesforce

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

Page 8: Release & Change management in salesforce

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

Page 9: Release & Change management in salesforce

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

Page 10: Release & Change management in salesforce

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..

Page 11: Release & Change management in salesforce

Release & Change Management in Salesforce By Kalyan Lanka

Best Practice for Salesforce Implementation Projects

Page 12: Release & Change management in salesforce

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

Page 13: Release & Change management in salesforce

Release & Change Management in Salesforce By Kalyan Lanka

REI GovGrants

Page 14: Release & Change management in salesforce

Release & Change Management in Salesforce By Kalyan Lanka

Best Practice for Product Development

Page 15: Release & Change management in salesforce

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

Page 16: Release & Change management in salesforce

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

Page 17: Release & Change management in salesforce

Release & Change Management in Salesforce By Kalyan Lanka

Demo & Questions

Kalyan [email protected]

http://lnkdin.me/kalyan@kalyanlanka