best practices for creating scalable apps with heroku

23
Heroku – Best Practices for Creating Scalable Apps with Heroku Vincent Spehner, Tquila, Heroku Practice Manager @vzmind and @herokusalesforceplaybook

Upload: salesforce-developers

Post on 01-Nov-2014

757 views

Category:

Technology


3 download

DESCRIPTION

While the Heroku platform can scale massively, you still need to design your app to scale efficiently. Join us as we show you how to apply good practices around Caching, Buildpack creation, Slug compilation optimization, environment management, multi-threading of API calls, API cache warming, and data replication. We'll also show you the tools for logging and monitoring services available on the Heroku platform so you can evaluate your app performance and resolve any challenges along the way.

TRANSCRIPT

Page 1: Best Practices for Creating Scalable Apps with Heroku

Heroku – Best Practicesfor Creating Scalable Apps with Heroku

Vincent Spehner, Tquila, Heroku Practice Manager@vzmind and @herokusalesforceplaybook

Page 2: Best Practices for Creating Scalable Apps with Heroku

Safe harborSafe harbor statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.

Page 3: Best Practices for Creating Scalable Apps with Heroku

IntroductionLast year at Dreamforce to discuss with speakers talking about Heroku and meet early adopters of the Platform.

▪ Released the first version of Heroku Salesforce Playbook on Xmas 2012

• Heroku history• Introduction to Heroku Toolbelt• Java and Ruby tutorial to get started

▪ Next release available soon (Xmas 2013)• Presenting 15+ detailed use cases

http://herokusalesforceplaybook.com

Page 4: Best Practices for Creating Scalable Apps with Heroku

IntroductionToday the objective is to present some common mistakes done when building Cloud app (including on Heroku) and learn how to avoid them

▪ Platform / language neutral

▪ First we need to understand how Cloud Apps are different ? • Heroku 12 factors• Cloud App with remote Data/API

Page 5: Best Practices for Creating Scalable Apps with Heroku

PaaS 12 factorsI. CodebaseOne codebase tracked in revision control, many deploys

II. DependenciesExplicitly declare and isolate dependencies

III. ConfigStore config in the environment

IV. Backing ServicesTreat backing services as attached resources

V. Build, release, runStrictly separate build and run stages

VI. ProcessesExecute the app as one or more stateless processes

VII. Port bindingExport services via port binding

VIII. ConcurrencyScale out via the process model

IX. DisposabilityMaximize robustness with fast startup and graceful shutdown

X. Dev/prod parityKeep development, staging, and production as similar as possible

XI. LogsTreat logs as event streams

XII. Admin processesRun admin/management tasks as one-off processesv

http://12factor.net/

Page 6: Best Practices for Creating Scalable Apps with Heroku

Cloud App Architecture

LATENCIES HIDDEN

EVERYWARE !!

DEPENDENCIES HIDDEN

EVERYWHERE !!

Page 7: Best Practices for Creating Scalable Apps with Heroku

The API latency syndromeHow to detect it ?

▪ Pages taking ages to display▪ API Quota reached quickly (few hours)▪ More than 5 API calls per action ▪ App not working at specific moment of the day

SOLUTION : CACHE EVERYWHERE IT’S REQUIRED !!

Page 8: Best Practices for Creating Scalable Apps with Heroku

Cache OR Call patternReduce overall API Latency:

Page 9: Best Practices for Creating Scalable Apps with Heroku

Understanding Caching optionsCache vs Data replication vs Data synchronization:

▪ Cache: store temporarily data locally to avoid further calls▪ Data replication: copy remote data locally▪ Data synchronization: best of both, local and synchronized

Page 10: Best Practices for Creating Scalable Apps with Heroku

Understanding Caching optionsCache vs Data replication vs Data synchronization:

▪ Caching weakness: you need to sweep it regularly and automate it▪ Data replication weakness: bi-directional update replication implies potential

conflict which need a proper management▪ Data synchronization: most robust option, hard to implement

Page 11: Best Practices for Creating Scalable Apps with Heroku

Understanding Caching options: HerokuConnect

Page 12: Best Practices for Creating Scalable Apps with Heroku

API cache warmingPrinciple

▪ You already know that your application need to get the list of remote static objects

▪ Add a worker dedicated to Cache warming▪ Store all remote Static records locally▪ Define refreshing strategy on the worker itself

Page 13: Best Practices for Creating Scalable Apps with Heroku

API cache warming

Page 14: Best Practices for Creating Scalable Apps with Heroku

Salesforce custom APEX End PointObjective:

▪ Reduce API calls▪ Access Hidden Business Logic

Creating custom APEX endpoint:▪ Group API calls▪ Aggregate objects/records/business process results in ONE call▪ Trigger complex Apex code from a REST endpoint

Page 15: Best Practices for Creating Scalable Apps with Heroku

Environment managementIs your local machine the Test env ?

▪ Cloud app might behave differently than on your Local Machine or Test Server

• Assets compilation failing• Process running differently• Static Configuration• Memory management• Remote API calls

Page 16: Best Practices for Creating Scalable Apps with Heroku

Environment managementSolutions:

▪ Dev ENV as clause of Heroku PROD ENV than possible▪ Duplicate your Production ENV for TEST▪ Use Foreman locally▪ Share Heroku config with your team and load it as part of your ENV▪ Of course you can spin up and down Heroku TEST env

Page 17: Best Practices for Creating Scalable Apps with Heroku

No clues on errorsLogplex principle

▪ Logs are an event Stream (12 Factor number XI)

Monitor early, drive safely:▪ Start recording logs from the beginning with enough storage capacity▪ Monitor your app▪ Make sure your logs are relevant

Page 18: Best Practices for Creating Scalable Apps with Heroku

Log stream , Papertrail, New Relic

Page 19: Best Practices for Creating Scalable Apps with Heroku

App capacity estimationLoad test your app

Page 20: Best Practices for Creating Scalable Apps with Heroku

Conclusion

▪ Cloud apps - Heroku apps - require specific care

▪ Caching, Log stream, Env management as described in 12 Factor-app

▪ Rethink data storage and data exchange as they are not local

▪ Check the playbook, share your ideas with Book authors

Page 21: Best Practices for Creating Scalable Apps with Heroku

All about Tquila

Tquila is the main european Salesforce Partner specialized on Salesforce implementation, Mobile and Social applications with 250 consultants in Europe, Asia, Australia.

▪ 102 customers

▪ 304 projects

▪ 204 certifications

Page 22: Best Practices for Creating Scalable Apps with Heroku

Vincent Spehner

Heroku Practice Manager,@vzmind

http://herokusalesforceplaybook.com

Page 23: Best Practices for Creating Scalable Apps with Heroku