Title: OnDemand Release Management
1On-Demand Release Management
Track Administrators
- Glen Martin, Salesforce.com
- Garrett Farwell, Salesforce.com
2Safe Harbor Statement
Safe harbor statement under the Private
Securities Litigation Reform Act of 1995 This
presentation may contain forward-looking
statements including but not limited to
statements concerning the potential market for
our existing service offerings and future
offerings. All of our forward looking statements
involve risks, uncertainties and assumptions. If
any such risks or uncertainties materialize or if
any of the assumptions proves incorrect, our
results could differ materially from the results
expressed or implied by the forward-looking
statements we make. The risks and uncertainties
referred to above include - but are not limited
to - risks associated with possible fluctuations
in our operating results and cash flows, rate of
growth and anticipated revenue run rate, errors,
interruptions or delays in our service or our Web
hosting, our new business model, our history of
operating losses, the possibility that we will
not remain profitable, breach of our security
measures, the emerging market in which we
operate, our relatively limited operating
history, our ability to hire, retain and motivate
our employees and manage our growth, competition,
our ability to continue to release and gain
customer acceptance of new and improved versions
of our service, customer and partner acceptance
of the AppExchange, successful customer
deployment and utilization of our services,
unanticipated changes in our effective tax rate,
fluctuations in the number of shares outstanding,
the price of such shares, foreign currency
exchange rates and interest rates. Further
information on these and other factors that could
affect our financial results is included in the
reports on Forms 10-K, 10-Q and 8-K and in other
filings we make with the Securities and Exchange
Commission from time to time. These documents are
available on the SEC Filings section of the
Investor Information section of our website at
www.salesforce.com/investor. Salesforce.com, inc.
assumes no obligation and does not intend to
update these forward-looking statements, except
as required by law.
3Glen Martin Director Product Management Force.com
Platform
4Agenda
- Introduction to Development as a Service
- Environments
- Development
- Deployment
- Sandbox Best Practices
- QA
5Worlds First Development Tools and Services for
the Cloud
Development as a Service
Force.com IDE
Force.com Sandbox
Force.com Code Share
Metadata API
Everything You Need to Build Apps
Easy to Collaborate on Projects
Easy Access to Code and Schema
Instantly Set Up Dev Environments
6Metadata API . Lets Look at the Code
Metadata API
ltCustomObject xmlns"http//soap.sforce.com/2006/0
4/metadata"gt ltlabelgtPTORequestlt/labelgt
ltpluralLabelgtPTORequestslt/pluralLabelgt
ltnameFieldgt ltlabelgtPTORequest
Namelt/labelgt lttypegtTextlt/typegt
lt/nameFieldgt ltsharingModelgtReadWritelt/sharing
Modelgt ltfieldsgt ltfullNamegtStartDate_
_clt/fullNamegt ltlabelgtStart Datelt/labelgt
lttypegtDatelt/typegt lt/fieldsgt
ltfieldsgt ltfullNamegtDuration__clt/fullNamegt
ltlabelgtDurationlt/labelgt
lttypegtNumberlt/typegt ltprecisiongt2lt/precisi
ongt lt/fieldsgt ltdeploymentStatusgtDeployed
lt/deploymentStatusgt lt/CustomObjectgt
Create your database tables
Define schema attributes
Create new database fields
7IDE
Single Project View
Metadata Editors
Rich code editors for Visualforce and Apex code
8Force.com Sandbox
Development
Testing
Training
9Easy to Move Your Apps Metadata and Code
Code Share
Multiple Sandbox Environments
Production Deployment
Code Share
Develop
Test
Train
Version Control
10Environments
11Project-based development by teams
- Modern teams develop in isolation
- Not in production
- Not in same development environment as their
peers - Teamwork
- Synchronize with peers to leverage each others
work - Stable checkpoints to hand-off between functions
(e.g. QA) - Integrate when complete
- Integrate with peers when development and unit
test complete - Integrate with current production for testing and
approvals
12Where Do I Develop?
- On-demand environments for development and
testing - Developer Edition
- small, free organization
- vanilla - starts with a default configuration
- best for ISVs developing standalone apps
- Force.com Sandbox
- copies enabled features and configuration from
production - full sandbox also copies data from production
- though you usually dont need data yet
13Managing Force.com Sandbox
14Development Lifecycle with Sandbox
Production
Develop
15Development Lifecycle with Sandbox
Production
Develop
Test
16Development Lifecycle with Sandbox
Production
Staging
17Development Lifecycle with Code Share
Production
Staging
Code Share
18Multi-Project Delivery Cycle with Sandbox
Production Instance
Production Support
Dev
Dev
Rollup / Integration
Staging
Integration
Long Project
Training
legend
Dev
live
full copy
Dev
configuration-only, test data
configuration-only, training data
Short Projects
developer
19Developer Sandbox
- Intended for single developer use
- Includes all features of full sandbox (except
storage size and data) - Allows development in isolation from production
and peers - Merge changes into staging or production when
ready - Generally, developers will want one or two each
- Free!
- No cost
- Bundled with Enterprise and Unlimited Edition
- Sandbox purchases bundle more!
- Full Sandbox comes with 10
- Configuration-only Sandbox comes with 5
20Development and Testing Environments
21Metadata API
22Supported Metadata Types
233 Configuration Migration Tools Today
- Force.com IDE
- Force.com Migration Tool
- Dreamfactory Snapshot
- All based on the Metadata API
24Force.com Migration Tool
- Command-line tool for retrieval and migration
- Based on Apache Ant
- Use for retrieval
- configure with org and list of metadata
- this metadata can then be saved into version
control - Also use for migration
- configure with destination org and metadata to
push - Uses same directory structure as Force.com IDE
25Metadata vs Packaging
- Managed Packages are for ISVs
- one-to-many installation
- installed-to org cant modify contents
- in future, installed-to org probably cant see
contents - changes to included components restricted even in
source orgs - IT should use metadata tools for deployment
- using the Force.com IDE, for developers
- using Force.com Migration Tool, for technical IT
admins - using 3rd-party tools such as Dreamfactory
Snapshot, for power users or business analysts
26Code Share
27Evolution of your Organization
28Evolution of your Organization
29Evolution of your Organization
30Evolution of your Organization
31Evolution of your Organization
32Evolution of your Organization
33What is Version Control?
- System that tracks changes to software over time
- What was the change?
- Who made it?
- How did the code change incrementally over time?
Project Branch
Version Control
34What is Version Control?
- System that tracks changes to software over time
- What was the change?
- Who made it?
- How did the code change incrementally over time?
- Branch to isolate development until ready
Project Branch
Developer Branch
Version Control
35What is Version Control?
- System that tracks changes to software over time
- What was the change?
- Who made it?
- How did the code change incrementally over time?
- Branch to isolate development until ready
- Merge changes back into the release branch
- Tag released versions with release name
Release Branch
Project Branch
Developer Branch
Version Control
36Force.com Development with Version Control
Release Branch
Project Branch
Developer Branch
Version Control
37Some Version Control Systems
- Team development with Force.com should work with
most popular version control systems that have
Eclipse plug-ins
Borland StarTeam
Telelogic SYNERGY
Microsoft VSS
Subversion
AccuRev
CVS
ChangeMan Dimensions
AllFusion Harvest
ChangeMan Version Manager
TeamSite Repository
ClearCase
Darcs
SpectrumSCM
Source Integrity Enterprise
Perforce
SAD - Perforce Software
38Projects and Version Control
39Extracting Configuration to Version Control
Org
Version Control
Changes
40Extracting with Migration Tool
- gt ant retrieve-production
- lttarget name"retrieve-production"gt
- ltsfretrieve
- username"sf.username
- password"sf.password
- serverurl"sf.serverurl"
- singlePackage"true
- retrieveTargetproduction"
- unpackagedpackage.xml /gt
- lt/targetgt
41Detecting Org Changes
- lttarget name"show-production-differences"gt
- lt!-- get from org --gt
- ltantcall target"retrieve-production/gt
- lt!-- perl script to find changes --gt
- ltexec executable"/bin/bash"gt
- ltarg value"-c" /gt
- ltarg value"cd production
- svn stat
../showdiffs.perl gt ../report.txt" /gt - lt/execgt
- lt/targetgt
42Using Version Control to Merge Changes
Changes during project
Production
Refresh
Deploy
Project
Version Control
43Merging Changes in Force.com IDE
44Do We Need to Merge Changes?
- It depends.
- Some changes are merged automatically
- eg. adding new components or elements files,
fields, etc - Other changes may conflict
- two changes to the same attribute of the same
field - changes to Apex or Visualforce
- Last change wins!
- Safe practice merge known changes in advance!
45Deployment Today
46Basic Deployment Steps
- Merge production updates into project
- Test
- Create a staging sandbox, and deploy application
- Test
- Repeat deployment to production
473 Configuration Migration Tools Today
- Force.com IDE
- Force.com Migration Tool
- Dreamfactory Snapshot
- All based on the Metadata API
48Deploying with Migration Tool
- gt ant stage-fix
- lttarget namestage-fix"gt
- ltsfdeploy
- username"sf.username"
- password"sf.password
- serverurl"sf.serverurl
- deployrootfix
- singlePackage"true /gt
- lt/targetgt
49Migration Method for Unsupported Types
- Create change list
- Best practice use tool to create change list or
- Keep track of changes as you make them or
- Leverage setup audit trail
- Select the changes you want
- Copy them by hand
- When using tools, re-run after copy, diff should
be clean
50Migration Challenges
- Deletion is not trivial
- Specify item to be deleted in DestructiveChanges.
xml file - Include file in directory to be deployed
- Rename is not supported
- Deploy operation is like upsert it changes
component of same name, or creates new component
if name doesnt exist - Therefore any name changes will duplicate the
component - For integration / regression renames delete and
recreate - Then change data files and reload test data
- For production and staging renames use
Declarative App Builder - No Rollback
- Create a compensating deployment (nontrivial)
51Demo Deploy to Force.com Sandbox
52Deploying into Production
- Staging allowed us to test the changes,
- Also verified the deployment methodology
- Repeat the same process to deploy to production
- Same environment (sandbox was a complete copy of
production) - Same code and metadata
- Same migration methodology
- Same result
53Sandbox Maintenance
- Will this effect my project?
- Now on trust.salesforce.com!
54Sandbox and the Coming Feature Release
- Sandbox and production instances upgrade at
different times - A Sandbox may be upgraded earlier or later than
the production org, depending on instance - Sandbox instance is determined by date of the copy
55Sandbox and the Coming Feature Release
- Always visit the solution or blog post for
details! - Solution Sandbox Solution Upgrade Window
- Blog Post just search for Sandbox Upgrade on
succesforce -
- Prepare!
-
- Also review the AppExchange package upload matrix
on the blog
56Sandbox and the Coming Feature Release
57Sandbox Instances and URLs
- Links
- Avoid using absolute URLs in custom links
- https//na1.salesforce.com/00Oz0000000EVpUpv0!A
ccount_ID - Instead use relative URLs
- /00Oz0000000EVpUpv0!Account_ID
- only use relative URLs in your production
organization - Integrations
- Do not hard code integrations toward a specific
instance. - Web Service API calls
58Links and Instances
59Features Disabled in Sandbox
- The following features are disabled and cannot be
enabled in Sandboxes - these automatically send email to contacts,
customers and users - Case escalation
- Opportunity reminders
- Contract expiration warnings
- Subscription summary
- Weekly data exports
- The ability to create Salesforce sandboxes.
- Testing Salesforce CRM Content and Google AdWords
- Email service addresses that you create in your
Sandbox cannot be copied to your production
organization.
60Manage. Share. Build. Apply what youve learned
- Environment selection for development and test
- Version control system as the source of truth
- basis for merging changes made in different
environments - Use of Migration Tool for extract / deploy
- Using Migration Tool and IDE in coordinated
lifecycle - Special considerations using Sandbox around
releases
61Where to Learn More
- For More Information
- To get a free Developer Edition instance
- http//developer.force.com/
- Force.com IDE
- http//wiki.apexdevnet.com/index.php/Force.com_IDE
- Force.com Migration Tool
- http//wiki.apexdevnet.com/index.php/Migration_Too
l_Guide - Metadata API, see API Developers Guide
- http//wiki.apexdevnet.com/index.php/APIAPI
62Other Sessions
- Wed 1015 Esplanade 303
- Development as a Service Building and Deploying
Apps in the Cloud Leader Jon Plax
63Session FeedbackLet us know how were doing and
enter to win an iPod nano!
- Please score the session from 5 to 1
(5excellent,1needs improvement) in the
following categories - Overall rating of the session
- Quality of content
- Strength of presentation delivery
- Relevance of the session to your organization
Additionally, please fill in the name of each
speaker score them on overall delivery.
We strive to improve, thank you for filling out
our survey.
64QUESTION ANSWER
Glen Martin
Director Product Management
Garrett Farwell
Technical Support Analyst