RESTful APIs have simplified backend access providing clean URL-based resource representations using standard HTTP methods such as GET and POST. But growth in the number of these APIs can lead to inefficiencies: if an app needs to access many of these resources at once, performance can bog down and user experience can suffer, especially for mobile devices.
'Boxcarring' is the bundling together of multiple HTTP requests into a single request. For example, a client framework might abstract the transport layer and bundle multiple requests into a single call. On the server, a RESTful API must be surfaced to accept a POST to multiple resource representations in one request. This talk will demonstrate both client and server side examples of boxcar requests.
2. Safe Harbor
Safe harbor statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if
any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-
looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of
product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of
management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments
and customer contracts or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our
service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth,
interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any
possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and
motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-
salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial
results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for
the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor
Information section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may
not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently
available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
3.
4.
5. The Goal
Suggest design principles
Try Salesforce platform
Lots of Salesforce projects looking for developers
10. Bulk
REST
Metadata
SOAP
Tooling
Streaming
INTEGRATIONLAYER
Point & Click
Integration
Tools
Page
Builder
DECLARATIVE DEVELOPMENT
GLOBAL ENTERPRISE CLOUD INFRASTRUCTURE
PLATFORM SERVICES
APP MANAGEMENT & DEPLOYMENT
Workflow
Engine
UI
Framework
Sharing &
Permissions
Global
Search
Reports &
Dashboards
Files
& Content
Authenticatio
n
CollaborationEvent Log
Framework
Translation
Workbench
App
Builder
Process
Builder
Schema
Builder
Multi-Tenant Network
& Firewall
Auto
Updates
Backup &
Geodiversity
Security Trust
IDECLI Agile
Accelerator
Store
Builder
Dev
Console
Sandbox
Metadata
Heroku DX node.js
PROGRAMMATIC DEVELOPMENT
Database Smart
Containers
Heroku
Add-ons
Heroku
Button
Ruby
Identity
Global
Data Centers
Data
Storage
Single code
base
Python Java APEXPHP
Offline
Salesforce1 Mobile
Container
Geolocation
Push
Notifications
SDK Mobile Identity
MOBILE SERVICES
Community
Builder
Page
Builder
Everything You Need to Build Apps
Full spectrum of capabilities from enterprise control to
elastic flexibility
11.
12. Agile and elastic platform that developers love
Smarter infrastructure lets you build apps that scale
Open and extensible
Modern language support and ecosystem of 150+ add-ons
Connected to Force.com
Sync customer apps with business processes
Build Customer-Facing Apps with Heroku
13. HR Help Desk
Employee Intranet
Recruiting &
Onboarding
Performance
& Coaching
IT Help Desk / Self-
Service Community
Legacy Applications
Consolidation
Enterprise
Knowledge
Identity Mgmt
Custom Web /
Mobile Applications
Business Agility
Layer (e.g. Claims,
Underwriting, …)
Asset & Facilities
Management
Financial Shared
Services
M&A Enablement
Early Warning
Management
Product Ideas &
Innovation
Pre-Production
Testing
Warrant Coverage
Decisioning
Procurement
Vendor
Management
Transportation
Logistics
Contract
Management
Budget
Management
Contract
Management
Pricing
Billing
Management
Audit
Management
Force.com - Employee Facing Apps
Apps
HR
Produc
t
Supply
Chain
IT
Financ
e
Ops
15. Core Force.com Characteristics
Single Code Base
Single Schema
3 Upgrades Per Year
Secure
Durable and Scalable
Customizable
Easy enough for a Business Analyst
Flexible enough for a Coder
16. Pre-Built Apps
AppExchange is the #1 Business App Marketplace
Customized for Salesforce
Trusted and Secure
Reviewed by Peers
Over 2,800 apps 3 million installs
17. Overall site peak day
• >3.5 Billion transactions
• 200 milliseconds average
• 60% of transactions via API
requests
Typically production instance
• >8,000 Customer Orgs
• 30 App Servers and 8 DB Servers
Salesforce’s Daily Performance
Friday: 3,173,762,799 Transactions
18. 3 Releases Per Year
API backward compatibility ensures ease of deployment
47 Major Releases
100’s of Small Releases Yearly
All Integrations and
Customizations Auto-Upgraded
6BLines of
Apex Code
1BAPI Calls
Per Day,
32
versions
12M
Visualforce
Pages
15MCustom
Database
Tables
1
Version
24. Lightning Component Design Principles
• Component author namespacing
• Automatic component-based CSS namespacing
• Everything is a component
• Allow for programmatic or point-and-click UI composition
• Enable Salesforce, customers, and partners to build composite UIs
• Works on any form factor
35. Comprehensive Suite of APIs and Toolkits
Web Service
Endpoint
Web Service
Endpoint
Apex
WS/REST
Outbound
Messaging
Business Logic
Sync Bulk API
Streaming
API Topic
CRUD
Data
Bayeux
Client
Applications and Middleware
Java SDK Ruby gem
PHP
Toolkit
Mobile
SDK
Mobile
SDK
3rd Party
Adapters
Apex
Callouts
36. Salesforce1 Enterprise APIs
The Salesforce “Data” APIs
• Allow programmatic access to your salesforce data through various API technologies
• Many different APIs to suit your specific needs
Rest
APIs
Access and manipulate data with a RESTful pattern with JSON and XML payloads
Soap
APIs
Access and manipulate data using SOAP.
Streaming
APIs
Subscribe to updates using a Bayeux / CometD HTTP Streaming API.
Bulk
APIs
Perform Bulk Queries and Inserts/Updates Asynchronously.
37. Boxcarring, what a great idea!
Boxcarring is dependent on Lightning Components
Only works with one client interface
What about all those API apps out there?
If only we could let any client batch together requests…
38. Many Requests Many Server Trips
POST Record
GET Server Gen Data
GET API Limits
39. Composite Batch REST API
.../composite/batch
POST Batch
{
"batchRequests":[
{POST},
{GET},
{GET}
]
}