SlideShare uma empresa Scribd logo
1 de 19
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

Mais conteúdo relacionado

Mais procurados

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 2019Jayant Jindal
 
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-insSalesforce Developers
 
Salesforce Lightning Web Components - Open Source
Salesforce Lightning Web Components - Open SourceSalesforce Lightning Web Components - Open Source
Salesforce Lightning Web Components - Open SourceJayant 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 DebuggerSalesforce Developers
 
Forcelandia 2016 Wave App Development
Forcelandia 2016   Wave App DevelopmentForcelandia 2016   Wave App Development
Forcelandia 2016 Wave App DevelopmentSkip 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 ConnectSalesforce Developers
 
Salesforce Lightning Customization Roadmap (TDX18)
Salesforce Lightning Customization Roadmap (TDX18)Salesforce Lightning Customization Roadmap (TDX18)
Salesforce Lightning Customization Roadmap (TDX18)Developer Force
 
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 LightningSalesforce 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 AuthenticationSalesforce Developers
 
Agile Development with Heroku webinar
Agile Development with Heroku webinarAgile Development with Heroku webinar
Agile Development with Heroku webinarSalesforce 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 organizationSon 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 TemplatesJayant 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 2016Samuel De Rycke
 

Mais procurados (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
 

Semelhante a 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 CloudDreamforce
 
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 ExperiencePostman
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSalesforce 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 appRoy Gilad
 
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 APIsHormoz Tarevern
 
Tour of Heroku + Salesforce Integration Methods
Tour of Heroku + Salesforce Integration MethodsTour of Heroku + Salesforce Integration Methods
Tour of Heroku + Salesforce Integration MethodsSalesforce Developers
 
2019 Dreamforce Embedded Analytics
2019 Dreamforce   Embedded Analytics2019 Dreamforce   Embedded Analytics
2019 Dreamforce Embedded Analyticsaaronwinters
 
Dreamforce Web Portals
Dreamforce Web PortalsDreamforce Web Portals
Dreamforce Web Portalsgokubi
 
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 SparksSalesforce 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 LimitsRoy 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 EmployeesSalesforce 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 CloudSalesforce 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 OverviewVivek Chawla
 

Semelhante a 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
 

Mais de Pat Patterson

DevOps from the Provider Perspective
DevOps from the Provider PerspectiveDevOps from the Provider Perspective
DevOps from the Provider PerspectivePat 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 InsightsPat 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, HowPat 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 LakePat Patterson
 
Integrating with Einstein Analytics
Integrating with Einstein AnalyticsIntegrating with Einstein Analytics
Integrating with Einstein AnalyticsPat 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 RegistryPat 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 LakePat 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 StreamSetsPat 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 CassandraPat Patterson
 
Building Custom Big Data Integrations
Building Custom Big Data IntegrationsBuilding Custom Big Data Integrations
Building Custom Big Data IntegrationsPat 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 RESTPat 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 IdentityPat 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 ContextPat 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 AccessPat 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 FuturePat Patterson
 

Mais de 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
 

Último

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 

Último (20)

What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 

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!

Notas do Editor

  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.