21
Django Od developerki po produkcję Marcin Lipiec, Marcin Grzybowski (2016) [email protected]

Django od developerki po produkcję (linux)

Embed Size (px)

Citation preview

Page 1: Django od developerki po produkcję (linux)

DjangoOd developerki po produkcję

Marcin Lipiec, Marcin Grzybowski (2016)[email protected]

Page 2: Django od developerki po produkcję (linux)

infrastruktura

DevOps

optymalizacja

bezpieczeństwosoftware

BiznesAutomatyzacja

Page 3: Django od developerki po produkcję (linux)

Dlaczego Python ?

Bo Django

http://tutorial.djangogirls.org/pl/

Page 4: Django od developerki po produkcję (linux)

Programista chce programować

Spotyka się dwóch programistów:

● Słyszałem, że straciłeś pracę. Jak to jest być bezrobotnym?

● To było najgorsze pół godziny mojego życia.

Page 5: Django od developerki po produkcję (linux)

Admin chce adminowaćBo tak

Page 6: Django od developerki po produkcję (linux)

Biznes chce…

Page 7: Django od developerki po produkcję (linux)

Czy tylko w startupie?

Page 8: Django od developerki po produkcję (linux)

A może przetestować kod ?

Page 9: Django od developerki po produkcję (linux)

Separacja na poziomie systemu

1) Chroot2) Vserver3) LXC ( cgroups )4) ** docker 5) Vagrant6) KVM

DLACZEGO ?

Page 10: Django od developerki po produkcję (linux)

Gdy mamy już nasze czyste środowiskoCoś musimy mieć na starcie:

$ pip install virtualenv

$ virtualenv moj_projekt

$ source moj_projekt/bin/activate ;#(.fish | .csh)

(django-debug-toolbar - dev)

Page 11: Django od developerki po produkcję (linux)

Sposoby na multi-settingsy (envdir)https://pypi.python.org/pypi/envdir

$ ls -ls ENV/

drwxr-xr-x 2 user1 group1 4096 May 28 2014 DEVdrwxr-xr-x 2 user1 group1 4096 May 28 2014 PROD

$ ls -al ENV/PROD/

-rw-r--r-- 1 user1 group1 24 May 10 2014 DJANGO_SETTINGS_MODULE

$ envdir ENV/PROD python manage.py collectstatic

Page 12: Django od developerki po produkcję (linux)

Sposoby na multi-settingsy (Django-environ)Połączenie modułów: Dj-database-url, dj-search-url, dj-config-url, django-cache-url, honcho, envparse

Cała konfiguracja zarządzana zmiennymi z otoczenia.

DEBUG=on# DJANGO_SETTINGS_MODULE=myapp.settings.devSECRET_KEY=your-secret-keyDATABASE_URL=psql://login:[[email protected]:8458/databaseCACHE_URL=memcache://127.0.0.1:11211,127.0.0.1:11212,127.0.0.1:11213REDIS_URL=rediscache://127.0.0.1:6379:1?client_class=django_redis.client.DefaultClient&password=redis-un-githubbed-password

Page 13: Django od developerki po produkcję (linux)

Gdy twoja aplikacja staje się popularna

Page 14: Django od developerki po produkcję (linux)

Serwery WWW + HaProxy

Nginx - http://nginx.com/

Apache - http://www.apache.org/

Cherokee - http://cherokee-project.com/

HaProxy - http://haproxy.com/

----------

django-admin.py runserver - lub Gunicorn, uwsgi, mod_wsgi, Flup, FastCGI

Działający przykład appki na Django + scgi : http://tentacle.pl | Działający przykład appki na Django + wsgi : https://do-domu.co/

Page 15: Django od developerki po produkcję (linux)

SuperVisor - zarządzanie procesami$ supervisorctl help

=====================================add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version=====================================

$ supervisorctl statusappka RUNNING pid 21670, uptime 18 days, 2:56:50

(http://supervisord.org/)

Page 16: Django od developerki po produkcję (linux)

Haproxy - zarządzanie końcówkami● Czy aplikacja żyje “/test_app”● Zarządzamy SplitTestami (1%, ciacha, adresy IP)● Szybkie i proste ACLki

backend eme

balance roundrobin http-check expect string pong http-check disable-on-404 mode http option httpclose option abortonclose option httpchk GET /test_app

server eme1 192.168.45.57:80 check maxconn 50 weight 50 server eme2 192.168.45.58:80 check maxconn 50 weight 50

Page 17: Django od developerki po produkcję (linux)

Deployment - sposoby (Fabric / Capistrano)from fabric.api import local

def prepare_deploy(): local("./manage.py test my_app") local("git add -p && git commit") local("git push")

$ fab prepare_deploy[localhost] run: ./manage.py test my_appCreating test database...Creating tablesCreating indexes

Page 18: Django od developerki po produkcję (linux)

Puppet / Chef / Ansible / SaltStack

Automatyzujemy system

Page 19: Django od developerki po produkcję (linux)

Zabbix / NewRelic / Errbit / Kibana LogStash

Monitoring jest ważny

Page 20: Django od developerki po produkcję (linux)

Był deploy ? Oglądaj statystykiPiątek - świątek

Page 21: Django od developerki po produkcję (linux)

Czy są Pythonia?

[email protected]