SlideShare a Scribd company logo
1 of 80
Download to read offline
lanyrd.com/sdmbmk
Heroku 101
!
dgouldin@heroku.com
@dgouldin
lanyrd.com/sdmbmk
What is Heroku?
The application platform
lanyrd.com/sdmbmk
You write your app.
We do the rest.
lanyrd.com/sdmbmk
LOW HIGH
SCALE
drag to scale
lanyrd.com/sdmbmk
5 Billion
requests per day
3+ Million
Apps Created
125+
Add-on services
lanyrd.com/sdmbmk
What’s a Heroku app?
lanyrd.com/sdmbmk
The Twelve-Factor app
12factor.net
lanyrd.com/sdmbmk
Let’s dive in!
lanyrd.com/sdmbmk
Assumptions
You want to learn about Heroku.
You know (a bit) of Python.
You have Python, pip, and virtualenv*.
lanyrd.com/sdmbmk
*install.python-guide.org
lanyrd.com/sdmbmk
Install the Toolbelt
toolbelt.heroku.com
lanyrd.com/sdmbmk
$ heroku login
Log in
lanyrd.com/sdmbmk
X. Dev/prod parity
12factor.net/dev-prod-parity
lanyrd.com/sdmbmk
Create a Flask app
devcenter.heroku.com/articles/getting-started-with-python
lanyrd.com/sdmbmk
$ mkdir hello-heroku
$ cd hello-heroku
$ virtualenv venv
$ source venv/bin/activate
$ pip install Flask gunicorn
Create a vitualenv and install requirements
lanyrd.com/sdmbmk
import os
from flask import Flask
!
app = Flask(__name__)
!
@app.route('/')
def hello():
return 'Hello World!'
hello.py
lanyrd.com/sdmbmk
web: gunicorn hello:app
Procfile
lanyrd.com/sdmbmk
VI. Processes
12factor.net/
lanyrd.com/sdmbmk
$ foreman start
Start the app
lanyrd.com/sdmbmk
X. Dev/prod parity
12factor.net/dev-prod-parity
lanyrd.com/sdmbmk
$ pip freeze > requirements.txt
Freeze dependencies
lanyrd.com/sdmbmk
II. Dependencies
12factor.net/
lanyrd.com/sdmbmk
Store the app in git
devcenter.heroku.com/articles/git
lanyrd.com/sdmbmk
venv
*.pyc
.gitignore
lanyrd.com/sdmbmk
$ git init
$ git add .
$ git commit -m "initial commit"
Store the app in git
lanyrd.com/sdmbmk
I. Single codebase
12factor.net/
lanyrd.com/sdmbmk
Create and deploy 

the application
lanyrd.com/sdmbmk
$ heroku create
$ git push heroku master
...
-----> Launching... done, v2
http://happy-pycon-2015.herokuapp.com
deployed to Heroku
$ heroku open
Create and deploy the app
lanyrd.com/sdmbmk
V. Build, release, run
12factor.net/build-release-run
lanyrd.com/sdmbmk
Logging
lanyrd.com/sdmbmk
$ heroku logs --tail
Viewing logs
lanyrd.com/sdmbmk
import os
from flask import Flask
!
app = Flask(__name__)
!
import logging
logging.basicConfig(level=logging.DEBUG)
!
@app.route('/')
def hello():
logging.info("saying hello")
return 'Hello World!'
hello.py
lanyrd.com/sdmbmk
$ git add .
$ git commit -m "add logging"
$ git push heroku master
Commit and deploy again
lanyrd.com/sdmbmk
$ heroku logs --tail
Viewing logs
lanyrd.com/sdmbmk
XI. Logs as event streams
12factor.net/
lanyrd.com/sdmbmk
Configuration variables
devcenter.heroku.com/articles/config-vars
lanyrd.com/sdmbmk
import os
import logging
from flask import Flask
!
app = Flask(__name__)
logging.basicConfig(level=logging.DEBUG)
!
@app.route('/')
def hello():
logging.info("saying hello")
name = os.environ.get('NAME', 'World')
return 'Hello {}!'.format(name)
hello.py
lanyrd.com/sdmbmk
$ NAME=David foreman start
Try it out locally
lanyrd.com/sdmbmk
$ echo "NAME=David" > .env
Store local env vars in .env
(don’t forget to add it to .gitignore)
lanyrd.com/sdmbmk
$ foreman start
Try it out locally
lanyrd.com/sdmbmk
$ git add .
$ git commit -m "add name"
$ git push heroku master
Commit and deploy
lanyrd.com/sdmbmk
$ heroku config:set NAME=David
Setting config vars and restarting happy-pycon-2015... done, v6
!
$ heroku config:get NAME
David
!
$ heroku config
=== happy-pycon-2015 Config Vars
NAME: David
!
$ heroku config:unset NAME
Unsetting NAME and restarting happy-pycon-2015... done, v7
Managing config vars
lanyrd.com/sdmbmk
III. Store config in the environment
12factor.net/
lanyrd.com/sdmbmk
Releases
devcenter.heroku.com/articles/releases
lanyrd.com/sdmbmk
$ heroku releases
=== happy-pycon-2015 Releases
v7 Remove NAME config vars dgouldin@heroku.com 2015/04/07 12:41:49
v6 Deploy df3cf06 dgouldin@heroku.com 2015/04/07 12:40:32
v5 Set NAME config vars dgouldin@heroku.com 2015/04/07 12:35:30
v4 Deploy 5bebf9b dgouldin@heroku.com 2015/04/07 12:34:27
v3 Deploy 69398b3 dgouldin@heroku.com 2015/04/07 12:18:08
v2 Enable Logplex dgouldin@heroku.com 2015/04/07 12:16:20
v1 Initial release dgouldin@heroku.com 2015/04/07 12:16:17
Release history
lanyrd.com/sdmbmk
I. One codebase, many deploys
12factor.net/
lanyrd.com/sdmbmk
Addons
addons.heroku.com
lanyrd.com/sdmbmk
$ heroku addons:create rediscloud
Adding rediscloud on happy-pycon-2015... done, v8 (free)
Use `heroku addons:docs rediscloud` to view documentation.
Adding an addon
lanyrd.com/sdmbmk
import os
import redis
from flask import Flask
!
app = Flask(__name__)
db = redis.from_url(os.environ['REDISCLOUD_URL'])
!
@app.route('/')
def hello():
name = db.get(‘name') or 'World'
return 'Hello %s!' % name
!
@app.route('/setname/<name>')
def setname(name):
db.set('name', name)
return 'Name updated.'
hello.py
lanyrd.com/sdmbmk
IV. Treat backing services as attached resources
12factor.net/
lanyrd.com/sdmbmk
$ pip install redis
$ pip freeze > requirements.txt
Dependencies
lanyrd.com/sdmbmk
$ git add .
$ git commit -m "use redis for name"
$ git push heroku master
Commit and deploy
lanyrd.com/sdmbmk
X. Dev/prod parity?
Uh oh…
lanyrd.com/sdmbmk
$ foreman start
13:03:34 web.1 | started with pid 24492
...
13:03:34 web.1 | 2015-04-07 13:03:34 [24495] [ERROR] Exception in worker process:
13:03:34 web.1 | Traceback (most recent call last):
...
13:03:34 web.1 | KeyError: 'REDISCLOUD_URL'
...
13:03:34 web.1 | 2015-04-07 13:03:34 [24495] [INFO] Worker exiting (pid: 24495)
13:03:34 web.1 | 2015-04-07 13:03:34 [24492] [INFO] Shutting down: Master
13:03:34 web.1 | 2015-04-07 13:03:34 [24492] [INFO] Reason: Worker failed to boot.
13:03:34 web.1 | exited with code 3
13:03:34 system | sending SIGTERM to all processes
SIGTERM received
Uh oh…
lanyrd.com/sdmbmk
Some solutions:
Only run remotely
Homebrew - brew.sh
Vagrant - vagrantup.com
Docker - docker.io
lanyrd.com/sdmbmk
Scaling and performance
devcenter.heroku.com/articles/scaling
lanyrd.com/sdmbmk
$ heroku ps:scale web=2
Scaling dynos... done, now running web at 2:1X.
!
$ heroku ps:scale web=10
Scaling dynos... done, now running web at 10:1X.
!
$ heroku ps:scale web=5:2X
Scaling dynos... done, now running web at 5:2X.
!
$ heroku ps:scale web=1:PX
Scaling dynos... done, now running web at 1:PX.
!
$ heroku ps:scale web=1:1X
Scaling dynos... done, now running web at 1:1X.
Scaling
lanyrd.com/sdmbmk
Understanding performance
devcenter.heroku.com/articles/optimizing-dyno-usage
lanyrd.com/sdmbmk
VIII. Concurrency via processes
12factor.net/
lanyrd.com/sdmbmk
$ heroku labs:enable log-runtime-metrics
$ heroku restart
!
$ heroku logs --tail
2015-04-07T17:19:30.746857+00:00 heroku[web.1]: source=web.1 dyno=heroku.
23939571.b4d17f84-50f5-4e2f-9fb1-b2124db4addb sample#memory_total=17.86MB
sample#memory_rss=17.85MB sample#memory_cache=0.00MB sample#memory_swap=0.00MB
sample#memory_pgpgin=5311pages sample#memory_pgpgout=740pages
!
2015-04-07T17:19:50.787234+00:00 heroku[web.1]: source=web.1 dyno=heroku.
23939571.b4d17f84-50f5-4e2f-9fb1-b2124db4addb sample#memory_total=17.86MB
sample#memory_rss=17.85MB sample#memory_cache=0.00MB sample#memory_swap=0.00MB
sample#memory_pgpgin=5311pages sample#memory_pgpgout=740pages
log-runtime-metrics
lanyrd.com/sdmbmk
Dashboard
metrics
organization
add-ons marketplace
lanyrd.com/sdmbmk
Metrics
devcenter.heroku.com/articles/metrics
lanyrd.com/sdmbmk
Organizations
devcenter.heroku.com/categories/organization-accounts
lanyrd.com/sdmbmk
Add-ons Marketplace
lanyrd.com/sdmbmk
Papertrail
lanyrd.com/sdmbmk
Rollbar
lanyrd.com/sdmbmk
New Relic
lanyrd.com/sdmbmk
And many more …
addons.heroku.com
lanyrd.com/sdmbmk
Github Integration
devcenter.heroku.com/articles/github-integration
lanyrd.com/sdmbmk
Automatic Deploys
lanyrd.com/sdmbmk
Release Diffs
lanyrd.com/sdmbmk
Heroku Button
1 click to a deployed Heroku app
lanyrd.com/sdmbmk
app.json
lanyrd.com/sdmbmk
README.md
[![Deploy](https://www.herokucdn.com/deploy/button.png)]
(https://heroku.com/deploy?template=https://github.com/
dgouldin/django-playground)
lanyrd.com/sdmbmk
Try it yourself!
github.com/dgouldin/django-playground
lanyrd.com/sdmbmk
Bonus: Platform API
devcenter.heroku.com/categories/platform-api
lanyrd.com/sdmbmk
>>> import json
>>> import requests # python-requests.org
!
>>> heroku = requests.session()
>>> heroku.auth = ('', '{INSERT HEROKU API TOKEN HERE}')
>>> heroku.headers['Accept'] = 'application/vnd.heroku+json; version=3'
>>> heroku.headers['Content-Type'] = 'application/json'
REST API basics
lanyrd.com/sdmbmk
>>> heroku.get('https://api.heroku.com/apps/happy-pycon-2015').json()
{u'archived_at': None,
...
u'web_url': u'http://dgouldin.herokuapp.com/'}
!
>>> heroku.get('https://api.heroku.com/apps/happy-pycon-2015/config-vars').json()
[35] :
{u'NAME': u'David',
u'REDISCLOUD_URL': u'{REDACTED}'}
!
>>> body = json.dumps({'NAME': 'Robot'})
>>> heroku.patch('https://api.heroku.com/apps/happy-pycon-2015/config-vars', body)
App info; config vars
lanyrd.com/sdmbmk
>>> heroku.get('https://api.heroku.com/apps/happy-pycon-2015/formation').json()
[{u'command': u'gunicorn hello:app',
u'created_at': u'2015-04-06T16:42:24Z',
u'id': u'928f6618-a0e2-4ded-95ec-e3a23a7795f0',
u'quantity': 2,
u'size': u'1X',
u'type': u'web',
u'updated_at': u'2015-04-06T18:50:02Z'}]
!
>>> body = json.dumps({'quantity': 4})
>>> heroku.patch('https://api.heroku.com/apps/dgouldin/formation/web', body)
Scaling
lanyrd.com/sdmbmk
Questions and Free Play
dgouldin@heroku.com
@dgouldin

More Related Content

What's hot

How_to_build_your_cloud_enablement_engine_with_the_people_you_already_have
How_to_build_your_cloud_enablement_engine_with_the_people_you_already_haveHow_to_build_your_cloud_enablement_engine_with_the_people_you_already_have
How_to_build_your_cloud_enablement_engine_with_the_people_you_already_haveAmazon Web Services
 
AWS vs Azure vs Google (GCP) - Slides
AWS vs Azure vs Google (GCP) - SlidesAWS vs Azure vs Google (GCP) - Slides
AWS vs Azure vs Google (GCP) - SlidesTobyWilman
 
Mainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best PracticesMainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best PracticesAmazon Web Services
 
Cloud-migration-essentials.pdf
Cloud-migration-essentials.pdfCloud-migration-essentials.pdf
Cloud-migration-essentials.pdfALI ANWAR, OCP®
 
An Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech Talks
An Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech TalksAn Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech Talks
An Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech TalksAmazon Web Services
 
Adopting Multi-Cloud Services with Confidence
Adopting Multi-Cloud Services with ConfidenceAdopting Multi-Cloud Services with Confidence
Adopting Multi-Cloud Services with ConfidenceKevin Hakanson
 
HigherEducation-Cloud Operating Model and Approach Forward.pdf
HigherEducation-Cloud Operating Model and Approach Forward.pdfHigherEducation-Cloud Operating Model and Approach Forward.pdf
HigherEducation-Cloud Operating Model and Approach Forward.pdfAmazon Web Services
 
Databricks on AWS.pptx
Databricks on AWS.pptxDatabricks on AWS.pptx
Databricks on AWS.pptxWasm1953
 
Introduction au Cloud computing
Introduction au Cloud computingIntroduction au Cloud computing
Introduction au Cloud computingPhilippe Scoffoni
 
An Overview of Best Practices for Large Scale Migrations - AWS Transformation...
An Overview of Best Practices for Large Scale Migrations - AWS Transformation...An Overview of Best Practices for Large Scale Migrations - AWS Transformation...
An Overview of Best Practices for Large Scale Migrations - AWS Transformation...Amazon Web Services
 
Capgemini Cloud Assessment - A Pathway to Enterprise Cloud Migration
Capgemini Cloud Assessment - A Pathway to Enterprise Cloud MigrationCapgemini Cloud Assessment - A Pathway to Enterprise Cloud Migration
Capgemini Cloud Assessment - A Pathway to Enterprise Cloud MigrationFloyd DCosta
 
Cloud native-apps-architectures
Cloud native-apps-architecturesCloud native-apps-architectures
Cloud native-apps-architecturesCapgemini
 
Application Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and SucceedApplication Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and SucceedVMware Tanzu
 
ENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWS
ENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWSENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWS
ENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWSAmazon Web Services
 
Dell Data Center Networking Overview
Dell Data Center Networking OverviewDell Data Center Networking Overview
Dell Data Center Networking OverviewDell World
 
Zerto for dr migration to cloud overview
Zerto for dr migration to cloud overviewZerto for dr migration to cloud overview
Zerto for dr migration to cloud overviewMorgan Davidson
 
VMworld 2016: How to Deploy VMware NSX with Cisco Infrastructure
VMworld 2016: How to Deploy VMware NSX with Cisco InfrastructureVMworld 2016: How to Deploy VMware NSX with Cisco Infrastructure
VMworld 2016: How to Deploy VMware NSX with Cisco InfrastructureVMworld
 
Next generation business automation with the red hat decision manager and red...
Next generation business automation with the red hat decision manager and red...Next generation business automation with the red hat decision manager and red...
Next generation business automation with the red hat decision manager and red...Masahiko Umeno
 

What's hot (20)

How_to_build_your_cloud_enablement_engine_with_the_people_you_already_have
How_to_build_your_cloud_enablement_engine_with_the_people_you_already_haveHow_to_build_your_cloud_enablement_engine_with_the_people_you_already_have
How_to_build_your_cloud_enablement_engine_with_the_people_you_already_have
 
AWS vs Azure vs Google (GCP) - Slides
AWS vs Azure vs Google (GCP) - SlidesAWS vs Azure vs Google (GCP) - Slides
AWS vs Azure vs Google (GCP) - Slides
 
Mainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best PracticesMainframe Modernization with AWS: Patterns and Best Practices
Mainframe Modernization with AWS: Patterns and Best Practices
 
Cloud-migration-essentials.pdf
Cloud-migration-essentials.pdfCloud-migration-essentials.pdf
Cloud-migration-essentials.pdf
 
Cloud Migration: Moving to the Cloud
Cloud Migration: Moving to the CloudCloud Migration: Moving to the Cloud
Cloud Migration: Moving to the Cloud
 
An Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech Talks
An Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech TalksAn Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech Talks
An Overview of the AWS Cloud Adoption Framework - May 2017 AWS Online Tech Talks
 
Adopting Multi-Cloud Services with Confidence
Adopting Multi-Cloud Services with ConfidenceAdopting Multi-Cloud Services with Confidence
Adopting Multi-Cloud Services with Confidence
 
HigherEducation-Cloud Operating Model and Approach Forward.pdf
HigherEducation-Cloud Operating Model and Approach Forward.pdfHigherEducation-Cloud Operating Model and Approach Forward.pdf
HigherEducation-Cloud Operating Model and Approach Forward.pdf
 
Databricks on AWS.pptx
Databricks on AWS.pptxDatabricks on AWS.pptx
Databricks on AWS.pptx
 
Introduction au Cloud computing
Introduction au Cloud computingIntroduction au Cloud computing
Introduction au Cloud computing
 
An Overview of Best Practices for Large Scale Migrations - AWS Transformation...
An Overview of Best Practices for Large Scale Migrations - AWS Transformation...An Overview of Best Practices for Large Scale Migrations - AWS Transformation...
An Overview of Best Practices for Large Scale Migrations - AWS Transformation...
 
Capgemini Cloud Assessment - A Pathway to Enterprise Cloud Migration
Capgemini Cloud Assessment - A Pathway to Enterprise Cloud MigrationCapgemini Cloud Assessment - A Pathway to Enterprise Cloud Migration
Capgemini Cloud Assessment - A Pathway to Enterprise Cloud Migration
 
Cloud native-apps-architectures
Cloud native-apps-architecturesCloud native-apps-architectures
Cloud native-apps-architectures
 
App Modernization with Microsoft Azure
App Modernization with Microsoft AzureApp Modernization with Microsoft Azure
App Modernization with Microsoft Azure
 
Application Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and SucceedApplication Migration: How to Start, Scale and Succeed
Application Migration: How to Start, Scale and Succeed
 
ENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWS
ENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWSENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWS
ENT211_How to Assess Your Organization’s Readiness to Migrate at Scale to AWS
 
Dell Data Center Networking Overview
Dell Data Center Networking OverviewDell Data Center Networking Overview
Dell Data Center Networking Overview
 
Zerto for dr migration to cloud overview
Zerto for dr migration to cloud overviewZerto for dr migration to cloud overview
Zerto for dr migration to cloud overview
 
VMworld 2016: How to Deploy VMware NSX with Cisco Infrastructure
VMworld 2016: How to Deploy VMware NSX with Cisco InfrastructureVMworld 2016: How to Deploy VMware NSX with Cisco Infrastructure
VMworld 2016: How to Deploy VMware NSX with Cisco Infrastructure
 
Next generation business automation with the red hat decision manager and red...
Next generation business automation with the red hat decision manager and red...Next generation business automation with the red hat decision manager and red...
Next generation business automation with the red hat decision manager and red...
 

Similar to Heroku 101 py con 2015 - David Gouldin

Quick and Dirty Python Deployments with Heroku
Quick and Dirty Python Deployments with HerokuQuick and Dirty Python Deployments with Heroku
Quick and Dirty Python Deployments with HerokuDaniel Pritchett
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Herokuronnywang_tw
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017MarcinStachniuk
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.catPablo Godel
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSESaputro Aryulianto
 
Intro to development sites and site migration
Intro to development sites and site migrationIntro to development sites and site migration
Intro to development sites and site migrationR-Cubed Design Forge
 
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarDocker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarApplitools
 
ITB2019 Try This At Home: Building a Personal Docker Swarm - Matt Clemente
ITB2019 Try This At Home: Building a Personal Docker Swarm - Matt ClementeITB2019 Try This At Home: Building a Personal Docker Swarm - Matt Clemente
ITB2019 Try This At Home: Building a Personal Docker Swarm - Matt ClementeOrtus Solutions, Corp
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalDrupalDay
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupalsparkfabrik
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsSander van der Burg
 
Continuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e JenkinsContinuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e JenkinsBruno Padilha
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containersinside-BigData.com
 
Scaling Development Environments with Docker
Scaling Development Environments with DockerScaling Development Environments with Docker
Scaling Development Environments with DockerDocker, Inc.
 
Future of Development and Deployment using Docker
Future of Development and Deployment using DockerFuture of Development and Deployment using Docker
Future of Development and Deployment using DockerTamer Abdul-Radi
 
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @WayraDeis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @WayraLeo Lorieri
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Conference
 

Similar to Heroku 101 py con 2015 - David Gouldin (20)

Quick and Dirty Python Deployments with Heroku
Quick and Dirty Python Deployments with HerokuQuick and Dirty Python Deployments with Heroku
Quick and Dirty Python Deployments with Heroku
 
2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku2012 coscup - Build your PHP application on Heroku
2012 coscup - Build your PHP application on Heroku
 
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
Continuous Delivery w projekcie Open Source - Marcin Stachniuk - DevCrowd 2017
 
FreeBSD: Dev to Prod
FreeBSD: Dev to ProdFreeBSD: Dev to Prod
FreeBSD: Dev to Prod
 
Deploying Symfony | symfony.cat
Deploying Symfony | symfony.catDeploying Symfony | symfony.cat
Deploying Symfony | symfony.cat
 
CI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOWCI-CD WITH GITLAB WORKFLOW
CI-CD WITH GITLAB WORKFLOW
 
Clustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSEClustering Docker with Docker Swarm on openSUSE
Clustering Docker with Docker Swarm on openSUSE
 
Intro to development sites and site migration
Intro to development sites and site migrationIntro to development sites and site migration
Intro to development sites and site migration
 
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil TayarDocker and Your Path to a Better Staging Environment - webinar by Gil Tayar
Docker and Your Path to a Better Staging Environment - webinar by Gil Tayar
 
ITB2019 Try This At Home: Building a Personal Docker Swarm - Matt Clemente
ITB2019 Try This At Home: Building a Personal Docker Swarm - Matt ClementeITB2019 Try This At Home: Building a Personal Docker Swarm - Matt Clemente
ITB2019 Try This At Home: Building a Personal Docker Swarm - Matt Clemente
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
Behaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & DrupalBehaviour Driven Development con Behat & Drupal
Behaviour Driven Development con Behat & Drupal
 
Set up a Development Environment in 5 Minutes
Set up a Development Environment in 5 MinutesSet up a Development Environment in 5 Minutes
Set up a Development Environment in 5 Minutes
 
Using Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutionsUsing Nix and Docker as automated deployment solutions
Using Nix and Docker as automated deployment solutions
 
Continuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e JenkinsContinuous Delivery com Docker, OpenShift e Jenkins
Continuous Delivery com Docker, OpenShift e Jenkins
 
DevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux ContainersDevOps Workflow: A Tutorial on Linux Containers
DevOps Workflow: A Tutorial on Linux Containers
 
Scaling Development Environments with Docker
Scaling Development Environments with DockerScaling Development Environments with Docker
Scaling Development Environments with Docker
 
Future of Development and Deployment using Docker
Future of Development and Deployment using DockerFuture of Development and Deployment using Docker
Future of Development and Deployment using Docker
 
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @WayraDeis, a PaaS built with Docker,  Docker Meetup Sao Paulo #3 @Wayra
Deis, a PaaS built with Docker, Docker Meetup Sao Paulo #3 @Wayra
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
 

More from Heroku

Heroku Connect: The New Way to Build Connected Customer Applications
Heroku Connect: The New Way to Build Connected Customer ApplicationsHeroku Connect: The New Way to Build Connected Customer Applications
Heroku Connect: The New Way to Build Connected Customer ApplicationsHeroku
 
Heroku webcastdeck+20130828
Heroku webcastdeck+20130828Heroku webcastdeck+20130828
Heroku webcastdeck+20130828Heroku
 
Mattt Thompson at Heroku's Waza 2013: Mobile is not Different
Mattt Thompson at Heroku's Waza 2013: Mobile is not Different Mattt Thompson at Heroku's Waza 2013: Mobile is not Different
Mattt Thompson at Heroku's Waza 2013: Mobile is not Different Heroku
 
Codeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's Business
Codeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's BusinessCodeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's Business
Codeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's BusinessHeroku
 
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of IndifferenceRob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of IndifferenceHeroku
 
Heroku's Ryan Smith at Waza 2013: Predictable Failure
Heroku's Ryan Smith at Waza 2013: Predictable FailureHeroku's Ryan Smith at Waza 2013: Predictable Failure
Heroku's Ryan Smith at Waza 2013: Predictable FailureHeroku
 
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor AppsLibrato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor AppsHeroku
 
Noah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsNoah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsHeroku
 
Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...
Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...
Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...Heroku
 
AirBnB's Jack Lawson at Heroku's Waza: Dismantling the Monorail
AirBnB's Jack Lawson at Heroku's Waza: Dismantling the MonorailAirBnB's Jack Lawson at Heroku's Waza: Dismantling the Monorail
AirBnB's Jack Lawson at Heroku's Waza: Dismantling the MonorailHeroku
 
Kirby Ferguson at Heroku's Waza 2013
Kirby Ferguson at Heroku's Waza 2013Kirby Ferguson at Heroku's Waza 2013
Kirby Ferguson at Heroku's Waza 2013Heroku
 

More from Heroku (11)

Heroku Connect: The New Way to Build Connected Customer Applications
Heroku Connect: The New Way to Build Connected Customer ApplicationsHeroku Connect: The New Way to Build Connected Customer Applications
Heroku Connect: The New Way to Build Connected Customer Applications
 
Heroku webcastdeck+20130828
Heroku webcastdeck+20130828Heroku webcastdeck+20130828
Heroku webcastdeck+20130828
 
Mattt Thompson at Heroku's Waza 2013: Mobile is not Different
Mattt Thompson at Heroku's Waza 2013: Mobile is not Different Mattt Thompson at Heroku's Waza 2013: Mobile is not Different
Mattt Thompson at Heroku's Waza 2013: Mobile is not Different
 
Codeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's Business
Codeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's BusinessCodeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's Business
Codeacademy's Linda Liukas at Heroku's Waza 2013: Code is Everyone's Business
 
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of IndifferenceRob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
Rob Sullivan at Heroku's Waza 2013: Your Database -- A Story of Indifference
 
Heroku's Ryan Smith at Waza 2013: Predictable Failure
Heroku's Ryan Smith at Waza 2013: Predictable FailureHeroku's Ryan Smith at Waza 2013: Predictable Failure
Heroku's Ryan Smith at Waza 2013: Predictable Failure
 
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor AppsLibrato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
Librato's Joseph Ruscio at Heroku's 2013: Instrumenting 12-Factor Apps
 
Noah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku SecretsNoah Zoschke at Waza 2013: Heroku Secrets
Noah Zoschke at Waza 2013: Heroku Secrets
 
Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...
Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...
Rdio's Alex Gaynor at Heroku's Waza 2013: Why Python, Ruby and Javascript are...
 
AirBnB's Jack Lawson at Heroku's Waza: Dismantling the Monorail
AirBnB's Jack Lawson at Heroku's Waza: Dismantling the MonorailAirBnB's Jack Lawson at Heroku's Waza: Dismantling the Monorail
AirBnB's Jack Lawson at Heroku's Waza: Dismantling the Monorail
 
Kirby Ferguson at Heroku's Waza 2013
Kirby Ferguson at Heroku's Waza 2013Kirby Ferguson at Heroku's Waza 2013
Kirby Ferguson at Heroku's Waza 2013
 

Recently uploaded

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...apidays
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusZilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 

Recently uploaded (20)

EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 

Heroku 101 py con 2015 - David Gouldin