Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

! PHP / WordPress Developer Rails newbie @uchengwang Ԧ₮ఔ Wang Yu-Cheng http://spectator.do

Slide 3

Slide 3 text

How Heroku Works Twelve-Factor App

Slide 4

Slide 4 text

Get Start 1.Sign up 2.Install the Heroku Toolbelt 3.Create your app

Slide 5

Slide 5 text

heroku local git push slug compiler slug 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

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Stack OS(ubuntu) language runtime libraries Buildpack config

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

You can run anything!

Slide 10

Slide 10 text

dyno • Isolated • Self-healing • Read-only • Stateless • Recycle every 24hrs

Slide 11

Slide 11 text

Twelve-Factor App http://12factor.net scalability portability productivity

Slide 12

Slide 12 text

One codebase tracked in revision control, many deploys. I. Codebase One codebase, one app

Slide 13

Slide 13 text

Explicitly declare and isolate dependencies II. Dependencies Gemfile =>dependency declaration Bundle exec => dependency isolation

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

IV. Backing Services Treat backing services as attached resources

Slide 16

Slide 16 text

IV. Backing Services con’t

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

VI. Processes stateless processes share-nothing processes

Slide 19

Slide 19 text

VII. Port binding Export services via port binding Containerless Add web server by dependency declaration

Slide 20

Slide 20 text

VIII. Concurrency Scale out via the process model

Slide 21

Slide 21 text

IX. Disposability Fast startup Graceful shutdown

Slide 22

Slide 22 text

XI. Logs Treat logs as event streams Write logs to file

Slide 23

Slide 23 text

X. Dev/prod parity Development = Staging = Production Time gap Personal gap Tool gap Design for continuous deployment

Slide 24

Slide 24 text

XII. Admin processes Run admin/management tasks as one-off processes bundle exec rake db:migrate

Slide 25

Slide 25 text

How about Docker?

Slide 26

Slide 26 text

Docker Heroku dockerfile buildpack image slug container dyno docker client heroku client docker registry add-on http://tuhrig.de/docker-vs-heroku/

Slide 27

Slide 27 text

https://github.com/progrium/dokku

Slide 28

Slide 28 text

Spectator.do ಜࢹਓ http://spectator.do

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

Thanks for Listening @uchengwang http://spectator.do PaaS TW Meetup #2