SlideShare a Scribd company logo
Igor Androsov
Cloud Architect
igor-androsov@bisk.com
@iandrosov
Mobilize Salesforce Data Using Twelve-Factor Apps on
Heroku
Best practices for building modern cloud applications
Forward-Looking Statements
Statement under the Private Securities Litigation Reform Act of 1995:
This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any
of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking
statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or
service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for
future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts
or use of our services.
The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our
service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth,
interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible
mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our
employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com
products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of
salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most
recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information
section of our Web site.
Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not
be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available.
Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
How to turn your ideas,
wireframes, and designs to
functional production app –
Product Engineer
Build Me a Mobile App
It is Simple right?
Twelve-Factor App
methodology helps Product
Engineer/s
Ideas & Concepts to App
Twelve-Factor Journey to the AppStore
Tools
Heroku, Postgres,
Heroku Connect
Swagger, Node.js,
ES6/JavaScript
iOS mobile app built
with Swift 3, Xcode 8
Salesforce,
Force.com, APEX,
AppCloud, Lightning
Platforms, Frameworks & Languages
API Design & Documentation – Swagger Demo Setup
With API current
documentation is key
Design API with Extensible
grammar YAML, JSON or
RAML enables rapid iteration,
validation & testability.
Swagger, Apiary, Apigee,
tools to design API
Modern cloud apps are API first
Enter Twelve-Factors Codebase
1
2
3
4
5
Port Binding
7
Dependencies
Configuration
Backing Services
Build, Release & Run
ProcessConcurrency 6
Disposability
8
9
10
11
12Admin Processes
Logs
Dev, Prod Parity
1. Codebase
Git, GitHub, SVN etc.
Code base in single
repository
App is single codebase
Many apps should not share
same code base
Create shared Libraries &
Frameworks
One codebase tracked in revision control, many deploys
2. Dependencies
Explicitly declare and isolate dependencies
Automate dependencies with
tools & package managers
Use package manager when
available, (most modern
runtimes have PM)
Node.js & JS – NPM
Xcode - cocoapods
3. Configuration
Configuration, is anything
that vary between
environments.
DB Connections,
credentials, etc.
Code Does Not!
Heroku – environment
variables
Xcode – build targets & plist
Store configuration in the environment
4. Backing Services
Define your dependencies
cleanly gives system flexibility
Each part in a system
abstracted from complexity of
another
…good architecture
Heroku – AWS S3, DB,
Salesforce etc.
Mobile – REST APIs &
services
Treat Backing Service as attached resources referenced by endpoint or URL
5. Build, Release & Run
Follow your chosen
framework build process
Strictly Separate Build & Run Stages
6. Process
As app scales it may run on
many servers
That code should run
stateless
State is important to
business - keep the state in
an external reliable store.
Heroku Dynos – isolated,
lightweight, share nothing,
Linux containers
Execute App as One or More Stateless Processes
7. Port Binding
Web-app service typically
exposed over HTTP on some
port
Node.js Express framework
& Swagger runtime port
binding
Export Services via port binding
8. Concurrency
Run your code as lots of
small processes.
Node has limited scaling
ability due to single threaded
nature
Node.js must fork processes
– “clustering”
Scale out via process model
Enable Concurrency in your app - Demo
Node.js clustering with Throng
9. Disposability
Maximize robustness with fast startup and graceful shutdown
New versions of your app
should launch quick and
start handling traffic.
Apps must handle
interruptions or shutdown
requests gracefully.
10. Development, Production Parity
Very simple with Heroku
Pipeline
Automated deployments CI
Pipeline Promotion*
Keep development, staging and production as similar as possible
11. Logs
Monitor Logs
Listen to log events & errors
Filter events and actions
Treat Logs as event stream
12. Admin Processes
Console is critical
administrative and
debugging tool
Heroku Toolbelt provides
command line administration
Can be scripted & automated
Run admin/management tasks as one-off processes
Real data, real fast with
Heroku Connect.
It is NOT ETL, rather data
synchronization tool for
Salesforce data & Postgres
Database
Synchronize Real Data – Demo
Heroku Connect
Summary
What did we just do?
Architecture Anatomy
Demo app anatomy in Twelve-Factors
API
Limit,
License
Resources
Heroku Dev Center - https://devcenter.heroku.com
• Heroku Postgres - https://www.heroku.com/postgres
• Heroku Connect - https://www.heroku.com/connect
• Papertail - https://elements.heroku.com/addons/papertrail
Node.js - https://nodejs.org
• NPM - https://www.npmjs.com
• Swagger - http://swagger.io
Swift - https://swift.org
• XCode - https://developer.apple.com/xcode/ide/
• Cocoapods - https://cocoapods.org
Github repository - https://github.com/iandrosov/df16-harvest-api
Twitter: @iandrosov
Thank Y u

More Related Content

What's hot

Data Democracy: Use Lightning Connect & Heroku to Visualize any Data, Anywhere
Data Democracy: Use Lightning Connect & Heroku to Visualize any Data, AnywhereData Democracy: Use Lightning Connect & Heroku to Visualize any Data, Anywhere
Data Democracy: Use Lightning Connect & Heroku to Visualize any Data, Anywhere
Salesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
Salesforce Developers
 
Intro to the Salesforce Mobile SDK: Building iOS Apps Webinar
Intro to the Salesforce Mobile SDK: Building iOS Apps WebinarIntro to the Salesforce Mobile SDK: Building iOS Apps Webinar
Intro to the Salesforce Mobile SDK: Building iOS Apps Webinar
Salesforce Developers
 
SD DUG Salesforce Lightning Week
SD DUG Salesforce Lightning WeekSD DUG Salesforce Lightning Week
SD DUG Salesforce Lightning Week
Jeff Douglas
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforce
Mark Adcock
 
Roadmap Lightning Updates (November 3, 2016)
Roadmap Lightning Updates (November 3, 2016)Roadmap Lightning Updates (November 3, 2016)
Roadmap Lightning Updates (November 3, 2016)
Salesforce Partners
 
Reinvent your App Dev Lifecycle with Continuous Delivery on Heroku
Reinvent your App Dev Lifecycle with Continuous Delivery on HerokuReinvent your App Dev Lifecycle with Continuous Delivery on Heroku
Reinvent your App Dev Lifecycle with Continuous Delivery on Heroku
Salesforce Developers
 
Lightning Out: Components for the Rest of the World
Lightning Out: Components for the Rest of the WorldLightning Out: Components for the Rest of the World
Lightning Out: Components for the Rest of the World
Salesforce Developers
 
Streamline Selenium Testing with Page Flow Navigation
Streamline Selenium Testing with Page Flow NavigationStreamline Selenium Testing with Page Flow Navigation
Streamline Selenium Testing with Page Flow Navigation
Salesforce Developers
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Jeff Douglas
 
Forcelandia 2015
Forcelandia 2015Forcelandia 2015
Forcelandia 2015
Jeff Douglas
 
Secure Development on the Salesforce Platform - Part 3
Secure Development on the Salesforce Platform - Part 3Secure Development on the Salesforce Platform - Part 3
Secure Development on the Salesforce Platform - Part 3
Mark Adcock
 
What is CloudSpokes?
What is CloudSpokes?What is CloudSpokes?
What is CloudSpokes?
Raymond Gao
 
Introduction to lightning out df16
Introduction to lightning out   df16Introduction to lightning out   df16
Introduction to lightning out df16
Mohith Shrivastava
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comSalesforce Developers
 
Best Practices for Lightning Apps
Best Practices for Lightning AppsBest Practices for Lightning Apps
Best Practices for Lightning Apps
Mark Adcock
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comSalesforce Developers
 
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Salesforce Developers
 
Build Next-gen Apps Faster with Lightning Components
Build Next-gen Apps Faster with Lightning ComponentsBuild Next-gen Apps Faster with Lightning Components
Build Next-gen Apps Faster with Lightning Components
Salesforce Developers
 
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less time
Abhinav Gupta
 

What's hot (20)

Data Democracy: Use Lightning Connect & Heroku to Visualize any Data, Anywhere
Data Democracy: Use Lightning Connect & Heroku to Visualize any Data, AnywhereData Democracy: Use Lightning Connect & Heroku to Visualize any Data, Anywhere
Data Democracy: Use Lightning Connect & Heroku to Visualize any Data, Anywhere
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
Intro to the Salesforce Mobile SDK: Building iOS Apps Webinar
Intro to the Salesforce Mobile SDK: Building iOS Apps WebinarIntro to the Salesforce Mobile SDK: Building iOS Apps Webinar
Intro to the Salesforce Mobile SDK: Building iOS Apps Webinar
 
SD DUG Salesforce Lightning Week
SD DUG Salesforce Lightning WeekSD DUG Salesforce Lightning Week
SD DUG Salesforce Lightning Week
 
Integrating with salesforce
Integrating with salesforceIntegrating with salesforce
Integrating with salesforce
 
Roadmap Lightning Updates (November 3, 2016)
Roadmap Lightning Updates (November 3, 2016)Roadmap Lightning Updates (November 3, 2016)
Roadmap Lightning Updates (November 3, 2016)
 
Reinvent your App Dev Lifecycle with Continuous Delivery on Heroku
Reinvent your App Dev Lifecycle with Continuous Delivery on HerokuReinvent your App Dev Lifecycle with Continuous Delivery on Heroku
Reinvent your App Dev Lifecycle with Continuous Delivery on Heroku
 
Lightning Out: Components for the Rest of the World
Lightning Out: Components for the Rest of the WorldLightning Out: Components for the Rest of the World
Lightning Out: Components for the Rest of the World
 
Streamline Selenium Testing with Page Flow Navigation
Streamline Selenium Testing with Page Flow NavigationStreamline Selenium Testing with Page Flow Navigation
Streamline Selenium Testing with Page Flow Navigation
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
 
Forcelandia 2015
Forcelandia 2015Forcelandia 2015
Forcelandia 2015
 
Secure Development on the Salesforce Platform - Part 3
Secure Development on the Salesforce Platform - Part 3Secure Development on the Salesforce Platform - Part 3
Secure Development on the Salesforce Platform - Part 3
 
What is CloudSpokes?
What is CloudSpokes?What is CloudSpokes?
What is CloudSpokes?
 
Introduction to lightning out df16
Introduction to lightning out   df16Introduction to lightning out   df16
Introduction to lightning out df16
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
 
Best Practices for Lightning Apps
Best Practices for Lightning AppsBest Practices for Lightning Apps
Best Practices for Lightning Apps
 
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.comCreating HTML5 Applications with jQuery Mobile, Ruby and Database.com
Creating HTML5 Applications with jQuery Mobile, Ruby and Database.com
 
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Build Next-gen Apps Faster with Lightning Components
Build Next-gen Apps Faster with Lightning ComponentsBuild Next-gen Apps Faster with Lightning Components
Build Next-gen Apps Faster with Lightning Components
 
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less time
 

Viewers also liked

A Window into Salesforce Data Management
A Window into Salesforce Data ManagementA Window into Salesforce Data Management
A Window into Salesforce Data Management
Darren Cunningham
 
Visualize Your Data with Salesforce Analytics API and D3
Visualize Your Data with Salesforce Analytics API and D3Visualize Your Data with Salesforce Analytics API and D3
Visualize Your Data with Salesforce Analytics API and D3
Salesforce Developers
 
7 Step Data Cleanse: Salesforce Hygiene
7 Step Data Cleanse: Salesforce Hygiene7 Step Data Cleanse: Salesforce Hygiene
7 Step Data Cleanse: Salesforce Hygiene
CloudFixer
 
Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013
John Stevenson
 
Heroku 101 py con 2015 - David Gouldin
Heroku 101   py con 2015 - David GouldinHeroku 101   py con 2015 - David Gouldin
Heroku 101 py con 2015 - David Gouldin
Heroku
 
Creating an Effective MDM Strategy for Salesforce
Creating an Effective MDM Strategy for SalesforceCreating an Effective MDM Strategy for Salesforce
Creating an Effective MDM Strategy for Salesforce
Perficient, Inc.
 

Viewers also liked (6)

A Window into Salesforce Data Management
A Window into Salesforce Data ManagementA Window into Salesforce Data Management
A Window into Salesforce Data Management
 
Visualize Your Data with Salesforce Analytics API and D3
Visualize Your Data with Salesforce Analytics API and D3Visualize Your Data with Salesforce Analytics API and D3
Visualize Your Data with Salesforce Analytics API and D3
 
7 Step Data Cleanse: Salesforce Hygiene
7 Step Data Cleanse: Salesforce Hygiene7 Step Data Cleanse: Salesforce Hygiene
7 Step Data Cleanse: Salesforce Hygiene
 
Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013Introduction to Heroku - CCT London 2013
Introduction to Heroku - CCT London 2013
 
Heroku 101 py con 2015 - David Gouldin
Heroku 101   py con 2015 - David GouldinHeroku 101   py con 2015 - David Gouldin
Heroku 101 py con 2015 - David Gouldin
 
Creating an Effective MDM Strategy for Salesforce
Creating an Effective MDM Strategy for SalesforceCreating an Effective MDM Strategy for Salesforce
Creating an Effective MDM Strategy for Salesforce
 

Similar to Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku

Suisse Romande SF DG - Lightning workshop
Suisse Romande SF DG - Lightning workshopSuisse Romande SF DG - Lightning workshop
Suisse Romande SF DG - Lightning workshop
Gnanasekaran Thoppae
 
Lightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE EvolvedLightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE Evolved
Salesforce Developers
 
[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum
BeMyApp
 
Lightning Workshop London
Lightning Workshop LondonLightning Workshop London
Lightning Workshop London
Keir Bowden
 
Best Practices for Creating Scalable Apps with Heroku
Best Practices for Creating Scalable Apps with HerokuBest Practices for Creating Scalable Apps with Heroku
Best Practices for Creating Scalable Apps with Heroku
Salesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
Salesforce Developers
 
Trailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App CloudTrailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App Cloud
John Stevenson
 
Lightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René WinkelmeyerLightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René Winkelmeyer
CzechDreamin
 
Salesforce Lightning workshop Hartford - 12 March
Salesforce Lightning workshop Hartford - 12 MarchSalesforce Lightning workshop Hartford - 12 March
Salesforce Lightning workshop Hartford - 12 March
Jitendra Zaa
 
Building JavaScript Applications on the Salesforce1 Platform
Building JavaScript Applications on the Salesforce1 PlatformBuilding JavaScript Applications on the Salesforce1 Platform
Building JavaScript Applications on the Salesforce1 Platform
Salesforce Developers
 
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
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
Salesforce Developers
 
Build, Manage, and Deploy Mobile Apps Faster with App Cloud Mobile
Build, Manage, and Deploy Mobile Apps Faster with App Cloud MobileBuild, Manage, and Deploy Mobile Apps Faster with App Cloud Mobile
Build, Manage, and Deploy Mobile Apps Faster with App Cloud Mobile
Salesforce Developers
 
Build Cloud & Mobile App on Salesforce Force.com Platform in 15 mins
Build Cloud & Mobile App on Salesforce Force.com Platform in 15 minsBuild Cloud & Mobile App on Salesforce Force.com Platform in 15 mins
Build Cloud & Mobile App on Salesforce Force.com Platform in 15 mins
Kashi Ahmed
 
Build your API with Force.com and Heroku
Build your API with Force.com and HerokuBuild your API with Force.com and Heroku
Build your API with Force.com and Heroku
Jeff Douglas
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
Building Command-line Tools with the Tooling API
Building Command-line Tools with the Tooling APIBuilding Command-line Tools with the Tooling API
Building Command-line Tools with the Tooling API
Jeff Douglas
 
Building einstein analytics apps uk-compressed
Building einstein analytics apps   uk-compressedBuilding einstein analytics apps   uk-compressed
Building einstein analytics apps uk-compressed
rikkehovgaard
 
CloudOps evening presentation from Salesforce.com
CloudOps evening presentation from Salesforce.comCloudOps evening presentation from Salesforce.com
CloudOps evening presentation from Salesforce.com
Alistair Croll
 
2. 8 things that will make your business love your developers again
2. 8 things that will make your business love your developers again2. 8 things that will make your business love your developers again
2. 8 things that will make your business love your developers againEuroCloud
 

Similar to Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku (20)

Suisse Romande SF DG - Lightning workshop
Suisse Romande SF DG - Lightning workshopSuisse Romande SF DG - Lightning workshop
Suisse Romande SF DG - Lightning workshop
 
Lightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE EvolvedLightning Developer Experience, Eclipse IDE Evolved
Lightning Developer Experience, Eclipse IDE Evolved
 
[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum[MBF2] Plate-forme Salesforce par Peter Chittum
[MBF2] Plate-forme Salesforce par Peter Chittum
 
Lightning Workshop London
Lightning Workshop LondonLightning Workshop London
Lightning Workshop London
 
Best Practices for Creating Scalable Apps with Heroku
Best Practices for Creating Scalable Apps with HerokuBest Practices for Creating Scalable Apps with Heroku
Best Practices for Creating Scalable Apps with Heroku
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
Trailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App CloudTrailhead live - Overview of Salesforce App Cloud
Trailhead live - Overview of Salesforce App Cloud
 
Lightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René WinkelmeyerLightning Web Components - A new era, René Winkelmeyer
Lightning Web Components - A new era, René Winkelmeyer
 
Salesforce Lightning workshop Hartford - 12 March
Salesforce Lightning workshop Hartford - 12 MarchSalesforce Lightning workshop Hartford - 12 March
Salesforce Lightning workshop Hartford - 12 March
 
Building JavaScript Applications on the Salesforce1 Platform
Building JavaScript Applications on the Salesforce1 PlatformBuilding JavaScript Applications on the Salesforce1 Platform
Building JavaScript Applications on the Salesforce1 Platform
 
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
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Build, Manage, and Deploy Mobile Apps Faster with App Cloud Mobile
Build, Manage, and Deploy Mobile Apps Faster with App Cloud MobileBuild, Manage, and Deploy Mobile Apps Faster with App Cloud Mobile
Build, Manage, and Deploy Mobile Apps Faster with App Cloud Mobile
 
Build Cloud & Mobile App on Salesforce Force.com Platform in 15 mins
Build Cloud & Mobile App on Salesforce Force.com Platform in 15 minsBuild Cloud & Mobile App on Salesforce Force.com Platform in 15 mins
Build Cloud & Mobile App on Salesforce Force.com Platform in 15 mins
 
Build your API with Force.com and Heroku
Build your API with Force.com and HerokuBuild your API with Force.com and Heroku
Build your API with Force.com and Heroku
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Building Command-line Tools with the Tooling API
Building Command-line Tools with the Tooling APIBuilding Command-line Tools with the Tooling API
Building Command-line Tools with the Tooling API
 
Building einstein analytics apps uk-compressed
Building einstein analytics apps   uk-compressedBuilding einstein analytics apps   uk-compressed
Building einstein analytics apps uk-compressed
 
CloudOps evening presentation from Salesforce.com
CloudOps evening presentation from Salesforce.comCloudOps evening presentation from Salesforce.com
CloudOps evening presentation from Salesforce.com
 
2. 8 things that will make your business love your developers again
2. 8 things that will make your business love your developers again2. 8 things that will make your business love your developers again
2. 8 things that will make your business love your developers again
 

Recently uploaded

Acorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutesAcorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutes
IP ServerOne
 
Eureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 PresentationEureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 Presentation
Access Innovations, Inc.
 
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptxsomanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
Howard Spence
 
Getting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control TowerGetting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control Tower
Vladimir Samoylov
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Sebastiano Panichella
 
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
0x01 - Newton's Third Law:  Static vs. Dynamic Abusers0x01 - Newton's Third Law:  Static vs. Dynamic Abusers
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
OWASP Beja
 
Obesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditionsObesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditions
Faculty of Medicine And Health Sciences
 
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXOBitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Matjaž Lipuš
 
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Orkestra
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
Sebastiano Panichella
 
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
OECD Directorate for Financial and Enterprise Affairs
 
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Sebastiano Panichella
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
khadija278284
 

Recently uploaded (13)

Acorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutesAcorn Recovery: Restore IT infra within minutes
Acorn Recovery: Restore IT infra within minutes
 
Eureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 PresentationEureka, I found it! - Special Libraries Association 2021 Presentation
Eureka, I found it! - Special Libraries Association 2021 Presentation
 
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptxsomanykidsbutsofewfathers-140705000023-phpapp02.pptx
somanykidsbutsofewfathers-140705000023-phpapp02.pptx
 
Getting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control TowerGetting started with Amazon Bedrock Studio and Control Tower
Getting started with Amazon Bedrock Studio and Control Tower
 
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...Doctoral Symposium at the 17th IEEE International Conference on Software Test...
Doctoral Symposium at the 17th IEEE International Conference on Software Test...
 
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
0x01 - Newton's Third Law:  Static vs. Dynamic Abusers0x01 - Newton's Third Law:  Static vs. Dynamic Abusers
0x01 - Newton's Third Law: Static vs. Dynamic Abusers
 
Obesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditionsObesity causes and management and associated medical conditions
Obesity causes and management and associated medical conditions
 
Bitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXOBitcoin Lightning wallet and tic-tac-toe game XOXO
Bitcoin Lightning wallet and tic-tac-toe game XOXO
 
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
Sharpen existing tools or get a new toolbox? Contemporary cluster initiatives...
 
International Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software TestingInternational Workshop on Artificial Intelligence in Software Testing
International Workshop on Artificial Intelligence in Software Testing
 
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
Competition and Regulation in Professional Services – KLEINER – June 2024 OEC...
 
Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...Announcement of 18th IEEE International Conference on Software Testing, Verif...
Announcement of 18th IEEE International Conference on Software Testing, Verif...
 
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdfBonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
Bonzo subscription_hjjjjjjjj5hhhhhhh_2024.pdf
 

Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku

  • 1. Igor Androsov Cloud Architect igor-androsov@bisk.com @iandrosov Mobilize Salesforce Data Using Twelve-Factor Apps on Heroku Best practices for building modern cloud applications
  • 2. Forward-Looking Statements Statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3. How to turn your ideas, wireframes, and designs to functional production app – Product Engineer Build Me a Mobile App It is Simple right?
  • 4. Twelve-Factor App methodology helps Product Engineer/s Ideas & Concepts to App Twelve-Factor Journey to the AppStore
  • 5. Tools Heroku, Postgres, Heroku Connect Swagger, Node.js, ES6/JavaScript iOS mobile app built with Swift 3, Xcode 8 Salesforce, Force.com, APEX, AppCloud, Lightning Platforms, Frameworks & Languages
  • 6. API Design & Documentation – Swagger Demo Setup With API current documentation is key Design API with Extensible grammar YAML, JSON or RAML enables rapid iteration, validation & testability. Swagger, Apiary, Apigee, tools to design API Modern cloud apps are API first
  • 7. Enter Twelve-Factors Codebase 1 2 3 4 5 Port Binding 7 Dependencies Configuration Backing Services Build, Release & Run ProcessConcurrency 6 Disposability 8 9 10 11 12Admin Processes Logs Dev, Prod Parity
  • 8. 1. Codebase Git, GitHub, SVN etc. Code base in single repository App is single codebase Many apps should not share same code base Create shared Libraries & Frameworks One codebase tracked in revision control, many deploys
  • 9. 2. Dependencies Explicitly declare and isolate dependencies Automate dependencies with tools & package managers Use package manager when available, (most modern runtimes have PM) Node.js & JS – NPM Xcode - cocoapods
  • 10. 3. Configuration Configuration, is anything that vary between environments. DB Connections, credentials, etc. Code Does Not! Heroku – environment variables Xcode – build targets & plist Store configuration in the environment
  • 11. 4. Backing Services Define your dependencies cleanly gives system flexibility Each part in a system abstracted from complexity of another …good architecture Heroku – AWS S3, DB, Salesforce etc. Mobile – REST APIs & services Treat Backing Service as attached resources referenced by endpoint or URL
  • 12. 5. Build, Release & Run Follow your chosen framework build process Strictly Separate Build & Run Stages
  • 13. 6. Process As app scales it may run on many servers That code should run stateless State is important to business - keep the state in an external reliable store. Heroku Dynos – isolated, lightweight, share nothing, Linux containers Execute App as One or More Stateless Processes
  • 14. 7. Port Binding Web-app service typically exposed over HTTP on some port Node.js Express framework & Swagger runtime port binding Export Services via port binding
  • 15. 8. Concurrency Run your code as lots of small processes. Node has limited scaling ability due to single threaded nature Node.js must fork processes – “clustering” Scale out via process model
  • 16. Enable Concurrency in your app - Demo Node.js clustering with Throng
  • 17. 9. Disposability Maximize robustness with fast startup and graceful shutdown New versions of your app should launch quick and start handling traffic. Apps must handle interruptions or shutdown requests gracefully.
  • 18. 10. Development, Production Parity Very simple with Heroku Pipeline Automated deployments CI Pipeline Promotion* Keep development, staging and production as similar as possible
  • 19. 11. Logs Monitor Logs Listen to log events & errors Filter events and actions Treat Logs as event stream
  • 20. 12. Admin Processes Console is critical administrative and debugging tool Heroku Toolbelt provides command line administration Can be scripted & automated Run admin/management tasks as one-off processes
  • 21. Real data, real fast with Heroku Connect. It is NOT ETL, rather data synchronization tool for Salesforce data & Postgres Database Synchronize Real Data – Demo Heroku Connect
  • 23. Architecture Anatomy Demo app anatomy in Twelve-Factors API Limit, License
  • 24. Resources Heroku Dev Center - https://devcenter.heroku.com • Heroku Postgres - https://www.heroku.com/postgres • Heroku Connect - https://www.heroku.com/connect • Papertail - https://elements.heroku.com/addons/papertrail Node.js - https://nodejs.org • NPM - https://www.npmjs.com • Swagger - http://swagger.io Swift - https://swift.org • XCode - https://developer.apple.com/xcode/ide/ • Cocoapods - https://cocoapods.org Github repository - https://github.com/iandrosov/df16-harvest-api Twitter: @iandrosov

Editor's Notes

  1. At BISK we believe in innovative online learning solutions to elevate the lives of people all over the world.
  2. Key Takeaway: We are a publicly traded company. Please make your buying decisions only on the products commercially available from Salesforce. Talk Track: Before I begin, just a quick note that when considering future developments, whether by us or with any other solution provider, you should always base your purchasing decisions on what is currently available.
  3. Story on building an app. How to turn concepts, designs, agile stories and great ideas into production app? To help bridge that gap of loose agile stories we need that allusive skill of a Product Engineer – somebody with skills of a coder who can also translate endless requirement streams into meaningful information that can be understood by other developers who will collaborate and help build our app.
  4. For better collaboration with globally distributed developers for this app we will see how to apply 12-factor app methodology with several techniques specific to platform and developer tools on this project. Swagger live API documentation, Xcode storyboard references enabled us to split screens into functional areas that can be coded independently and then merged into main code base without major conflicts on common files. Using git-flow with feature branches to manage updates to requirements and additional features paired with Heroku Review apps in pipeline. Twelve-Factor App - best practices for building modern cloud applications published by Heroku co-founder Adam Wiggins. https://12factor.net/
  5. Introducing developer toolbox, Salesforce platform, Heroku platform with addon services, Heroku Postgres DB & Heroku Connect, Node.js & Swagger, Xcode & Swift – new programming language introduced by Apple 3 years ago and now on release version 3.
  6. Choosing common language across engineering, UI/UX to Mobile to Server developers. Common API language definition YAML or RAML enables real-time design and test iteration of live API with live documentation. With Tools such as Swagger, Apiary, Apigility and others it made possible. Deploy code often, possibly new features every day to production. http://raml.org/ Heroku Pipeline + github enables you to test & deploy features without impact *Mobile apps are installed on devices and updates are more difficult to adopt this be more exception
  7. Twelve-Factor infographic
  8. Shows github repository and CI integration with Heroku for automated deployments.
  9. NPM manage dependencies for Node.js and Javascript aps Live demo may be possible (as network allows this takes some time) Use existing packages to run demo.
  10. Twelve-Factor infographic
  11. Shows how Heroku Manages ENVIRONMENT variables for different environments Dev, Stage, Prod. All configuration data should be stored separate from the code.
  12. Shows by example several backing services, Postgres, Papertrail, Connect/Salesforce.
  13. Demo live Heroku deployment if possible, update repository and push code via CI
  14. Show Dynos scalable procs Important: Stateless app more robust, and easier to manage, generally incurs fewer bugs, and scales better.
  15. Show where Port binding setup in Swagger generated code related to node.js and Express
  16. Node has limited scaling due to single threaded nature and V8’s memory limit, cannot use additional CPU cores. To scale on multicore CPU or dynos Node.js must fork processes – concept called “clustering” support by standard API in Node. Heroku buildpack provides defaults through two environment variables: WEB_MEMORY and WEB_CONCURRENCY. Node app must be enabled for concurrency using Cluster API or in this case we use Throng - one of API abstraction packages for Node. With Cluster, you can optimize your app’s performance across various dyno types.  Recommendation for all apps to support clustering even if app intended to run a single process. ** Clustering available for paid Heroku accounts with Free, Hobby or full standard 1x or more dynos. This code example will be limited to 1 worker process on the Free & Hobby Heroku dynos.
  17. 1. determine how many processes we should cluster: 1 default 2. define a start function that will be the entry point for each newly clustered process: 3. use throng to cluster the app into multiple processes. We specify a lifetime of Infinity to tell throng that, if a worker dies, it should be respawned - so we will always have WORKERS processes running Example: https://github.com/heroku-examples/node-concurrency/blob/master/server.js
  18. Demo scale down dynos dispose services Deploy code often. Heroku Pipeline + github enables you to test & deploy features without impact *Mobile apps are installed on devices and updates are more difficult to deploy
  19. Demo Pipeline feature aligned with environment parity. For other types of development can use tools like Vegrant to keep these environment dev copy.
  20. Show examples of papertrail logs and also log via toolbelt Some of Heroku addons - Papertrail & Logsview can monitor log events send alerts on that stream. *Mobile App crash-logs can be sent as reports to developers via Testflight or MDM distribution systems.
  21. Show toolbelt CLI as example of admin tool This mostly relevant on server side Using CLI tool for administration enables system automation with scripting administrative activity to run automated.
  22. We have a working prototype of the app but it is not done yet. We are missing real data! Using Heroku Connect is really easy and fast to sync data between Salesforce and our Postgres DB to drive our mobile REST API. As we map Salesforce objects, Heroku Connect will create Postgres Tables and columns for this app and start data synchronization. Data can be moved bidirectional to/from DB to/SF. Heroku connect is a product that counts records under management in license capacity. After mapping and sync is complete we can try to demo our mobile app with display of real data. **Add new logic with DB fields, map data on Heroku connect and update the services logic.
  23. Discuss the Heroku-Synchronization Architecture pattern and compare it to direct connected mobile apps to Salesforce built with SDK. Discuss API limits and licensing factors when connecting direct from mobile app to SF such as S1 app vs. more scaled public access with Heroku hosted API and
  24. Useful resources list
  25. Useful resources list