30
git push deploy PaaS TW Meetup #2 /her-OH-koo/

Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Embed Size (px)

DESCRIPTION

Heroku introduction and twelve factor app@ PaaS Taiwan

Citation preview

Page 1: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

git push deploy

PaaS TW Meetup #2

/her-OH-koo/

Page 2: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

!

PHP / WordPress Developer Rails newbie

@uchengwang

王昱程Wang Yu-Cheng

http://spectator.do

Page 3: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

How Heroku Works Twelve-Factor App

Page 4: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Get Start1.Sign up2.Install the Heroku Toolbelt3.Create your app

Page 5: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

heroku

localgit push

slug compilerslug

launch

dyno dyno

scale scale …stack stack

Creative Commons – Attribution (CC BY 3.0) Box designed by Nono Martínez Alonso from the Noun Project

compiled

Page 6: Heroku Git Push Deploy@PaaS Taiwan Meetup #2
Page 7: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Stack

OS(ubuntu) language runtime

libraries

Buildpack

config

Page 8: Heroku Git Push Deploy@PaaS Taiwan Meetup #2
Page 9: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

You can run anything!

Page 10: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

dyno

• Isolated

• Self-healing

• Read-only

• Stateless

• Recycle every 24hrs

Page 11: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Twelve-Factor Apphttp://12factor.net

scalabilityportability

productivity

Page 12: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

One codebase tracked in revision control, many deploys.

I. Codebase

One codebase, one app

Page 13: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Explicitly declare and isolate dependencies

II. DependenciesGemfile =>dependency declarationBundle exec => dependency isolation

Page 14: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

III. Config

Store config in the environment

An app’s config is everything that is likely to vary between deploys (staging, production, developer environments, etc).

Don’t check in to the codebase

Page 15: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

IV. Backing Services

Treat backing services as attached resources

Page 16: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

IV. Backing Servicescon’t

Page 17: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

V. Build, release, run

Strictly separate build and run stages

Page 18: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

VI. Processes

stateless processes

share-nothing processes

Page 19: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

VII. Port binding

Export services via port binding

Containerless

Add web server by dependency declaration

Page 20: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

VIII. Concurrency

Scale out via the process model

Page 21: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

IX. Disposability

Fast startup

Graceful shutdown

Page 22: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

XI. Logs

Treat logs as event streams

Write logs to file

Page 23: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

X. Dev/prod parity

Development = Staging = Production

Time gapPersonal gapTool gap

Design for continuous deployment

Page 24: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

XII. Admin processes

Run admin/management tasks as one-off processes

bundle exec rake db:migrate

Page 25: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

How about Docker?

Page 26: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Docker Heroku

dockerfile buildpack

image slug

container dyno

docker client heroku client

docker registry add-on

http://tuhrig.de/docker-vs-heroku/

Page 27: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

https://github.com/progrium/dokku

Page 28: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Spectator.do

督視人http://spectator.do

Page 29: Heroku Git Push Deploy@PaaS Taiwan Meetup #2
Page 30: Heroku Git Push Deploy@PaaS Taiwan Meetup #2

Thanks for Listening

@uchengwanghttp://spectator.do

PaaS TW Meetup #2