SlideShare ist ein Scribd-Unternehmen logo
1 von 52
Downloaden Sie, um offline zu lesen
Boxcars and
Cabooses
When one more XHR is too much
Peter Chittum
Developer Evangelist
@pchittum
github.com/pchittum
Cleaning up your CRUDdy API
Forward Looking Statement
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.
?
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
Force.com - Employee Facing Apps
​ 
Apps
HR Product
Supply
Chain
ITFinanceOps
Multi Tenant
150k customers
40 Prod POD’s
40 Prod DB’s
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
It’s About the API
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
3rd Party
Adapters
Apex
Callouts
​ Overall site peak day
•  >4 Billion transactions
•  200-250 milliseconds average
•  ~30% of transactions via API
requests
Salesforce’s Daily API Performance
Yesterday: ??? ​ Source: trust.salesforce.com
Automatic REST Endpoint Creation
​ POST
/services/data/v35.0/sobjects/Account
BODY: {
"Name" : "CodeMotion Amsterdam",
"BillingCountry" : "Netherlands"
}
Create Record
​ POST
/services/data/v35.0/sobjects/Account
BODY: {
"Name" : "CodeMotion Amsterdam",
"BillingCountry" : "Netherlands"
}
Fetch Record
​ GET
/services/data/v35.0/sobjects/Account/0012400000NBMWyAAP
SUCCESS RESPONSE: {
"attributes" : {"type" : "Account”,"url" : "...”},
"Id" : "0012400000NBMWyAAP",
"Name" : "CodeMotion Amsterdam",
"BillingCountry" : "Netherlands",
...
}
Query Endpoint
​ GET
/services/data/v35.0/query?q=SELECT ... FROM Account WHERE ...
SUCCESS RESPONSE: { "totalSize" : 2,
"done" : true,
"records" : [
{"attributes" : {"type" : "Account","url" : "..."},
"Id" : "0012400000NBMWyAAP",
"Name" : "Test 123",...},
{...}, ...]}
Describe (Discover)
​ GET
/services/data/v35.0/sobjects/Account/describe
SUCCESS RESPONSE: {
...
"queryable" : true,
"searchable" : true,
"updateable" : true,
...
}
Limits
​ GET
/services/data/v35.0/limits
SUCCESS RESPONSE: {
...
"DailyBulkApiRequests": {"Max" : 5000,"Remaining" : 5000},
"DailyStreamingApiEvents": {"Max" : 10000,"Remaining" : 9996},
"DataStorageMB" : {"Max" : 5,"Remaining" : 5},
...
}
Many Requests Many Server Trips
POST Record
GET Server Gen Data
GET API Limits
Composite Batch REST API
.../composite/batch
POST Batch
{
"batchRequests":[
{POST},
{GET},
{GET}
]
}
Sample Batch Request
​ POST: <salesforcedomain>/services/data/v35.0/composite/batch
​ {"batchRequests" : [
​  {"method" : "POST",
​  "url" : "v35.0/sobjects/account/",
​  "richInput" : {"Name" : "NewName", "Industry" : "Tech"}},
​  {"method" : "GET",
​  "url" : "v35.0/query?q=select id, name, industry from account
​  order by createddate desc limit 10"},
​  {"method" : "GET",
​  "url" : "v35.0/limits"
​  }]
​ }
Sample Batch Response Object
​ {
​  "hasErrors": false,
​  "results": [
​  { "statusCode": 201, "result": {...} },
​  { "statusCode": 200, "result": {...} },
​  { "statusCode": 200, "result": {...} }
​  ]
​ }
Batch Request Behavior
•  Resource which accepts multiple REST calls to execute
•  Up to 25 sub-requests
•  URI, Method, and optional Body
•  Sub-requests can be unrelated API calls
•  Sub-requests are executed serially, in order, and as the running user
•  Commit each subrequest on completion
•  Optional parameter: haltOnError
•  Do not continue after error occurs
•  But check subrequests for errors
Hierarchy
Parent/Child Related Data
POST Account
POST related Contacts
POST related Cases
RESP: Account ID
RESP: Contact IDs
RESP: Case IDs
Composite Tree REST API
.../composite/tree/entity
POST Tree
”records":[
{parent1},
{parent2},
{parent3}
]
Sample Tree Request
​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account
​ {"records" :[
​  {"attributes": {"type":"Account", "referenceId":"ref1"},
​  "name" : "CodeMotion", "phone" : "1234567890",
​  "type" : "Customer", "industry" : "Events",
​  "Contacts" : {
​  "records" : [
​  {"attributes": {"type":"Contact", "referenceId":"ref2"},
​  "lastname" : "Smith", "title" : "Organizer"},
​  ...]},
​  "Cases" : {
​  "records" : [
​  {"attributes": {"type":"Case", "referenceId":"ref3"},
​  "" : "", "" : "", "" : ""}
​  ...]}, }}, ...] }
Sample Tree Request: Many Records
​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account
​ {"records" :[
​  {"attributes": {"type":"Account", "referenceId":"ref1"},
​  "name" : "CodeMotion", "phone" : "1234567890",
​  "type" : "Customer", "industry" : "Events",
​  "Contacts" : {
​  "records" : [
​  {"attributes": {"type":"Contact", "referenceId":"ref2"},
​  "lastname" : "Smith", "title" : "Organizer"},
​  ...]},
​  "Cases" : {
​  "records" : [
​  {"attributes": {"type":"Case", "referenceId":"ref3"},
​  "" : "", "" : "", "" : ""}
​  ...]}, }}, ...] }
Sample Tree Request: Parent Record
​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account
​ {"records" :[
​  {"attributes": {"type":"Account", "referenceId":"ref1"},
​  "name" : "CodeMotion", "phone" : "1234567890",
​  "type" : "Customer", "industry" : "Events",
​  "Contacts" : {
​  "records" : [
​  {"attributes": {"type":"Contact", "referenceId":"ref2"},
​  "lastname" : "Smith", "title" : "Organizer"},
​  ...]},
​  "Cases" : {
​  "records" : [
​  {"attributes": {"type":"Case", "referenceId":"ref3"},
​  "" : "", "" : "", "" : ""}
​  ...]}, }}, ...] }
Sample Tree Request: Child Records
​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account
​ {"records" :[
​  {"attributes": {"type":"Account", "referenceId":"ref1"},
​  "name" : "CodeMotion", "phone" : "1234567890",
​  "type" : "Customer", "industry" : "Events",
​  "Contacts" : {
​  "records" : [
​  {"attributes": {"type":"Contact", "referenceId":"ref2"},
​  "lastname" : "Smith", "title" : "Organizer"},
​  ...]},
​  "Cases" : {
​  "records" : [
​  {"attributes": {"type":"Case", "referenceId":"ref3"},
​  "" : "", "" : "", "" : ""}
​  ...]}, }}, ...] }
Sample Tree Request: Client Ids
​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account
​ {"records" :[
​  {"attributes": {"type":"Account", "referenceId":"ref1"},
​  "name" : "CodeMotion", "phone" : "1234567890",
​  "type" : "Analyst", "industry" : "Events",
​  "Contacts" : {
​  "records" : [
​  {"attributes": {"type":"Contact", "referenceId":"ref2"},
​  "lastname" : "Smith", "title" : "Organizer"},
​  ...]},
​  "Cases" : {
​  "records" : [
​  {"attributes": {"type":"Case", "referenceId":"ref3"},
​  "" : "", "" : "", "" : ""}
​  ...]}, }}, ...] }
Demo
The (Near) Future
​ Extension of Batch and Composite
​ Outputs from one sub request to be used as inputs for the another
Possible Future Features
​ Parameter-based values
​ Basic orchestration baked into /batch
​ Updates on /tree
The Client Problem
Aura and Lightning Component Framework
Lightning
Component
Framework
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
The Composite App
Many Components Many Server Trips
XMLHttpRequest
XMLHttpRequest
XMLHttpRequest
Actions: Interact with the Server
•  Apex Method Surfaced to Lightning Components
•  @AuraEnabled annotation
Boxcarring: Many Actions, One XHR
ActionService
Caboose: Postpone High Volume Actions
ActionService
•  Defer High-Volume Actions
•  Action.setCaboose()
Action Service: Server Side API
​ Apex: Code on Force.com
Action Service Client API
Upcoming Features
​ Integration of offline data store with Action service
​ Ability to prioritize actions
Takeaways
​ Minimize server requests
​ Optimize CRUD-based APIs with aggregation
​ Optimize creation of hierarchical data
​ Client-side libraries to support request batching
​ Meetup: bit.ly/ams-sf-devs
​ startups.salesforce.com
​ trailhead.com
Q & A
Peter Chittum
Developer Evangelist
@pchittum
github.com/pchittum
​ Learn: developer.salesforce.com/trailhead
​ Meetup: bit.ly/ams-sf-devs
Thank
you

Weitere ähnliche Inhalte

Was ist angesagt?

Lightning connect sap_integration_df2015
Lightning connect sap_integration_df2015Lightning connect sap_integration_df2015
Lightning connect sap_integration_df2015Dreamforce
 
Boxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchBoxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchPeter Chittum
 
SAP and Salesforce Integration
SAP and Salesforce IntegrationSAP and Salesforce Integration
SAP and Salesforce IntegrationGlenn Johnson
 
Introduction to External Objects and the OData Connector
Introduction to External Objects and the OData ConnectorIntroduction to External Objects and the OData Connector
Introduction to External Objects and the OData ConnectorSalesforce Developers
 
Sap integration salesforce_presentation
Sap integration salesforce_presentationSap integration salesforce_presentation
Sap integration salesforce_presentationSalesforce Deutschland
 
Elevate london dec 2014.pptx
Elevate london dec 2014.pptxElevate london dec 2014.pptx
Elevate london dec 2014.pptxPeter Chittum
 
Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...Salesforce Deutschland
 
Wave Analytics: Developing Predictive Business Intelligence Apps
Wave Analytics: Developing Predictive Business Intelligence AppsWave Analytics: Developing Predictive Business Intelligence Apps
Wave Analytics: Developing Predictive Business Intelligence AppsSalesforce Developers
 
ERP/CRM Integration Series: Integration Salesforce with Alfresco
ERP/CRM Integration Series: Integration Salesforce with AlfrescoERP/CRM Integration Series: Integration Salesforce with Alfresco
ERP/CRM Integration Series: Integration Salesforce with AlfrescoZia Consulting
 
Two-Way Integration with Writable External Objects
Two-Way Integration with Writable External ObjectsTwo-Way Integration with Writable External Objects
Two-Way Integration with Writable External ObjectsSalesforce Developers
 
February 2020 Salesforce API Review
February 2020 Salesforce API ReviewFebruary 2020 Salesforce API Review
February 2020 Salesforce API ReviewLydon Bergin
 
Hybrid IT: The Importance of Integration to Salesforce Success
Hybrid IT: The Importance of Integration to Salesforce SuccessHybrid IT: The Importance of Integration to Salesforce Success
Hybrid IT: The Importance of Integration to Salesforce SuccessDarren Cunningham
 
Web applications portfolio
Web applications portfolioWeb applications portfolio
Web applications portfolioRavi S
 
Perpetual Analytics - Health in Motion
Perpetual Analytics - Health in MotionPerpetual Analytics - Health in Motion
Perpetual Analytics - Health in Motionmrosenthal
 
YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...
YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...
YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...Salesforce Admins
 
Enterprise and Social Integration Using Force.com
Enterprise and Social Integration Using Force.comEnterprise and Social Integration Using Force.com
Enterprise and Social Integration Using Force.comSalesforce Developers
 
Expert Hour: Salesforce integration tools - why, what & how?
Expert Hour:  Salesforce integration tools - why, what & how?Expert Hour:  Salesforce integration tools - why, what & how?
Expert Hour: Salesforce integration tools - why, what & how?Geraldine Gray
 
Developing Offline Mobile Apps With Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps With Salesforce Mobile SDK SmartStoreDeveloping Offline Mobile Apps With Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps With Salesforce Mobile SDK SmartStoreSalesforce Developers
 

Was ist angesagt? (20)

Salesforce and sap integration
Salesforce and sap integrationSalesforce and sap integration
Salesforce and sap integration
 
Lightning connect sap_integration_df2015
Lightning connect sap_integration_df2015Lightning connect sap_integration_df2015
Lightning connect sap_integration_df2015
 
Boxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too MuchBoxcars and Cabooses: When One More XHR Is Too Much
Boxcars and Cabooses: When One More XHR Is Too Much
 
SAP and Salesforce Integration
SAP and Salesforce IntegrationSAP and Salesforce Integration
SAP and Salesforce Integration
 
Introduction to External Objects and the OData Connector
Introduction to External Objects and the OData ConnectorIntroduction to External Objects and the OData Connector
Introduction to External Objects and the OData Connector
 
Sap integration salesforce_presentation
Sap integration salesforce_presentationSap integration salesforce_presentation
Sap integration salesforce_presentation
 
Elevate london dec 2014.pptx
Elevate london dec 2014.pptxElevate london dec 2014.pptx
Elevate london dec 2014.pptx
 
Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...Unlock SAP - Release the potential of your existing backend systems with Sale...
Unlock SAP - Release the potential of your existing backend systems with Sale...
 
Wave Analytics: Developing Predictive Business Intelligence Apps
Wave Analytics: Developing Predictive Business Intelligence AppsWave Analytics: Developing Predictive Business Intelligence Apps
Wave Analytics: Developing Predictive Business Intelligence Apps
 
ERP/CRM Integration Series: Integration Salesforce with Alfresco
ERP/CRM Integration Series: Integration Salesforce with AlfrescoERP/CRM Integration Series: Integration Salesforce with Alfresco
ERP/CRM Integration Series: Integration Salesforce with Alfresco
 
Two-Way Integration with Writable External Objects
Two-Way Integration with Writable External ObjectsTwo-Way Integration with Writable External Objects
Two-Way Integration with Writable External Objects
 
Web Log Files
Web Log FilesWeb Log Files
Web Log Files
 
February 2020 Salesforce API Review
February 2020 Salesforce API ReviewFebruary 2020 Salesforce API Review
February 2020 Salesforce API Review
 
Hybrid IT: The Importance of Integration to Salesforce Success
Hybrid IT: The Importance of Integration to Salesforce SuccessHybrid IT: The Importance of Integration to Salesforce Success
Hybrid IT: The Importance of Integration to Salesforce Success
 
Web applications portfolio
Web applications portfolioWeb applications portfolio
Web applications portfolio
 
Perpetual Analytics - Health in Motion
Perpetual Analytics - Health in MotionPerpetual Analytics - Health in Motion
Perpetual Analytics - Health in Motion
 
YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...
YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...
YETI Simplifies Salesforce/SAP Integration with enosiX by Gerald Schlechter &...
 
Enterprise and Social Integration Using Force.com
Enterprise and Social Integration Using Force.comEnterprise and Social Integration Using Force.com
Enterprise and Social Integration Using Force.com
 
Expert Hour: Salesforce integration tools - why, what & how?
Expert Hour:  Salesforce integration tools - why, what & how?Expert Hour:  Salesforce integration tools - why, what & how?
Expert Hour: Salesforce integration tools - why, what & how?
 
Developing Offline Mobile Apps With Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps With Salesforce Mobile SDK SmartStoreDeveloping Offline Mobile Apps With Salesforce Mobile SDK SmartStore
Developing Offline Mobile Apps With Salesforce Mobile SDK SmartStore
 

Andere mochten auch

Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...
Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...
Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...Codemotion
 
Engage and retain users in the mobile world
Engage and retain users in the mobile worldEngage and retain users in the mobile world
Engage and retain users in the mobile worldCodemotion
 
Everything you always wanted to know about highly available distributed datab...
Everything you always wanted to know about highly available distributed datab...Everything you always wanted to know about highly available distributed datab...
Everything you always wanted to know about highly available distributed datab...Codemotion
 
Maker Experience: user centered toolkit for makers
Maker Experience: user centered toolkit for makersMaker Experience: user centered toolkit for makers
Maker Experience: user centered toolkit for makersCodemotion
 
Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016
Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016
Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016Codemotion
 
The rise and fall and rise of Virtual Reality - Adriaan Rijkens - Codemotion...
The rise and fall and rise of Virtual Reality -  Adriaan Rijkens - Codemotion...The rise and fall and rise of Virtual Reality -  Adriaan Rijkens - Codemotion...
The rise and fall and rise of Virtual Reality - Adriaan Rijkens - Codemotion...Codemotion
 
NoSQL on the move
NoSQL on the moveNoSQL on the move
NoSQL on the moveCodemotion
 
Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016
Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016
Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016Codemotion
 
Demistifying the 3D Web
Demistifying the 3D WebDemistifying the 3D Web
Demistifying the 3D WebCodemotion
 
Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016
Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016
Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016Codemotion
 
Customize and control connected devices
Customize and control connected devicesCustomize and control connected devices
Customize and control connected devicesCodemotion
 
If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...
If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...
If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...Codemotion
 
Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016
Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016
Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016Codemotion
 
F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016
F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016
F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016Codemotion
 
Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016
Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016
Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016Codemotion
 
Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...
Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...
Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...Codemotion
 
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...Codemotion
 
Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...
Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...
Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...Codemotion
 
OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...
OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...
OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...Codemotion
 
Microsoft &lt;3 Open Source: Un anno dopo!
Microsoft &lt;3 Open Source: Un anno dopo!Microsoft &lt;3 Open Source: Un anno dopo!
Microsoft &lt;3 Open Source: Un anno dopo!Codemotion
 

Andere mochten auch (20)

Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...
Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...
Knowledge is Power: Getting out of trouble by understanding Git - Steve Smith...
 
Engage and retain users in the mobile world
Engage and retain users in the mobile worldEngage and retain users in the mobile world
Engage and retain users in the mobile world
 
Everything you always wanted to know about highly available distributed datab...
Everything you always wanted to know about highly available distributed datab...Everything you always wanted to know about highly available distributed datab...
Everything you always wanted to know about highly available distributed datab...
 
Maker Experience: user centered toolkit for makers
Maker Experience: user centered toolkit for makersMaker Experience: user centered toolkit for makers
Maker Experience: user centered toolkit for makers
 
Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016
Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016
Living on the Edge (Service) - Mark Heckler - Codemotion Amsterdam 2016
 
The rise and fall and rise of Virtual Reality - Adriaan Rijkens - Codemotion...
The rise and fall and rise of Virtual Reality -  Adriaan Rijkens - Codemotion...The rise and fall and rise of Virtual Reality -  Adriaan Rijkens - Codemotion...
The rise and fall and rise of Virtual Reality - Adriaan Rijkens - Codemotion...
 
NoSQL on the move
NoSQL on the moveNoSQL on the move
NoSQL on the move
 
Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016
Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016
Software environmentalism - Tudor Girba - Codemotion Amsterdam 2016
 
Demistifying the 3D Web
Demistifying the 3D WebDemistifying the 3D Web
Demistifying the 3D Web
 
Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016
Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016
Death to Icon Fonts - Seren Davies - Codemotion Amsterdam 2016
 
Customize and control connected devices
Customize and control connected devicesCustomize and control connected devices
Customize and control connected devices
 
If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...
If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...
If security is hard, you are doing it wrong - Fabio Locati - Codemotion Amste...
 
Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016
Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016
Angular2 and Redux - up & running - Nir Kaufman - Codemotion Amsterdam 2016
 
F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016
F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016
F# for the curly brace developer - Michael Newton - Codemotion Amsterdam 2016
 
Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016
Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016
Welcome to Mordor - Daniel Kahn - Codemotion Amsterdam 2016
 
Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...
Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...
Sinfonier: How I turned my grandmother into a data analyst - Fran J. Gomez - ...
 
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
React Native - Unleash the power of React in your device - Eduard Tomàs - Cod...
 
Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...
Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...
Distributed Companies: A WordPress.com Team Perspective - Davide Casali - Cod...
 
OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...
OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...
OrientDB - the 2nd generation of (MultiModel) NoSQL - Luigi Dell Aquila - Cod...
 
Microsoft &lt;3 Open Source: Un anno dopo!
Microsoft &lt;3 Open Source: Un anno dopo!Microsoft &lt;3 Open Source: Un anno dopo!
Microsoft &lt;3 Open Source: Un anno dopo!
 

Ähnlich wie Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemotion Amsterdam 2016

New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15 New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15 Salesforce Developers
 
OData: A Standard API for Data Access
OData: A Standard API for Data AccessOData: A Standard API for Data Access
OData: A Standard API for Data AccessPat Patterson
 
Business Mashups Best of the Web APIs
Business Mashups Best of the Web APIsBusiness Mashups Best of the Web APIs
Business Mashups Best of the Web APIsdreamforce2006
 
All Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of RESTAll Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of RESTPat Patterson
 
Intro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite AppsIntro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite Appsdreamforce2006
 
Real Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsReal Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsSalesforce Developers
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummiesdreamforce2006
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforceMark Adcock
 
If you can write a Salesforce Formula you can use the command line
If you can write a Salesforce Formula you can use the command lineIf you can write a Salesforce Formula you can use the command line
If you can write a Salesforce Formula you can use the command linePeter Chittum
 
Best api features of 2016
Best api features of 2016Best api features of 2016
Best api features of 2016Peter Chittum
 
How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)Dreamforce
 
MuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターンMuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターンMitch Okamoto
 
Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)Salesforce Partners
 
Force.com Integration Using Web Services With .NET & PHP Apps
Force.com Integration Using Web Services With .NET & PHP AppsForce.com Integration Using Web Services With .NET & PHP Apps
Force.com Integration Using Web Services With .NET & PHP AppsSalesforce Developers
 
Modern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the FieldModern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the FieldDreamforce
 
Next Generation Web Services
Next Generation Web ServicesNext Generation Web Services
Next Generation Web Servicesdreamforce2006
 

Ähnlich wie Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemotion Amsterdam 2016 (20)

New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15 New Powerful API Enhancements for Summer '15
New Powerful API Enhancements for Summer '15
 
Exploring the Salesforce REST API
Exploring the Salesforce REST APIExploring the Salesforce REST API
Exploring the Salesforce REST API
 
OData: A Standard API for Data Access
OData: A Standard API for Data AccessOData: A Standard API for Data Access
OData: A Standard API for Data Access
 
Business Mashups Best of the Web APIs
Business Mashups Best of the Web APIsBusiness Mashups Best of the Web APIs
Business Mashups Best of the Web APIs
 
All Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of RESTAll Aboard the Boxcar! Going Beyond the Basics of REST
All Aboard the Boxcar! Going Beyond the Basics of REST
 
Intro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite AppsIntro to AppExchange - Building Composite Apps
Intro to AppExchange - Building Composite Apps
 
Real Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform EventsReal Time Integration with Salesforce Platform Events
Real Time Integration with Salesforce Platform Events
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 
S-Controls for Dummies
S-Controls for DummiesS-Controls for Dummies
S-Controls for Dummies
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforce
 
If you can write a Salesforce Formula you can use the command line
If you can write a Salesforce Formula you can use the command lineIf you can write a Salesforce Formula you can use the command line
If you can write a Salesforce Formula you can use the command line
 
Salesforce platform session 2
 Salesforce platform session 2 Salesforce platform session 2
Salesforce platform session 2
 
Best api features of 2016
Best api features of 2016Best api features of 2016
Best api features of 2016
 
How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)How We Built AppExchange and our Communities on the App Cloud (Platform)
How We Built AppExchange and our Communities on the App Cloud (Platform)
 
Introduction to Apex for Developers
Introduction to Apex for DevelopersIntroduction to Apex for Developers
Introduction to Apex for Developers
 
MuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターンMuleSoftマイクロサービスとデプロイメントパターン
MuleSoftマイクロサービスとデプロイメントパターン
 
Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)Design Patterns Every ISV Needs to Know (October 15, 2014)
Design Patterns Every ISV Needs to Know (October 15, 2014)
 
Force.com Integration Using Web Services With .NET & PHP Apps
Force.com Integration Using Web Services With .NET & PHP AppsForce.com Integration Using Web Services With .NET & PHP Apps
Force.com Integration Using Web Services With .NET & PHP Apps
 
Modern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the FieldModern Architectures: Integration Stories from the Field
Modern Architectures: Integration Stories from the Field
 
Next Generation Web Services
Next Generation Web ServicesNext Generation Web Services
Next Generation Web Services
 

Mehr von Codemotion

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Codemotion
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyCodemotion
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaCodemotion
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserCodemotion
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Codemotion
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Codemotion
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Codemotion
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 - Codemotion
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Codemotion
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Codemotion
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Codemotion
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Codemotion
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Codemotion
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Codemotion
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Codemotion
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...Codemotion
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Codemotion
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Codemotion
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Codemotion
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Codemotion
 

Mehr von Codemotion (20)

Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
Fuzz-testing: A hacker's approach to making your code more secure | Pascal Ze...
 
Pompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending storyPompili - From hero to_zero: The FatalNoise neverending story
Pompili - From hero to_zero: The FatalNoise neverending story
 
Pastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storiaPastore - Commodore 65 - La storia
Pastore - Commodore 65 - La storia
 
Pennisi - Essere Richard Altwasser
Pennisi - Essere Richard AltwasserPennisi - Essere Richard Altwasser
Pennisi - Essere Richard Altwasser
 
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
Michel Schudel - Let's build a blockchain... in 40 minutes! - Codemotion Amst...
 
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
Richard Süselbeck - Building your own ride share app - Codemotion Amsterdam 2019
 
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
Eward Driehuis - What we learned from 20.000 attacks - Codemotion Amsterdam 2019
 
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 - Francesco Baldassarri  - Deliver Data at Scale - Codemotion Amsterdam 2019 -
Francesco Baldassarri - Deliver Data at Scale - Codemotion Amsterdam 2019 -
 
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
Martin Förtsch, Thomas Endres - Stereoscopic Style Transfer AI - Codemotion A...
 
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
Melanie Rieback, Klaus Kursawe - Blockchain Security: Melting the "Silver Bul...
 
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
Angelo van der Sijpt - How well do you know your network stack? - Codemotion ...
 
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
Lars Wolff - Performance Testing for DevOps in the Cloud - Codemotion Amsterd...
 
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
Sascha Wolter - Conversational AI Demystified - Codemotion Amsterdam 2019
 
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
Michele Tonutti - Scaling is caring - Codemotion Amsterdam 2019
 
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
Pat Hermens - From 100 to 1,000+ deployments a day - Codemotion Amsterdam 2019
 
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
James Birnie - Using Many Worlds of Compute Power with Quantum - Codemotion A...
 
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
Don Goodman-Wilson - Chinese food, motor scooters, and open source developmen...
 
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
Pieter Omvlee - The story behind Sketch - Codemotion Amsterdam 2019
 
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
Dave Farley - Taking Back “Software Engineering” - Codemotion Amsterdam 2019
 
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
Joshua Hoffman - Should the CTO be Coding? - Codemotion Amsterdam 2019
 

Kürzlich hochgeladen

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...itnewsafrica
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Jeffrey Haguewood
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...itnewsafrica
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 

Kürzlich hochgeladen (20)

Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...Zeshan Sattar- Assessing the skill requirements and industry expectations for...
Zeshan Sattar- Assessing the skill requirements and industry expectations for...
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
Email Marketing Automation for Bonterra Impact Management (fka Social Solutio...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...Abdul Kader Baba- Managing Cybersecurity Risks  and Compliance Requirements i...
Abdul Kader Baba- Managing Cybersecurity Risks and Compliance Requirements i...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 

Boxcars and Cabooses: When one more XHR is too much - Peter Chittum - Codemotion Amsterdam 2016

  • 1. Boxcars and Cabooses When one more XHR is too much Peter Chittum Developer Evangelist @pchittum github.com/pchittum Cleaning up your CRUDdy API
  • 2. Forward Looking Statement 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. 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
  • 6. Force.com - Employee Facing Apps ​  Apps HR Product Supply Chain ITFinanceOps
  • 7. Multi Tenant 150k customers 40 Prod POD’s 40 Prod DB’s
  • 8. 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
  • 10. 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 3rd Party Adapters Apex Callouts
  • 11. ​ Overall site peak day •  >4 Billion transactions •  200-250 milliseconds average •  ~30% of transactions via API requests Salesforce’s Daily API Performance Yesterday: ??? ​ Source: trust.salesforce.com
  • 12. Automatic REST Endpoint Creation ​ POST /services/data/v35.0/sobjects/Account BODY: { "Name" : "CodeMotion Amsterdam", "BillingCountry" : "Netherlands" }
  • 13. Create Record ​ POST /services/data/v35.0/sobjects/Account BODY: { "Name" : "CodeMotion Amsterdam", "BillingCountry" : "Netherlands" }
  • 14. Fetch Record ​ GET /services/data/v35.0/sobjects/Account/0012400000NBMWyAAP SUCCESS RESPONSE: { "attributes" : {"type" : "Account”,"url" : "...”}, "Id" : "0012400000NBMWyAAP", "Name" : "CodeMotion Amsterdam", "BillingCountry" : "Netherlands", ... }
  • 15. Query Endpoint ​ GET /services/data/v35.0/query?q=SELECT ... FROM Account WHERE ... SUCCESS RESPONSE: { "totalSize" : 2, "done" : true, "records" : [ {"attributes" : {"type" : "Account","url" : "..."}, "Id" : "0012400000NBMWyAAP", "Name" : "Test 123",...}, {...}, ...]}
  • 16. Describe (Discover) ​ GET /services/data/v35.0/sobjects/Account/describe SUCCESS RESPONSE: { ... "queryable" : true, "searchable" : true, "updateable" : true, ... }
  • 17. Limits ​ GET /services/data/v35.0/limits SUCCESS RESPONSE: { ... "DailyBulkApiRequests": {"Max" : 5000,"Remaining" : 5000}, "DailyStreamingApiEvents": {"Max" : 10000,"Remaining" : 9996}, "DataStorageMB" : {"Max" : 5,"Remaining" : 5}, ... }
  • 18. Many Requests Many Server Trips POST Record GET Server Gen Data GET API Limits
  • 19.
  • 20.
  • 21. Composite Batch REST API .../composite/batch POST Batch { "batchRequests":[ {POST}, {GET}, {GET} ] }
  • 22. Sample Batch Request ​ POST: <salesforcedomain>/services/data/v35.0/composite/batch ​ {"batchRequests" : [ ​  {"method" : "POST", ​  "url" : "v35.0/sobjects/account/", ​  "richInput" : {"Name" : "NewName", "Industry" : "Tech"}}, ​  {"method" : "GET", ​  "url" : "v35.0/query?q=select id, name, industry from account ​  order by createddate desc limit 10"}, ​  {"method" : "GET", ​  "url" : "v35.0/limits" ​  }] ​ }
  • 23. Sample Batch Response Object ​ { ​  "hasErrors": false, ​  "results": [ ​  { "statusCode": 201, "result": {...} }, ​  { "statusCode": 200, "result": {...} }, ​  { "statusCode": 200, "result": {...} } ​  ] ​ }
  • 24. Batch Request Behavior •  Resource which accepts multiple REST calls to execute •  Up to 25 sub-requests •  URI, Method, and optional Body •  Sub-requests can be unrelated API calls •  Sub-requests are executed serially, in order, and as the running user •  Commit each subrequest on completion •  Optional parameter: haltOnError •  Do not continue after error occurs •  But check subrequests for errors
  • 26. Parent/Child Related Data POST Account POST related Contacts POST related Cases RESP: Account ID RESP: Contact IDs RESP: Case IDs
  • 27. Composite Tree REST API .../composite/tree/entity POST Tree ”records":[ {parent1}, {parent2}, {parent3} ]
  • 28. Sample Tree Request ​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account ​ {"records" :[ ​  {"attributes": {"type":"Account", "referenceId":"ref1"}, ​  "name" : "CodeMotion", "phone" : "1234567890", ​  "type" : "Customer", "industry" : "Events", ​  "Contacts" : { ​  "records" : [ ​  {"attributes": {"type":"Contact", "referenceId":"ref2"}, ​  "lastname" : "Smith", "title" : "Organizer"}, ​  ...]}, ​  "Cases" : { ​  "records" : [ ​  {"attributes": {"type":"Case", "referenceId":"ref3"}, ​  "" : "", "" : "", "" : ""} ​  ...]}, }}, ...] }
  • 29. Sample Tree Request: Many Records ​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account ​ {"records" :[ ​  {"attributes": {"type":"Account", "referenceId":"ref1"}, ​  "name" : "CodeMotion", "phone" : "1234567890", ​  "type" : "Customer", "industry" : "Events", ​  "Contacts" : { ​  "records" : [ ​  {"attributes": {"type":"Contact", "referenceId":"ref2"}, ​  "lastname" : "Smith", "title" : "Organizer"}, ​  ...]}, ​  "Cases" : { ​  "records" : [ ​  {"attributes": {"type":"Case", "referenceId":"ref3"}, ​  "" : "", "" : "", "" : ""} ​  ...]}, }}, ...] }
  • 30. Sample Tree Request: Parent Record ​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account ​ {"records" :[ ​  {"attributes": {"type":"Account", "referenceId":"ref1"}, ​  "name" : "CodeMotion", "phone" : "1234567890", ​  "type" : "Customer", "industry" : "Events", ​  "Contacts" : { ​  "records" : [ ​  {"attributes": {"type":"Contact", "referenceId":"ref2"}, ​  "lastname" : "Smith", "title" : "Organizer"}, ​  ...]}, ​  "Cases" : { ​  "records" : [ ​  {"attributes": {"type":"Case", "referenceId":"ref3"}, ​  "" : "", "" : "", "" : ""} ​  ...]}, }}, ...] }
  • 31. Sample Tree Request: Child Records ​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account ​ {"records" :[ ​  {"attributes": {"type":"Account", "referenceId":"ref1"}, ​  "name" : "CodeMotion", "phone" : "1234567890", ​  "type" : "Customer", "industry" : "Events", ​  "Contacts" : { ​  "records" : [ ​  {"attributes": {"type":"Contact", "referenceId":"ref2"}, ​  "lastname" : "Smith", "title" : "Organizer"}, ​  ...]}, ​  "Cases" : { ​  "records" : [ ​  {"attributes": {"type":"Case", "referenceId":"ref3"}, ​  "" : "", "" : "", "" : ""} ​  ...]}, }}, ...] }
  • 32. Sample Tree Request: Client Ids ​ POST: <salesforcedomain>/services/data/v35.0/composite/tree/Account ​ {"records" :[ ​  {"attributes": {"type":"Account", "referenceId":"ref1"}, ​  "name" : "CodeMotion", "phone" : "1234567890", ​  "type" : "Analyst", "industry" : "Events", ​  "Contacts" : { ​  "records" : [ ​  {"attributes": {"type":"Contact", "referenceId":"ref2"}, ​  "lastname" : "Smith", "title" : "Organizer"}, ​  ...]}, ​  "Cases" : { ​  "records" : [ ​  {"attributes": {"type":"Case", "referenceId":"ref3"}, ​  "" : "", "" : "", "" : ""} ​  ...]}, }}, ...] }
  • 33. Demo
  • 34. The (Near) Future ​ Extension of Batch and Composite ​ Outputs from one sub request to be used as inputs for the another
  • 35. Possible Future Features ​ Parameter-based values ​ Basic orchestration baked into /batch ​ Updates on /tree
  • 37. Aura and Lightning Component Framework Lightning Component Framework
  • 38. 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
  • 40. Many Components Many Server Trips XMLHttpRequest XMLHttpRequest XMLHttpRequest
  • 41. Actions: Interact with the Server •  Apex Method Surfaced to Lightning Components •  @AuraEnabled annotation
  • 42. Boxcarring: Many Actions, One XHR ActionService
  • 43. Caboose: Postpone High Volume Actions ActionService •  Defer High-Volume Actions •  Action.setCaboose()
  • 44. Action Service: Server Side API ​ Apex: Code on Force.com
  • 46. Upcoming Features ​ Integration of offline data store with Action service ​ Ability to prioritize actions
  • 47. Takeaways ​ Minimize server requests ​ Optimize CRUD-based APIs with aggregation ​ Optimize creation of hierarchical data ​ Client-side libraries to support request batching
  • 51. Q & A Peter Chittum Developer Evangelist @pchittum github.com/pchittum ​ Learn: developer.salesforce.com/trailhead ​ Meetup: bit.ly/ams-sf-devs