Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo...

45
Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12

Transcript of Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo...

Page 1: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

HerokuRuby, Python, Java, Scala, Clojure, Node.js, Logo

Tuesday, February 21, 12

Page 2: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Craig Kerstiens@craigkerstiens

Tuesday, February 21, 12

Page 3: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

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 intellectual property and other litigation, risks associated with 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-Q for the most recent fiscal quarter ended. This documents and others containing important disclosures are available on the SEC Filings section

of the Investor Information section of ou 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.

Tuesday, February 21, 12

Page 4: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

as a Service

Tuesday, February 21, 12

Page 5: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Softwareas a Service

Tuesday, February 21, 12

Page 6: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

SoftwareInfrastructure as a Service

Tuesday, February 21, 12

Page 7: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

SoftwareInfrastructure

Platformas a Service

Tuesday, February 21, 12

Page 8: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

SaaSIaaSPaaS

Tuesday, February 21, 12

Page 9: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

SaaSIaaSPaaS

For software usersMore features, transparent updates

Tuesday, February 21, 12

Page 10: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

SaaSIaaSPaaS

For software usersMore features, transparent updates

For ops peopleOn demand machines

Tuesday, February 21, 12

Page 11: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

SaaSIaaSPaaS

For software usersMore features, transparent updates

For ops peopleOn demand machines

For developersTransparent updates, don’t think about servers

Tuesday, February 21, 12

Page 12: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

HerokuRuby, Python, Java, Scala, Clojure, Node.js, Logo

Tuesday, February 21, 12

Page 13: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

[Demo Gods, Have Mercy]

Tuesday, February 21, 12

Page 14: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

[Demo Gods, Have Mercy]Sa

murai

Tuesday, February 21, 12

Page 15: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Heroku

Run the processes you tell us to run

Tuesday, February 21, 12

Page 16: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Python Locallypip/virtualenv

virtualenv --no-site-package venvsource bin/activatepip install -r requirements.txt

Tuesday, February 21, 12

Page 17: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Python on Herokupip/virtualenv

virtualenv --no-site-package venvsource bin/activatepip install -r requirements.txt

Tuesday, February 21, 12

Page 18: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Python LocallyRunning

python app/manage.py runserver 0.0.0.0:8000

Tuesday, February 21, 12

Page 19: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Python on HerokuRunning

Procfile:

web: python app/manage.py runserver 0.0.0.0:$PORT

Tuesday, February 21, 12

Page 20: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Python

pip/virtualenvrunserver

Locally Heroku

pip/virtualenvProcfile w/ runserver

Tuesday, February 21, 12

Page 21: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno

Tuesday, February 21, 12

Page 22: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

DynoServer

Tuesday, February 21, 12

Page 23: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

DynoServer

Tuesday, February 21, 12

Page 24: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

DynoServer

VM

Tuesday, February 21, 12

Page 25: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

DynoServer

VM

Tuesday, February 21, 12

Page 26: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

DynoServer

VM

Process

Tuesday, February 21, 12

Page 27: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno$ cat Procfileweb: python app/manage.py runserverworker: python app/manage.py celeryd -E -B celery: python app/manage.py celerybeat -S djcelery.schedulers.DatabaseScheduler

$ heroku scale web=2$ heroku scale worker=4$ heroku scale celery=1

Tuesday, February 21, 12

Page 28: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Web.1

Web.2

Worker.1

Worker.2

Worker.3

Worker.4

Celery.1

Dyno ProcessesSc

ale(R

unnin

g Pro

cess

es)

Workload Diversity(Process Types)

Tuesday, February 21, 12

Page 29: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno ProcessesRun Anything...

Tuesday, February 21, 12

Page 30: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno ProcessesRun Anything...$ heroku run python app/manage.py runserver

Tuesday, February 21, 12

Page 31: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno ProcessesRun Anything...$ heroku run python app/manage.py runserver$ heroku run python app/manage.py syncdb

Tuesday, February 21, 12

Page 32: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno ProcessesRun Anything...$ heroku run python app/manage.py runserver$ heroku run python app/manage.py syncdb$ heroku run python

Tuesday, February 21, 12

Page 33: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Dyno ProcessesRun Anything...$ heroku run python app/manage.py runserver$ heroku run python app/manage.py syncdb$ heroku run python$ heroku run bash

Tuesday, February 21, 12

Page 34: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional Services

Tuesday, February 21, 12

Page 35: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional Services(Addons)

Tuesday, February 21, 12

Page 36: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional ServicesMemcacheRedisMongoEmailApp PerformanceLogging

(Addons)

Tuesday, February 21, 12

Page 37: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional ServicesMemcacheRedisMongoEmailApp PerformanceLogging

(Addons)

Tuesday, February 21, 12

Page 38: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional ServicesMemcacheRedisMongoEmailApp PerformanceLogging

(Addons)

Tuesday, February 21, 12

Page 39: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional ServicesMemcacheRedisMongoEmailApp PerformanceLogging

(Addons)

Tuesday, February 21, 12

Page 40: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Additional ServicesMemcacheRedisMongoEmailApp PerformanceLogging

(Addons)

Tuesday, February 21, 12

Page 41: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Addons

$ heroku addons:add memcache$ heroku addons:add registogo$ heroku addons:add mongohq$ heroku addons:add sentry

Tuesday, February 21, 12

Page 42: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Addons$ heroku configMEMCACHE_PASSWORD => Ggil...MEMCACHE_SERVERS => mc10.ec2.northscale.netMEMCACHE_USERNAME => app123%40heroku.comMONGOHQ_URL => mongodb://heroku:[email protected]:123/app123REDISTOGO_URL => redis://redistogo:[email protected]:123/SENTRY_DSN => https://4c81...:[email protected]/123

Tuesday, February 21, 12

Page 43: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Configuration

$ heroku config:add MY_OTHER_DB=someurlhere$ heroku configMY_OTHER_DB=someurlhere

Setting

Tuesday, February 21, 12

Page 44: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Configuration

$ cat example.pyimport os

MY_OTHER_DB=os.environ.get(‘MY_OTHER_DB’)

Reading

Tuesday, February 21, 12

Page 45: Heroku - files.meetup.com to Heroku.pdf · Heroku Ruby, Python, Java, Scala, Clojure, Node.js, Logo Tuesday, February 21, 12. Craig Kerstiens @craigkerstiens Tuesday, February 21,

Fin.Resources

http://devcenter.heroku.com/articles/pythonhttp://python.heroku.comhttp://bit.ly/ladjango

Tuesday, February 21, 12