Salesforce Release Management - Best Practices and Tools for Deployment

21
Salesforce Release Management Best Practices and Tools for Deployment Efficiency Matthew Roark, EMC 2 Isilon Storage Division, Principal Application Developer @lordwyrmsbane Deb Weller, EMC 2 Isilon Storage Division, IT Development Manager @debdub

description

Join us to learn how EMC?s Isilon Storage Division has adopted salesforce.com best practices to better manage deployments on the Force.com platform. We'll also introduce the ?SfOpticon? tool, a custom-built, open-source solution which uses the Force.com Metadata API and Github to monitor, track, branch, package and deploy changes to our salesforce.com environments.

Transcript of Salesforce Release Management - Best Practices and Tools for Deployment

Page 1: Salesforce Release Management - Best Practices and Tools for Deployment

Salesforce Release ManagementBest Practices and Tools for Deployment Efficiency

Matthew Roark, EMC2 Isilon Storage Division, Principal Application Developer@lordwyrmsbane

Deb Weller, EMC2 Isilon Storage Division, IT Development Manager@debdub

Page 2: Salesforce Release Management - Best Practices and Tools for Deployment

Salesforce @ EMC2 IsilonDeb WellerIT Development Manager@debdub

Page 3: Salesforce Release Management - Best Practices and Tools for Deployment

All about EMC2 Isilon Storage Division

A Division of EMC2; Isilon Systems was acquired in 2010• Founded in 2001• World leader in scale-out NAS• Salesforce.com customer since 2002

Page 4: Salesforce Release Management - Best Practices and Tools for Deployment

Salesforce.com history at EMC2 Isilon▪ Salesforce was implemented in 2002

• System was owned and managed by the Sales team• Usage grew across other teams (Marketing, Customer Support, Partners)• Custom code implemented piecemeal by a variety of consultants

▪ IT inherited the “organically grown” instance in 2006 • Most users were systems admins• Competing groups in the company had conflicting needs and interests • No formal change or release management in place

Page 5: Salesforce Release Management - Best Practices and Tools for Deployment

First steps…

▪ Limit the number of system administrators ▪ Start tracking your changes in a systematic way▪ Get your stakeholders to help prioritize projects▪ No staff? Harness the power of admins in other departments▪ Leverage native Salesforce tools for release management

• Sandboxes• Cloud Deploy / Change Sets

Page 6: Salesforce Release Management - Best Practices and Tools for Deployment

Beyond Release ManagementMatthew RoarkPrincipal Application Developer@lordwyrmsbane

Page 7: Salesforce Release Management - Best Practices and Tools for Deployment

Three critical best practices for SFDC

1. Use test-driven development

2. Use a source repository

3. Maintain a deployment pipeline

Page 8: Salesforce Release Management - Best Practices and Tools for Deployment

One Step Beyond…Release engineering!

• Identifiable• Identify all of the source, environment, and other components in a particular release

• Reproducible• Integrate source, data, and deployment externals of a software system for better operational stability

• Accountable• Provide audit and accountability for software deployments

• Agile• Continuous integration! Iterative development! Distributed teams! Nirvana!

Page 9: Salesforce Release Management - Best Practices and Tools for Deployment

The biggest challenge

▪ *

▪ It’s difficult to merge changes across multiple SFDC environments▪ We are a small team of developers▪ Is there a way we can do this automatically?

* Image “borrowed” from http://soberbuildengineer.com/blog/2011/08/the-elevator-storyteller/

Page 10: Salesforce Release Management - Best Practices and Tools for Deployment

What we wanted in a tool

SFDC ProductionChanges Changes

SFDC Sandbox

SFDC Sandbox

SFDC Sandbox

Github

CommitChanges

Changes

Page 11: Salesforce Release Management - Best Practices and Tools for Deployment

Introducing SfOpticonMatthew RoarkPrincipal Application Developer

Page 12: Salesforce Release Management - Best Practices and Tools for Deployment

SfOpticon

▪ Open source Ruby application released under the Apache license ▪ Developed by Ryan Parr and Josh Arenson

▪ SfOpticon ▪ Monitors your Salesforce environments and automatically synchronizes changes between environments▪ Integrates with github and uses native SCM branching to track changes between environments▪ Can rebase environments, merging changes using snapshot comparisons

▪ Did I mention it is open source?

https://github.com/ryanparr/sfopticon

Page 13: Salesforce Release Management - Best Practices and Tools for Deployment

Setup repository

SFDC Production

Create repository

Store metadatadescribe

Local DB

Github

Clone to local

Query metadata

Page 14: Salesforce Release Management - Best Practices and Tools for Deployment

Create Branch

SFDC Sandbox

Create branch

Store metadatadescribe

Local DB

Github

Clone to local

Query metadata describe

Page 15: Salesforce Release Management - Best Practices and Tools for Deployment

Scan for changes

SFDC Environment

Replay changes into branch

Local DB

Github

Query last metadata describe

Diff changes

Query metadata

Page 16: Salesforce Release Management - Best Practices and Tools for Deployment

Merge and deploy changes

SFDC target environment

Create integration branch off of

source branch

Github

Detect conflicts

Return list of changed files

Merge integration branch into

target branch

Build Manifest

Deploy manifest

• Because SfOpticon is aware of previous state, it can detect destructive changes and renames!• Can be used to ‘rebase’ objects from any SFDC environment to any other environment

Page 17: Salesforce Release Management - Best Practices and Tools for Deployment

Demo• Requirements for installing SfOpticon• Creating a new production environment• Branching a config environment• Demonstration of SfOpticon change detection• Demonstration of merging and deploying changes with SfOpticon

Page 18: Salesforce Release Management - Best Practices and Tools for Deployment

SfOpticon: future enhancements

• Certify additional metadata types• Currently only supports ApexPages, ApexTriggers, ApexClasses, ApexComponents

• Integration with additional source control adapters • E.g. subversion, local git, others?

• Update SfOpticon to allow for Heroku deployment• Web- based interface in addition to command line

Page 19: Salesforce Release Management - Best Practices and Tools for Deployment

To get there, we need your help!

▪ SfOpticon is available on github▪ https://github.com/ryanparr/sfopticon

▪ Open source under the Apache license▪ Please download, use, and contribute to the project!▪ Help us make this the next ‘must have’ tool for the Salesforce.com platform!

Page 20: Salesforce Release Management - Best Practices and Tools for Deployment

Deb Weller

IT Development Manager@debdub

Matthew Roark

Principal Application Developer

@lordwyrmsbane

Sr. Application Developer

Ryan Parr Josh Arenson

Page 21: Salesforce Release Management - Best Practices and Tools for Deployment