Plug Your Code in Here
An Internet Application Platform
Todd McKinnon
SVP Development
Salesforce.com
October, 2007
Safe Harbor Statement
“Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This press release contains forwardlooking statements including but not limited to statements regarding our expected future revenue, GAAP diluted
earnings per share, expected tax rate, anticipated shares outstanding,and concerning the potential market for our
existing service 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,
including our Form 10-K for the fiscal year ended January 31, 2007. 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.
Company Overview
•
35,300 Successful Customers
•
900,000 Subscribers
•
>$700M revenue run rate*
•
NYSE: CRM
Growth in Customers
ar e
•
Founded 1999, HQ San Francisco, CA
•
2400+ Employees; 40 Offices; 20
Countries
•
24 Generations of Product Innovation
•
<1% Customer Attrition
2001
2002
2003
Q u ic k T im e ™
and a
decom pr essor
n e e d e d t o s e e t h is
2004
p ic t u r e .
2005
Fiscal Year
June 25, 2007
* Run rate based on FY08 Q2 reported results
35,300
Customers
2006
2007
2008
The Two Pillars of Our Product Strategy
1
The world’s most
popular family of
killer applications
2
The world’s first
platform as a service
Proven Scalability and Performance
Delivering 100 Million Transactions Daily
8.0
1,250
7.0
6.0
Quarterly
Transactions
(billions)
1,000
5.0
750
4.0
3.0
500
2.0
250
1.0
0
0.0
Q1
Q2
Q3
2005
Q4
Q1
Q2
Q3
Q4
Q1
2006
Fiscal Year
Q2
Q3
2007
Q4
Q1
Q2
Page
Response
Time (ms)
Internet Scale
8 oracle instances
139,000 virtual
databases (orgs)
1,046,000 users
35,000 customers
20 standard objects,1.4
billion rows
176,000 custom
objects,.35 billion rows
peak hour, 8:00 am
2250 requests per second
35,000 SQL execs per second
Salesforce.com’s Mission: Innovation Driver
Become the trusted standard for managing all
business information on demand
Mainframe
Client/Server
Mid 20th
Century Platforms
Late 20th
Century Platforms
On-Demand
21st
Century Platforms
Session Cookie,
In-process edits
Hardware Load Balancer (stateless)
Platform Stack
J2SE, SOAP, JSF
UI, Api, Batch, Analytics
Oracle
RAC
Distributed Metadata,
UDD, Cache, Resources
Apex Virtual Machine
VisualForce (JSF)
AppServers
(single code base)
Other Pods
Search Servers
Shared File
System
1 Pod
Mirroring /
Disaster
Recovery
Full Professional Development Stack
Database
On-demand virtualization, Scalable, Self-Optimizing
AppServer
Requests, Access Controls, Caching, Monitoring, Localization
Declarative
Formulas, Workflow, Analytics, Role-based Sharing
Procedural
Apex On Demand Language, MVC Framework, Governed
API
Teams
Deployment
Inbound and Outbound Web services
Tools, SCCS, Required Testing and Code Coverage
Install, Upgrade, Version, Deprecate, Feedback, Sell, Bill
Create Any Database
Create any table
Add any field
Build any relationship
Security & sharing
Automatic audit history tracking
Automatic tuning
Automatic backups
Automatic upgrades
139,000 logical databases
Possible with physical db’s?
A simple multi-tenant table
Account Standard Entity
Organization_id
Account_id
org1
001…1
org1
001…2
org1
001…3
…
001…4
org2
001…5
org2
001…6
org2
001…7
001…8
001…9
name
(data
fields…)
modstamp
(standard
fields…)
•Hash partitioned by organization_id
•All indexes lead with organization_id
(compressed, partitioned, local)
•Smart primary keys (key prefix)
•Standard audit fields and triggers
A multi-tenant polymorphic table – custom fields
Custom Objects
Organization_id
Key_prefix
Id
Name,
Val0
Val1
…
ValN
(Others)
org1
a01
a01…1
org1
a01
a01…2
org1
a02
a02…1
org1
a02
a02…2
org2
a01
a01…3
org2
a01
a01…4
org2
a02
a02…3
…
…
•Key_prefix subsetting
•Still partitioning by organization_id
•Smart primary keys (key prefix)
•Re-use across organizations
•GUID primary keys
•ValN flex fields
A multi-tenant Custom Index
Custom Index
Organization_id
Key_prefix
Id
Column
#
String
Num
Date
org1
a01
a01…1
2
“hello”
11
10-2-07
org1
a01
a01…2
32
“my
41
2-8-04
org1
a02
a02…1
12
“index”
22
1-19-88
org1
a02
a02…2
34
“me”
1345
4-8-55
org2
a01
a01…3
27
“please”
22
4-1-07
org2
a01
•Writinga01…4
index
org2
a02
…
…
a02…3entity id, col # (unique)
•Org_id,
•Reading index
•Org_id, key_prefix, col #, <Stinrg | number |
Date> , id
Magic multi-tenant generic data modeling
 core.name_denorm
– Single table with the name of all entities
 core.seach_name_lookup
– Single table with all pivoted name components (for search)
 core.custom_index_value (and custom_unique_value)
– Pivoted, de-normalized physical indexes (native data types)
 core.custom_foreign_value
– Reverse lookups for any foreign key
 core.clob_data
– Pivoted clob values, maintained efficiently
Multi-tenant Optimization
1
Your Company
CEO
VP Sales
Director Sales
West
2
VP Customer
Service
VP Marketing
Director Sales
East
Director Customer
Service
COO
Director Support
VP Professional
Services
East Services
West Services
Your Division
CEO
VP Sales
Director Sales
West
3
VP Marketing
Director Sales East
VP Customer
Service
Director Customer
Service
Director Support
COO
VP Professional
Services
East Services
West Services
Your Customizations
Query
Optimization
Engine
Oracle CBO
4
Your Sharing Model
Multi-tenant statistics
Application semantics
(E.g. sharing model)
Knowledge of multtenant data structures
Query hinting and rewrite
Pre-query selective
filters
Optimized Response
Optimizer example: Entity v Boss v “Peon”
SELECT name FROM Account WHERE Status = ‘Red’
 For a given query, at least 3 possible plans
– Entity driven filter: standard or custom index (join) driven
– Peon driven sharing: use nested loop sharing-driven (2 joins) plan
– Boss plan: use hashing sharing plan (hash semi-joins)
 Statistics we must track
– Size of the entity for the organization
– Approximate visibility by user to this entity
– Statistics of various field fields (custom indexes)
• For domain fields: which values are high-cardinality?
• If we don’t know, pre-query with ROWNUM
Declarative versus Procedural
Business users can get a lot done without coding
Data validation
Formula fields and summaries
State Machine workflows
Multi-Step approvals
Automatic email approvals
Audit history tracking
100% automatic upgrades
Real Apps Require Procedural Code
The case for Apex (384,000 lines and growing)
• Transactional Logic, over a Web Service
• Stored Procedures, Triggers
• Reliable DML Upgrade Scripts
• Executing on our Servers
• Must protect the site
• Strongly typed
• Persist schema references
• Much more natural than JDBC
• Preserved through Upgrades
• Code Coverage and Testing built-in
• Web Service Exposure (In and Out)
But why a new language?
 We considered the alternatives
– Java? (JDBC is a lousy interface for this)
– JavaScript (Rhino)? Other scripting language? (not db focused)
– Existing stored procedure languages? (ugly)
 Advantages of writing our own
– We control the syntax: deep salesforce.com integration
• Our idioms, our schema binding, our ecosystem
– We control the runtime: control resources and coding behavior
– We can ease the transition: looks like Java, acts like Pl/Sql
– It’s not that hard to do: Java VM makes a great VM container
 But we have a high bar to match…
– Modern language features, modern IDE’s
Database-focused
Strongly typed
Schema Aware
Transactional
Governed
Object Oriented
Secured
Collections
Testing
Your Code
Java-like syntax
Metadata
Our
Infrastructure
Multi-Tenant Application Code Base
Apex Multi-version Virtual Machine
Apex Code example
Apex Run Time: Code Governors
Type
Restriction
Data Access
Total SOQL Statements (force Bulk)
Number of rows retrieved
Data Modification
Total DML (insert, update, etc) Statements
Number of rows modified
Transactions, Other
Resources
Transaction control Statements
Outbound Calls, Emails sent
Statements
Total statements issued (loops, etc)
Apex Code “Big Brother” Best Practices
 Governor limits enforce efficient coding styles
– No SOQL inside of a for loop
 Required functional testing
– Built into the language
– Coming soon: requirement to test in bulk
 Required code coverage
– Inability to deploy to production without it
 Higher bar for 3rd ISV’s than IT developers
We can (almost) prove that our releases won’t break
production applications
Areas of Active work and research
 Next level of expressiveness across the platform
– Richer semantics for virtual schema design, SOQL and Apex
– Provide a custom scheduler, flesh out VisualForce components
– Complete the on-demand development tools
• Debugger: what to do about transactions?
 Managed code correctness
– Deadlock detection best practices
– Dynamic-SOQL and reflection in Apex
 Operational next generation architecture
– Oracle 10g, 11g, much cheaper Pods, cheaper storage, high-latency
data center communication
– Database replication, zero-down time releases (Call Centers)
Q&A
 [email protected]
Descargar

Salesforce Product Roadmap Woodson Martin VP, …