Upload
marcin-grzybowski
View
75
Download
3
Embed Size (px)
Citation preview
DjangoOd developerki po produkcję
Marcin Lipiec, Marcin Grzybowski (2016)[email protected]
infrastruktura
DevOps
optymalizacja
bezpieczeństwosoftware
BiznesAutomatyzacja
Dlaczego Python ?
Bo Django
http://tutorial.djangogirls.org/pl/
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.
Admin chce adminowaćBo tak
Biznes chce…
Czy tylko w startupie?
A może przetestować kod ?
Separacja na poziomie systemu
1) Chroot2) Vserver3) LXC ( cgroups )4) ** docker 5) Vagrant6) KVM
DLACZEGO ?
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)
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
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
Gdy twoja aplikacja staje się popularna
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/
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/)
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
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
Puppet / Chef / Ansible / SaltStack
Automatyzujemy system
Zabbix / NewRelic / Errbit / Kibana LogStash
Monitoring jest ważny
Był deploy ? Oglądaj statystykiPiątek - świątek
Czy są Pythonia?