Salesforce Release Management - Best Practices and Tools for Deployment


Published on

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

Published in: Technology

Salesforce Release Management - Best Practices and Tools for Deployment

  1. 1. Salesforce Release Management Best 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
  2. 2. 2 Salesforce @ EMC Isilon Deb Weller IT Development Manager @debdub
  3. 3. 2 All about EMC Isilon Storage Division A Division of EMC2; Isilon Systems was acquired in 2010 • Founded in 2001 • World leader in scale-out NAS • customer since 2002 •
  4. 4. 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
  5. 5. 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
  6. 6. Beyond Release Management Matthew Roark Principal Application Developer @lordwyrmsbane
  7. 7. Three critical best practices for SFDC 1. Use test-driven development 2. Use a source repository 3. Maintain a deployment pipeline
  8. 8. 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!
  9. 9. 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
  10. 10. What we wanted in a tool SFDC Sandbox SFDC Sandbox SFDC Sandbox Ch ang es Changes Changes s nge ha C Commit Github SFDC Production
  11. 11. Introducing SfOpticon Matthew Roark Principal Application Developer
  12. 12. 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?
  13. 13. Setup repository Query metadata SFDC Production Store metadata describe Local DB Create repository Clone to local Github
  14. 14. Create Branch Query metadata describe SFDC Sandbox Store metadata describe Local DB Create branch Clone to local Github
  15. 15. Scan for changes Query metadata SFDC Environment Query last metadata describe Local DB Diff changes Replay changes into branch Github
  16. 16. Merge and deploy changes Create integration branch off of source branch Return list of changed files Build Manifest Deploy manifest Detect conflicts Github Merge integration branch into target branch SFDC target environment • 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
  17. 17. 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
  18. 18. 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
  19. 19. To get there, we need your help! ▪ SfOpticon is available on github ▪ ▪ 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 platform!
  20. 20. Ryan Parr Deb Weller Matthew Roark Sr. Application Developer IT Development Manager @debdub Principal Application Developer @lordwyrmsbane Josh Arenson