Heroku and Hitlist

Luka Kladaric

pytalks Zagreb May 2014

@kll
luka@hitlistapp.com
http://hitlistapp.com

hosting

shared hosting

shared hosting

jedan stroj -- single point of failure

shared hosting

jeftino ($5)

shared hosting

bad neighbor effect

shared hosting

scaling?

shared hosting

ALI!

shared hosting

0 maintenance, hoster odrzava softver, brine se za security

VPS

VPS

nesto manje jeftino ($10-$20)

VPS

i dalje samo jedan stroj -- single point of failure

VPS

ALI!

VPS

puno pouzdanije i konzistentnije performance, "bad neighbor" effect primjetno manji problem

VPS

ALI!

VPS

najcesce "not managed" -- znaci root pristup i udri, radi sto hoces, i odgovaraj za sigurnost i stabilnost

IaaS

Infrastructure as a Service

Amazon EC2, etc

IaaS

zamisljeno za vece setupe

IaaS

i decentralizirane aplikacije

IaaS

visok "barrier to entry" -- potrebno je puno truda uloziti da bi se servirala najjednostavnija "Hello World" aplikacija

IaaS

50$ navise (EC2)

IaaS

naglasak na reusabilityju -- koncipirano kao lego kockice vise nego kao gotova rjesenja

IaaS

kao rezultat, scaling hardvera je jednostavan i bezbolan

IaaS

da bi to sve dobili, potrebno je dosta znanja koje je apsolutno neprimjenjivo igdje drugdje osim na toj platformi

PaaS

Platform as a Service

Heroku, Azure, Google App Engine

PaaS

striktno definirana radna okolina, "default" setup, cesto slican shared hostingu

PaaS

razne razine konfigurabilnosti

PaaS

35$ navise (Heroku)

PaaS

naglasak na jednostavnosti scalinga kroz poticanje "ispravnih" pristupa

Heroku

Heroku

PaaS provider koji prodaje VPS-like containere ("dyno") i dodatke ("addons")

Heroku dyno
  • osnovna logicka jedinica ("server")
  • 512 MB RAM
  • "1x cpu share"
  • $35/mj
Heroku addons

razni dodaci koje nude Heroku i vanjski partneri, a koji ne spadaju u model web servera ili workera

  • postgres (Heroku official)
  • scheduler (cron, Heroku official)
  • data stores: mysql, redis, memcached, mongodb, ...
  • search: elasticsearch, sphinx, hadoop, ...
  • logging
  • email: sendgrid
  • queues: amqp, ironmq..
  • monitoring/alerting: new relic, sentry, ...
  • itd...
Heroku

what's the big deal?

echo '' > index.php;touch composer.json;\
	git init;git add .;git commit -m "new";\
	heroku create;\
	git push heroku master;\
	heroku open
Heroku

30s do web sajta, s javnom web adresom

Heroku

platforma je language-agnostic -- ako se kompajlira za linux, vrti se na Herokuu

Heroku

sluzbeni support za Python, PHP, Ruby, Node.js...

nesluzbeni support za... svasta.

Heroku

aplikacija definira vrste dynoa i naredbe kojima se pokrecu (Procfile)

Heroku

preko dashboarda se kontrolira koliko kojih dynoa treba

Hitlist

Hitlist

mobilna aplikacija koja olaksava ljudima planiranje putovanja

Hitlist

backend: Django, postgres, redis, celery, rabbitmq

Hitlist

mobile app: phonegap (iOS/Android), native WIP

Hitlist: Heroku setup

5 appova

  • production-front: web serveri (2 kom)
  • production-workers: celery workeri (3 vrste, 1 kom svaki)
  • production-beat: celery heartbeat (1 kom)
  • staging: vrti po 1 od svega (web, 3 x worker, heartbeat)
Hitlist: Procfile
web: gunicorn hitlist.wsgi:application --log-level=$LOG_LEVEL -w 8 -k gevent --max-requests=500 --preload
celery: python manage.py celery worker -E -B -Q celery --loglevel=INFO --maxtasksperchild=500
celeryslow: python manage.py celery worker -E -Q slow --loglevel=INFO --maxtasksperchild=500e
celerybacklog: python manage.py celery worker -E -Q backlog --loglevel=INFO --maxtasksperchild=500
Hitlist: Heroku setup

addoni

  • heroku postgres (Tengu + Yanari)
  • heroku pgbackups
  • new relic
  • rabbitmq
  • redis
  • sendgrid
Hitlist+Heroku: war stories
Hitlist: Hiring!

ako vam se svidja ovo o cemu sam tu pricao
luka@hitlistapp.com

pitanja? :)

HVALA

@kll
luka@hitlistapp.com
http://hitlistapp.com