Title: Building and Deploying ProductionQuality Applications Using the Force Platform
1Building and Deploying Production-Quality
Applications Using the Force Platform
Track Tour de Force Platform Fundamentals
- Glen Martin, 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
- Development as a Service Technologies
- Team Development Techniques
- Migration of Changes
- Wrap-up / QA
5Project-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
6Worlds 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
7Metadata 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
8Supported Metadata Types
9IDE
Single Project View
Metadata Editors
Rich code editors for Visualforce and Apex code
10Demo of Metadata and IDE
11Where 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
12Force.com Sandbox
Development
Testing
Training
13Developer 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
14Managing Force.com Sandbox
15Easy to Move Your Apps Metadata and Code
Code Share
Multiple Sandbox Environments
Production Deployment
Code Share
Develop
Test
Train
Version Control
16Team Development with Code Share
17Evolution of your Organization
18Evolution of your Organization
19Evolution of your Organization
20Evolution of your Organization
21Evolution of your Organization
22Evolution of your Organization
23What 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
24What 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
25What 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 main line
- tag released versions with release name
Release Branch
Project Branch
Developer Branch
Version Control
26Force.com Development with Version Control
Release Branch
Project Branch
Developer Branch
Version Control
27Some 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
28Merging Changes in Force.com IDE
29Demo Collaborative Development with Subversion
30Development as a Service Supports Multiple
Development Models
- Individual developer
- IT developing apps for internal use
- ISVs developing apps for redistribution
- Open Source App Development
31Development Lifecycle with Force.com Sandbox
Developer
Staging
32Development Lifecycle with Force.com Sandbox and
Version Control
Version Control
Developer 1
Developer 2
Integration
Staging
33Testing Environments
- After development and unit test complete
- Integration (or regression) Test
- Usually need standardized test data
- Use Force.com Configuration-only Sandbox plus
Data Loader - Staging
- Need to test in a real-world environment
- Force.com Full Sandbox is a complete copy of
production - Perform final QA and User Acceptance tests here
34Multi-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
35Deployment
36Basic Deployment Steps
- Create a staging sandbox, and deploy application
- Test
- Repeat deployment to production
373 Configuration Migration Tools Today
- Force.com IDE
- Force.com Migration Tool
- Dreamfactory Snapshot
- All based on the Metadata API
38Force.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 - perhaps as a repeating task to monitor for
changes - Also use for migration
- configure with destination org and metadata to
push - Uses same directory structure as Force.com IDE
39Extracting with Migration Tool
- gt ant retrieveMainline
- lttarget name"retrieveMainline"gt
- ltsfretrieve
- username"sf.username
- password"sf.password
- serverurl"sf.serverurl"
- singlePackage"true
- retrieveTargetmainline"
- unpackagedpackage.xml /gt
- lt/targetgt
40Deploying with Migration Tool
- gt ant deployMyProject
- lttarget name"deployMyProject"gt
- ltsfdeploy
- username"sf.username"
- password"sf.password
- serverurl"sf.serverurl
- deployrootmyProject
- singlePackage"true /gt
- lt/targetgt
41Using Migration Tool for Automated Test
- Ideal for populating a test environment from
version control - Command line tool ? repeatable deployment scripts
- Delete changes from previous push
- Push the current configuration
42Using Snapshot for Migration
43Migration 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
44Migration 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
45Demo deploy to Force.com Sandbox
46Deploying 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
47Manage. Share. Build. Apply what youve learned
- Combining the best of traditional development
practices and on-demand development - Develop in isolation, merge when ready
- Version control is the synchronization point for
changes - Regression test in a Configuration-only Sandbox
- User Acceptance Test in a full sandbox
- Migrate many configuration changes quickly and
easily using the Metadata API via one of the
available tools
48Other Sessions
- Tues 1130 Esplanade 306
- Change Management Making it Happen
- Tues 200 Esplanade 306
- On Demand Release Management
- Wed 1015 Esplanade 303
- Development as a Service Building and Deploying
Apps in the Cloud
49Session 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.
50QUESTION ANSWER
Glen Martin
Director Product Management Force.com Platform
- 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