SlideShare a Scribd company logo
Create a Force.com-
Powered Facebook
  App on Heroku

   Pat Patterson
   @metadaddy
   Principal Developer Evangelist
   salesforce.com
Safe Harbor Statement
“Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation and the oral remarks that
accompany it contain forward-looking statements the achievement of which involves 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. All statements other than statements of historical fact
could be deemed forward-looking, including any statements concerning new, planned or upgraded services or technology
developments, any projections of subscriber growth, earnings, revenues or other financial items and any statements regarding
strategies or plans of management for future operations, statements of belief and statements about future customer contracts or
future customer use of our services.
The risks and uncertainties referred to above include - but are not limited to - interruptions or delays in our service or our Web
hosting; our ability to complete and successfully release new and improved versions of our on-demand platform and development
environment; our new business model; problems integrating, launching or operating services based on newly acquired businesses
or technologies, breach of our security measures; possible fluctuations in our operating results and rate of growth; 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 CRM service; 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.

Any unreleased services or features referenced in this or other 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 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, except as required by law.
Agenda
• Brief overview of Heroku
• Create a Facebook app with Heroku
  – Pull data from Force.com
  – Show some best practices
  – Give away some money!
1,250,000+ Apps Running on Heroku
The Heroku Cloud Application Platform

Run Anything


Forget Servers          $ heroku create -s cedar



Deploy Instantly        $ git push heroku master



Scale with Ease


Extend with Add-ons
Heroku and Facebook:
    Even Simpler!
The Brief
• Create a Facebook app to
  – Retrieve a list of charities from Force.com
  – Collect votes on charities
  – Restrict users to a single vote
• Create a Force.com app to
  – Manage the list of charities
  – When the contest is over, initiate the approval
    process for a donation to the winning charity
Charity App Back-end
• Let’s look at how employees manage
  charities in Force.com
Force.com REST API
• Authenticate/authorize access via OAuth 2.0
• Records in Force.com identified by URLs
   – /services/data/v24.0/sobjects/Charity__c/a0
     0d0000002XU4r
• CRUD via POST/GET/PATCH/DELETE
• SOQL query interface
   – /services/data/v24.0/query?q=SELECT+Na
     me+FROM+Charity__c
Step 1
• Let’s extend our basic Facebook app
  to pull charity data from Force.com
Efficiency
• App gets charity data from Force.com
  on every page view
  – GOOD: data is timely
  – BAD: resource
    consumption, performance
Best Practice
• Let’s use Memcache to store charity
  data
  – Facebook app loads cache from
    Force.com
  – Force.com trigger flushes cache on any
    change
Step 2
• Add Memcacheaddon
• Store charity data in Memcache
• Configure Force.com app to flush
  cache on any change to charity data
Let’s Get Voting!
• But where do we store votes?
HerokuPostgres
• Managed SQL database
• Free shared-database addon for
  development
• Several tiers of paid service for
  production
Step 3
• Store votes in Postgres
• Expose vote totals via RESTful Web
  service
• Integrate with approval process in
  Force.com
Vote
• Insert Heroku app URL here!
Conclusion
• Use Heroku for your high-volume
  Facebook apps
• Use the Force.com REST API to
  integrate external apps with
  Force.com
• Integration is straightforward, but
  follow best practices to get a great
  result!
Resources

 www.heroku.com/facebook

 developer.force.com/REST

workbench.developerforce.com

     bit.ly/cs12-facebook

More Related Content

What's hot

Manage and consume the api
Manage and consume the apiManage and consume the api
Manage and consume the api
Achyuta Lakshmi Puvvala
 
Fremont Salesforce Community Group - Salesforce Labs Day - October 2019
Fremont Salesforce Community Group - Salesforce Labs Day - October 2019Fremont Salesforce Community Group - Salesforce Labs Day - October 2019
Fremont Salesforce Community Group - Salesforce Labs Day - October 2019
Jayant Jindal
 
Winter'18 Developer Preview Webinar
Winter'18 Developer Preview WebinarWinter'18 Developer Preview Webinar
Winter'18 Developer Preview Webinar
Salesforce Developers
 
Embed Customer Support into your Apps with Snap-ins
Embed Customer Support into your Apps with Snap-insEmbed Customer Support into your Apps with Snap-ins
Embed Customer Support into your Apps with Snap-ins
Salesforce Developers
 
Salesforce Lightning Web Components - Open Source
Salesforce Lightning Web Components - Open SourceSalesforce Lightning Web Components - Open Source
Salesforce Lightning Web Components - Open Source
Jayant Jindal
 
Unleash the Power of Apex Realtime Debugger
Unleash the Power of Apex Realtime DebuggerUnleash the Power of Apex Realtime Debugger
Unleash the Power of Apex Realtime Debugger
Salesforce Developers
 
Forcelandia 2016 Wave App Development
Forcelandia 2016   Wave App DevelopmentForcelandia 2016   Wave App Development
Forcelandia 2016 Wave App Development
Skip Sauls
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
Salesforce Developers
 
Building BOTS on App Cloud
Building BOTS on App CloudBuilding BOTS on App Cloud
Building BOTS on App Cloud
Salesforce Developers
 
Salesforce Lightning Customization Roadmap (TDX18)
Salesforce Lightning Customization Roadmap (TDX18)Salesforce Lightning Customization Roadmap (TDX18)
Salesforce Lightning Customization Roadmap (TDX18)
Developer Force
 
Summer '18 Developer Highlights
Summer '18 Developer HighlightsSummer '18 Developer Highlights
Summer '18 Developer Highlights
Salesforce Developers
 
Salesforce Lightning Supersession (TDX18)
Salesforce Lightning Supersession (TDX18)Salesforce Lightning Supersession (TDX18)
Salesforce Lightning Supersession (TDX18)
Developer Force
 
Salesforce Lightning Component Framework Roadmap (TDX18)
Salesforce Lightning Component Framework Roadmap (TDX18)Salesforce Lightning Component Framework Roadmap (TDX18)
Salesforce Lightning Component Framework Roadmap (TDX18)
Developer Force
 
Build Better Communities with Lightning
Build Better Communities with LightningBuild Better Communities with Lightning
Build Better Communities with Lightning
Salesforce Developers
 
Advanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationAdvanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social Authentication
Salesforce Developers
 
Agile Development with Heroku webinar
Agile Development with Heroku webinarAgile Development with Heroku webinar
Agile Development with Heroku webinar
Salesforce Developers
 
Modern UI development with Lightning Components - Spanish!
Modern UI development with Lightning Components - Spanish!Modern UI development with Lightning Components - Spanish!
Modern UI development with Lightning Components - Spanish!
Alba Azcona Rivas
 
Mule organization
Mule organizationMule organization
Mule organization
Son Nguyen
 
Fremont Salesforce Community Group - Salesforce Labs Day - Flow Templates
Fremont Salesforce Community Group - Salesforce Labs Day - Flow TemplatesFremont Salesforce Community Group - Salesforce Labs Day - Flow Templates
Fremont Salesforce Community Group - Salesforce Labs Day - Flow Templates
Jayant Jindal
 
Integration with the Salesforce App Cloud - Amsterdam 2016
Integration with the Salesforce App Cloud - Amsterdam 2016Integration with the Salesforce App Cloud - Amsterdam 2016
Integration with the Salesforce App Cloud - Amsterdam 2016
Samuel De Rycke
 

What's hot (20)

Manage and consume the api
Manage and consume the apiManage and consume the api
Manage and consume the api
 
Fremont Salesforce Community Group - Salesforce Labs Day - October 2019
Fremont Salesforce Community Group - Salesforce Labs Day - October 2019Fremont Salesforce Community Group - Salesforce Labs Day - October 2019
Fremont Salesforce Community Group - Salesforce Labs Day - October 2019
 
Winter'18 Developer Preview Webinar
Winter'18 Developer Preview WebinarWinter'18 Developer Preview Webinar
Winter'18 Developer Preview Webinar
 
Embed Customer Support into your Apps with Snap-ins
Embed Customer Support into your Apps with Snap-insEmbed Customer Support into your Apps with Snap-ins
Embed Customer Support into your Apps with Snap-ins
 
Salesforce Lightning Web Components - Open Source
Salesforce Lightning Web Components - Open SourceSalesforce Lightning Web Components - Open Source
Salesforce Lightning Web Components - Open Source
 
Unleash the Power of Apex Realtime Debugger
Unleash the Power of Apex Realtime DebuggerUnleash the Power of Apex Realtime Debugger
Unleash the Power of Apex Realtime Debugger
 
Forcelandia 2016 Wave App Development
Forcelandia 2016   Wave App DevelopmentForcelandia 2016   Wave App Development
Forcelandia 2016 Wave App Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 
Building BOTS on App Cloud
Building BOTS on App CloudBuilding BOTS on App Cloud
Building BOTS on App Cloud
 
Salesforce Lightning Customization Roadmap (TDX18)
Salesforce Lightning Customization Roadmap (TDX18)Salesforce Lightning Customization Roadmap (TDX18)
Salesforce Lightning Customization Roadmap (TDX18)
 
Summer '18 Developer Highlights
Summer '18 Developer HighlightsSummer '18 Developer Highlights
Summer '18 Developer Highlights
 
Salesforce Lightning Supersession (TDX18)
Salesforce Lightning Supersession (TDX18)Salesforce Lightning Supersession (TDX18)
Salesforce Lightning Supersession (TDX18)
 
Salesforce Lightning Component Framework Roadmap (TDX18)
Salesforce Lightning Component Framework Roadmap (TDX18)Salesforce Lightning Component Framework Roadmap (TDX18)
Salesforce Lightning Component Framework Roadmap (TDX18)
 
Build Better Communities with Lightning
Build Better Communities with LightningBuild Better Communities with Lightning
Build Better Communities with Lightning
 
Advanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social AuthenticationAdvanced Platform Series - OAuth and Social Authentication
Advanced Platform Series - OAuth and Social Authentication
 
Agile Development with Heroku webinar
Agile Development with Heroku webinarAgile Development with Heroku webinar
Agile Development with Heroku webinar
 
Modern UI development with Lightning Components - Spanish!
Modern UI development with Lightning Components - Spanish!Modern UI development with Lightning Components - Spanish!
Modern UI development with Lightning Components - Spanish!
 
Mule organization
Mule organizationMule organization
Mule organization
 
Fremont Salesforce Community Group - Salesforce Labs Day - Flow Templates
Fremont Salesforce Community Group - Salesforce Labs Day - Flow TemplatesFremont Salesforce Community Group - Salesforce Labs Day - Flow Templates
Fremont Salesforce Community Group - Salesforce Labs Day - Flow Templates
 
Integration with the Salesforce App Cloud - Amsterdam 2016
Integration with the Salesforce App Cloud - Amsterdam 2016Integration with the Salesforce App Cloud - Amsterdam 2016
Integration with the Salesforce App Cloud - Amsterdam 2016
 

Similar to Create a Force.com-Powered Facebook App on Heroku

Starting A Successful ISV Business with Salesforce (October 13, 2014)
Starting A Successful ISV Business with Salesforce (October 13, 2014)Starting A Successful ISV Business with Salesforce (October 13, 2014)
Starting A Successful ISV Business with Salesforce (October 13, 2014)
Salesforce Partners
 
Innovation Showcase: Top Public Sector Apps Built on Salesforce App Cloud
Innovation Showcase: Top Public Sector Apps Built on Salesforce App CloudInnovation Showcase: Top Public Sector Apps Built on Salesforce App Cloud
Innovation Showcase: Top Public Sector Apps Built on Salesforce App Cloud
Dreamforce
 
ISV Roadmap: Meet the PMs (October 13, 2014)
ISV Roadmap: Meet the PMs (October 13, 2014)ISV Roadmap: Meet the PMs (October 13, 2014)
ISV Roadmap: Meet the PMs (October 13, 2014)
Salesforce Partners
 
Sharing APIs at Scale for a Great Developer Experience
Sharing APIs at Scale for a Great Developer ExperienceSharing APIs at Scale for a Great Developer Experience
Sharing APIs at Scale for a Great Developer Experience
Postman
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com Canvas
Salesforce Developers
 
Salesforce Lightning component framework from 0 to app
Salesforce Lightning component framework from 0 to appSalesforce Lightning component framework from 0 to app
Salesforce Lightning component framework from 0 to app
Roy Gilad
 
Introduction to Flow
Introduction to FlowIntroduction to Flow
Introduction to Flow
Salesforce Admins
 
Dreamforce 2014 - Salesforce Python SDK for REST/SOAP APIs
Dreamforce 2014 - Salesforce Python SDK for REST/SOAP APIsDreamforce 2014 - Salesforce Python SDK for REST/SOAP APIs
Dreamforce 2014 - Salesforce Python SDK for REST/SOAP APIs
Hormoz Tarevern
 
Tour of Heroku + Salesforce Integration Methods
Tour of Heroku + Salesforce Integration MethodsTour of Heroku + Salesforce Integration Methods
Tour of Heroku + Salesforce Integration Methods
Salesforce Developers
 
2019 Dreamforce Embedded Analytics
2019 Dreamforce   Embedded Analytics2019 Dreamforce   Embedded Analytics
2019 Dreamforce Embedded Analytics
aaronwinters
 
Dreamforce Web Portals
Dreamforce Web PortalsDreamforce Web Portals
Dreamforce Web Portals
gokubi
 
Getting Started with Process Builder by Susan Sparks
Getting Started with Process Builder by Susan SparksGetting Started with Process Builder by Susan Sparks
Getting Started with Process Builder by Susan Sparks
Salesforce Admins
 
How to Use Salesforce Platform Events to Help With Salesforce Limits
How to Use Salesforce Platform Events to Help With Salesforce LimitsHow to Use Salesforce Platform Events to Help With Salesforce Limits
How to Use Salesforce Platform Events to Help With Salesforce Limits
Roy Gilad
 
APP Academy: Build Your First App (October 13, 2014)
APP Academy: Build Your First App (October 13, 2014)APP Academy: Build Your First App (October 13, 2014)
APP Academy: Build Your First App (October 13, 2014)
Salesforce Partners
 
Building Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your EmployeesBuilding Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your Employees
Salesforce Developers
 
Cutting Edge Mobile Development in the App Cloud
Cutting Edge Mobile Development in the App CloudCutting Edge Mobile Development in the App Cloud
Cutting Edge Mobile Development in the App Cloud
Salesforce Developers
 
Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...
Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...
Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...
Anna Loughnan Colquhoun
 
ISV Tech Talk: Environment Hub (Dreamforce 2015)
ISV Tech Talk: Environment Hub (Dreamforce 2015)ISV Tech Talk: Environment Hub (Dreamforce 2015)
ISV Tech Talk: Environment Hub (Dreamforce 2015)
Salesforce Partners
 
Turbocharging AppExchange
Turbocharging AppExchangeTurbocharging AppExchange
Turbocharging AppExchangedreamforce2006
 
San Diego Salesforce User Group - Lightning Overview
San Diego Salesforce User Group - Lightning OverviewSan Diego Salesforce User Group - Lightning Overview
San Diego Salesforce User Group - Lightning Overview
Vivek Chawla
 

Similar to Create a Force.com-Powered Facebook App on Heroku (20)

Starting A Successful ISV Business with Salesforce (October 13, 2014)
Starting A Successful ISV Business with Salesforce (October 13, 2014)Starting A Successful ISV Business with Salesforce (October 13, 2014)
Starting A Successful ISV Business with Salesforce (October 13, 2014)
 
Innovation Showcase: Top Public Sector Apps Built on Salesforce App Cloud
Innovation Showcase: Top Public Sector Apps Built on Salesforce App CloudInnovation Showcase: Top Public Sector Apps Built on Salesforce App Cloud
Innovation Showcase: Top Public Sector Apps Built on Salesforce App Cloud
 
ISV Roadmap: Meet the PMs (October 13, 2014)
ISV Roadmap: Meet the PMs (October 13, 2014)ISV Roadmap: Meet the PMs (October 13, 2014)
ISV Roadmap: Meet the PMs (October 13, 2014)
 
Sharing APIs at Scale for a Great Developer Experience
Sharing APIs at Scale for a Great Developer ExperienceSharing APIs at Scale for a Great Developer Experience
Sharing APIs at Scale for a Great Developer Experience
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com Canvas
 
Salesforce Lightning component framework from 0 to app
Salesforce Lightning component framework from 0 to appSalesforce Lightning component framework from 0 to app
Salesforce Lightning component framework from 0 to app
 
Introduction to Flow
Introduction to FlowIntroduction to Flow
Introduction to Flow
 
Dreamforce 2014 - Salesforce Python SDK for REST/SOAP APIs
Dreamforce 2014 - Salesforce Python SDK for REST/SOAP APIsDreamforce 2014 - Salesforce Python SDK for REST/SOAP APIs
Dreamforce 2014 - Salesforce Python SDK for REST/SOAP APIs
 
Tour of Heroku + Salesforce Integration Methods
Tour of Heroku + Salesforce Integration MethodsTour of Heroku + Salesforce Integration Methods
Tour of Heroku + Salesforce Integration Methods
 
2019 Dreamforce Embedded Analytics
2019 Dreamforce   Embedded Analytics2019 Dreamforce   Embedded Analytics
2019 Dreamforce Embedded Analytics
 
Dreamforce Web Portals
Dreamforce Web PortalsDreamforce Web Portals
Dreamforce Web Portals
 
Getting Started with Process Builder by Susan Sparks
Getting Started with Process Builder by Susan SparksGetting Started with Process Builder by Susan Sparks
Getting Started with Process Builder by Susan Sparks
 
How to Use Salesforce Platform Events to Help With Salesforce Limits
How to Use Salesforce Platform Events to Help With Salesforce LimitsHow to Use Salesforce Platform Events to Help With Salesforce Limits
How to Use Salesforce Platform Events to Help With Salesforce Limits
 
APP Academy: Build Your First App (October 13, 2014)
APP Academy: Build Your First App (October 13, 2014)APP Academy: Build Your First App (October 13, 2014)
APP Academy: Build Your First App (October 13, 2014)
 
Building Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your EmployeesBuilding Mobile Apps That Deliver Salesforce to Your Employees
Building Mobile Apps That Deliver Salesforce to Your Employees
 
Cutting Edge Mobile Development in the App Cloud
Cutting Edge Mobile Development in the App CloudCutting Edge Mobile Development in the App Cloud
Cutting Edge Mobile Development in the App Cloud
 
Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...
Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...
Spring 21 Salesforce Release Highlights with Awesome Admin Marc Baizman Welli...
 
ISV Tech Talk: Environment Hub (Dreamforce 2015)
ISV Tech Talk: Environment Hub (Dreamforce 2015)ISV Tech Talk: Environment Hub (Dreamforce 2015)
ISV Tech Talk: Environment Hub (Dreamforce 2015)
 
Turbocharging AppExchange
Turbocharging AppExchangeTurbocharging AppExchange
Turbocharging AppExchange
 
San Diego Salesforce User Group - Lightning Overview
San Diego Salesforce User Group - Lightning OverviewSan Diego Salesforce User Group - Lightning Overview
San Diego Salesforce User Group - Lightning Overview
 

More from Pat Patterson

DevOps from the Provider Perspective
DevOps from the Provider PerspectiveDevOps from the Provider Perspective
DevOps from the Provider Perspective
Pat Patterson
 
How Imprivata Combines External Data Sources for Business Insights
How Imprivata Combines External Data Sources for Business InsightsHow Imprivata Combines External Data Sources for Business Insights
How Imprivata Combines External Data Sources for Business Insights
Pat Patterson
 
Data Integration with Apache Kafka: What, Why, How
Data Integration with Apache Kafka: What, Why, HowData Integration with Apache Kafka: What, Why, How
Data Integration with Apache Kafka: What, Why, How
Pat Patterson
 
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Pat Patterson
 
Dealing with Drift: Building an Enterprise Data Lake
Dealing with Drift: Building an Enterprise Data LakeDealing with Drift: Building an Enterprise Data Lake
Dealing with Drift: Building an Enterprise Data Lake
Pat Patterson
 
Integrating with Einstein Analytics
Integrating with Einstein AnalyticsIntegrating with Einstein Analytics
Integrating with Einstein Analytics
Pat Patterson
 
Efficient Schemas in Motion with Kafka and Schema Registry
Efficient Schemas in Motion with Kafka and Schema RegistryEfficient Schemas in Motion with Kafka and Schema Registry
Efficient Schemas in Motion with Kafka and Schema Registry
Pat Patterson
 
Dealing With Drift - Building an Enterprise Data Lake
Dealing With Drift - Building an Enterprise Data LakeDealing With Drift - Building an Enterprise Data Lake
Dealing With Drift - Building an Enterprise Data Lake
Pat Patterson
 
Building Data Pipelines with Spark and StreamSets
Building Data Pipelines with Spark and StreamSetsBuilding Data Pipelines with Spark and StreamSets
Building Data Pipelines with Spark and StreamSets
Pat Patterson
 
Adaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and CassandraAdaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and Cassandra
Pat Patterson
 
Building Custom Big Data Integrations
Building Custom Big Data IntegrationsBuilding Custom Big Data Integrations
Building Custom Big Data Integrations
Pat Patterson
 
Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?
Pat Patterson
 
Open Source Big Data Ingestion - Without the Heartburn!
Open Source Big Data Ingestion - Without the Heartburn!Open Source Big Data Ingestion - Without the Heartburn!
Open Source Big Data Ingestion - Without the Heartburn!
Pat Patterson
 
Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?
Pat Patterson
 
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
Pat Patterson
 
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
Provisioning IDaaS - Using SCIM to Enable Cloud IdentityProvisioning IDaaS - Using SCIM to Enable Cloud Identity
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
Pat Patterson
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
Pat Patterson
 
Enterprise IoT: Data in Context
Enterprise IoT: Data in ContextEnterprise IoT: Data in Context
Enterprise IoT: Data in Context
Pat Patterson
 
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
Pat Patterson
 
API-Driven Relationships: Building The Trans-Internet Express of the Future
API-Driven Relationships: Building The Trans-Internet Express of the FutureAPI-Driven Relationships: Building The Trans-Internet Express of the Future
API-Driven Relationships: Building The Trans-Internet Express of the Future
Pat Patterson
 

More from Pat Patterson (20)

DevOps from the Provider Perspective
DevOps from the Provider PerspectiveDevOps from the Provider Perspective
DevOps from the Provider Perspective
 
How Imprivata Combines External Data Sources for Business Insights
How Imprivata Combines External Data Sources for Business InsightsHow Imprivata Combines External Data Sources for Business Insights
How Imprivata Combines External Data Sources for Business Insights
 
Data Integration with Apache Kafka: What, Why, How
Data Integration with Apache Kafka: What, Why, HowData Integration with Apache Kafka: What, Why, How
Data Integration with Apache Kafka: What, Why, How
 
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
Project Ouroboros: Using StreamSets Data Collector to Help Manage the StreamS...
 
Dealing with Drift: Building an Enterprise Data Lake
Dealing with Drift: Building an Enterprise Data LakeDealing with Drift: Building an Enterprise Data Lake
Dealing with Drift: Building an Enterprise Data Lake
 
Integrating with Einstein Analytics
Integrating with Einstein AnalyticsIntegrating with Einstein Analytics
Integrating with Einstein Analytics
 
Efficient Schemas in Motion with Kafka and Schema Registry
Efficient Schemas in Motion with Kafka and Schema RegistryEfficient Schemas in Motion with Kafka and Schema Registry
Efficient Schemas in Motion with Kafka and Schema Registry
 
Dealing With Drift - Building an Enterprise Data Lake
Dealing With Drift - Building an Enterprise Data LakeDealing With Drift - Building an Enterprise Data Lake
Dealing With Drift - Building an Enterprise Data Lake
 
Building Data Pipelines with Spark and StreamSets
Building Data Pipelines with Spark and StreamSetsBuilding Data Pipelines with Spark and StreamSets
Building Data Pipelines with Spark and StreamSets
 
Adaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and CassandraAdaptive Data Cleansing with StreamSets and Cassandra
Adaptive Data Cleansing with StreamSets and Cassandra
 
Building Custom Big Data Integrations
Building Custom Big Data IntegrationsBuilding Custom Big Data Integrations
Building Custom Big Data Integrations
 
Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?
 
Open Source Big Data Ingestion - Without the Heartburn!
Open Source Big Data Ingestion - Without the Heartburn!Open Source Big Data Ingestion - Without the Heartburn!
Open Source Big Data Ingestion - Without the Heartburn!
 
Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?Ingest and Stream Processing - What will you choose?
Ingest and Stream Processing - What will you choose?
 
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
 
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
Provisioning IDaaS - Using SCIM to Enable Cloud IdentityProvisioning IDaaS - Using SCIM to Enable Cloud Identity
Provisioning IDaaS - Using SCIM to Enable Cloud Identity
 
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
OData: Universal Data Solvent or Clunky Enterprise Goo? (GlueCon 2015)
 
Enterprise IoT: Data in Context
Enterprise IoT: Data in ContextEnterprise IoT: Data in Context
Enterprise IoT: Data in Context
 
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
 
API-Driven Relationships: Building The Trans-Internet Express of the Future
API-Driven Relationships: Building The Trans-Internet Express of the FutureAPI-Driven Relationships: Building The Trans-Internet Express of the Future
API-Driven Relationships: Building The Trans-Internet Express of the Future
 

Recently uploaded

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
Pierluigi Pugliese
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
SOFTTECHHUB
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
ThomasParaiso2
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 

Recently uploaded (20)

By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024By Design, not by Accident - Agile Venture Bolzano 2024
By Design, not by Accident - Agile Venture Bolzano 2024
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...GridMate - End to end testing is a critical piece to ensure quality and avoid...
GridMate - End to end testing is a critical piece to ensure quality and avoid...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 

Create a Force.com-Powered Facebook App on Heroku

  • 1. Create a Force.com- Powered Facebook App on Heroku Pat Patterson @metadaddy Principal Developer Evangelist salesforce.com
  • 2. Safe Harbor Statement “Safe harbor” statement under the Private Securities Litigation Reform Act of 1995: This presentation and the oral remarks that accompany it contain forward-looking statements the achievement of which involves 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. All statements other than statements of historical fact could be deemed forward-looking, including any statements concerning new, planned or upgraded services or technology developments, any projections of subscriber growth, earnings, revenues or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief and statements about future customer contracts or future customer use of our services. The risks and uncertainties referred to above include - but are not limited to - interruptions or delays in our service or our Web hosting; our ability to complete and successfully release new and improved versions of our on-demand platform and development environment; our new business model; problems integrating, launching or operating services based on newly acquired businesses or technologies, breach of our security measures; possible fluctuations in our operating results and rate of growth; 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 CRM service; 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. Any unreleased services or features referenced in this or other 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 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, except as required by law.
  • 3. Agenda • Brief overview of Heroku • Create a Facebook app with Heroku – Pull data from Force.com – Show some best practices – Give away some money!
  • 5. The Heroku Cloud Application Platform Run Anything Forget Servers $ heroku create -s cedar Deploy Instantly $ git push heroku master Scale with Ease Extend with Add-ons
  • 6. Heroku and Facebook: Even Simpler!
  • 7. The Brief • Create a Facebook app to – Retrieve a list of charities from Force.com – Collect votes on charities – Restrict users to a single vote • Create a Force.com app to – Manage the list of charities – When the contest is over, initiate the approval process for a donation to the winning charity
  • 8. Charity App Back-end • Let’s look at how employees manage charities in Force.com
  • 9. Force.com REST API • Authenticate/authorize access via OAuth 2.0 • Records in Force.com identified by URLs – /services/data/v24.0/sobjects/Charity__c/a0 0d0000002XU4r • CRUD via POST/GET/PATCH/DELETE • SOQL query interface – /services/data/v24.0/query?q=SELECT+Na me+FROM+Charity__c
  • 10. Step 1 • Let’s extend our basic Facebook app to pull charity data from Force.com
  • 11. Efficiency • App gets charity data from Force.com on every page view – GOOD: data is timely – BAD: resource consumption, performance
  • 12. Best Practice • Let’s use Memcache to store charity data – Facebook app loads cache from Force.com – Force.com trigger flushes cache on any change
  • 13. Step 2 • Add Memcacheaddon • Store charity data in Memcache • Configure Force.com app to flush cache on any change to charity data
  • 14. Let’s Get Voting! • But where do we store votes?
  • 15. HerokuPostgres • Managed SQL database • Free shared-database addon for development • Several tiers of paid service for production
  • 16. Step 3 • Store votes in Postgres • Expose vote totals via RESTful Web service • Integrate with approval process in Force.com
  • 17. Vote • Insert Heroku app URL here!
  • 18. Conclusion • Use Heroku for your high-volume Facebook apps • Use the Force.com REST API to integrate external apps with Force.com • Integration is straightforward, but follow best practices to get a great result!

Editor's Notes

  1. Pre-session checklist: facebook dev page, workbench, Heroku home page, https://addons.heroku.com/
  2. Show ‘Trust & Manage’ tab of Heroku website to see current number
  3. Heroku makes cloud development simple
  4. Create a default Facebook app in Heroku. git clone to retrieve source. Point out envvars for config, mogli for Facebook Graph API interactions.
  5. Show ‘Charities’ tab in Cloudstock app in Force.com
  6. Show workbench to query data
  7. Copy over ‘stage 1’ source code. Point out oauth2 Ruby gem, new envvars for Force.com credentials, OAuth 2.0 log in, one line of code to pull charities from Force.com, code in index.erb to show charities. Commit, push to heroku, try running – oops!!! No values for envvars! Run script to set env vars. Try running again. Invite audience to hit app. Refresh app a few times. Explain how it’s likely a bit slow, since all traffic is being handled by a single dyno – let’s fix that right now by scaling it to 5 dynos.
  8. Make a change to one of the charity’s logos then refresh to show that we do always see fresh data. Invite audience to hit app. Go to Force.com System Overview page and show API usage increasing as the page is hit.
  9. Go to Herokuaddons page to point out Memcache add on.
  10. AddMemcacheaddon, copy over ‘stage 2’ source code, point out use of Dalli Ruby gem for Memcache. Point out caching – charity data, plus access token/instance URL for Force.com. Point out cache flush code. Go to Force.com app, show trigger, cache flush method, update remote site setting, custom setting. Push new code. Invite audience to start hitting the app and watch the API Usage meter not change. Reverse the change we made earlier in Force.com and show that charity data is updated, and API usage incremented once.
  11. Our brief says we need to integrate with approvals, so our Force.com app needs access to voting data, but where do we actually store it? Ask the audience – where should we store the votes?
  12. Go to addons page and show levels of HerokuPostgres service.
  13. Add shared-databaseaddon. Point out DataMapper usage, voting functionality – jQuery click handler posts vote to Ruby app
  14. Refresh the page a few times as the votes come in. When audience is all done, show code in FB app to return vote counts. Go to Force.com and show code to pull vote counts, initiate approval. Go to VF page and show vote counts, click button to initiate approval, show record is locked for approval.