PyClub VRN дистрибьюция python приложений

550 views

Published on

дистрибьюция python приложений

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
550
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

PyClub VRN дистрибьюция python приложений

  1. 1. Дистрибьюция python приложений и не только
  2. 2. о чем этот доклад? ● ● ● ● о пакетных менеджерах (debian?) о привычках о деплойменте в на сервер немного о python
  3. 3. кто я такой? ● сторонник свободного рынка ● сторонник легализации биткоинов ● читал про функциональные языки (nodejs?) ● любитель порефакторить
  4. 4. кому это может быть интересно? ● ● ● ● свободных духом разработчикам, эксплуатационщикам кому надоел CVS на продакшен серверах велосипедистам (картинка про конкурирующие форматы) ● всем остальным
  5. 5. определим проблемы 1. 2. 3. 4. 5. 6. 7. пишем код (ваш вариант в комментах) собираем (tar?) деплоим (svn checkout/scp/wget?) настраиваем (vim?) запускаем (do some shell?) ... ??? profit! (скилы: ловкость, удача)
  6. 6. определим проблемы крупный проект, много серверов, много кода ● разработка ○ управление зависимостями ○ общий код для приложений ○ тестирование ● сборка ○ зависимости
  7. 7. определим проблемы ● установка приложений ○ распространение ○ конфигурация приложения ○ конфигурация среды ● запуск приложений ○ контроль статуса зависимостей ○ жизненный цикл приложения
  8. 8. разработка приложений храним отдельно ● зависимости приложений ○ системные (db, webserver) ○ python (requests, lxml) ● зависимости тестов ○ системные (sqlite) ○ python (nose, coverage)
  9. 9. разработка приложений ● билд зависимости ○ compiler, libs ○ cvs ● конфигурация ○ общая ○ среды ○ тестирования
  10. 10. разработка приложений ● общий код ○ выносим в отдельные либы ○ python пакеты (со своими тестами) ○ зависимые приложения строго ссылаются на версию
  11. 11. сборка приложений ● билд сервера ○ корреляция с продакшен системой ■ chroot ■ свой сервер для разных версий ○ контроль версий ○ актуальный и своевременный бэкап ○ виртуализация (контейнеры, vm)
  12. 12. установка приложений общее ● установка новых файлов ● перенастройка конфигурации ● рестарт/запуск сервисов ● установка зависимостей ● откат на предыдущую версию ● воспроизводимость
  13. 13. установка приложений python специфичное ● правильная версия интерпретатора ○ как этим управлять? ● python зависимости ○ как ими управлять? ○ как их установить?
  14. 14. native package manager ● ● ● ● ● ● зависимости версионирование знание о сервисах управление конфигурацией (базовое) воспроизводимость репозитории (проблема доставки и распространения)
  15. 15. native package ● ● ● ● ● манифест (версия, зависимости) файлы приложения конфигурация скрипты установки (pre,post install, ...) единственная версия на сервере
  16. 16. pip package ● можно ставить в virtualenv ● удобен для тестов ● не пригоден для контроля за ОС
  17. 17. python зависимости (native) + правильные зависимости от ОС + собраны за вас - не самые свежие (это еще мягко сказано) - может паковать самостоятельно? - выбор мал (пакуют только мейнстрим) - может паковать самостоятельно?
  18. 18. python зависимости (pip) + широкий выбор (это правда) - зависимости (а какие libdev нужны?) - засоряет сервер (gcc, libwtf, ...) - воспроизводимость (pip install 10 раз?) - контроль версий (github, tar.gz) - ссылки на master - битые линки
  19. 19. python зависимости (virtualenv) + собираются внутрь пакета (да, прям так) + учитывают зависимости от ОС (по опыту) + воспроизводимость (собираем на билд сервере) + контроль версий (знаем что внутри на момент сборки)
  20. 20. python зависимости (virtualenv) - билд сервер <=> продакшен сервер (всегда должны быть синхронизированы) - старые версии pip/virtualenv (хаки, хаки повсюду) (virtualenv --relocatable) (pip install --upgrade pip)
  21. 21. что получилось
  22. 22. что есть на рынке? ● dpkg-deb/rpmbuild ○ from scratch ● setup.py (easy-deb) ○ глобальные пакеты ○ нет управления virtualenv
  23. 23. что есть на рынке? ● scons ○ помогает собирать бинарники ○ все еще нужна обвязка для python ● debhelper ○ ○ ○ ○ это канонiчно этим пользуются ребята из debian это удобно все еще не понятно как допилить под наши нужды
  24. 24. что есть на рынке? ● dh-virtualenv ○ https://github.com/spotify/dh-virtualenv (привет злым уткам) ○ надстройка над debhelper ○ сделано специально для python ○ все уже написано ○ легка в использовании
  25. 25. пример dh_virtualenv
  26. 26. пример dh_virtualenv весь пакет python код virtualenv входная точка
  27. 27. best practices ● зависимости ○ постоянный мониторинг (maillist, rss, twitter) ○ своевременное обновление (каждый релиз) ○ слабоумие и отвага прогресс и эволюция
  28. 28. best practices ● установка ○ ○ ○ ○ тестирование апгрейда тестирование даунгрейда бекап всех конфигов (puppet & friends?) тестирование миграций баз
  29. 29. best practices ● свои репозиторий ○ ○ ○ ○ ○ deb/rpm/pip контроль доступа (ssl + credentials) масштабирование сети минимизация проблем сети скорость установки
  30. 30. best practices ● хранение конфигурации ○ ○ ○ ○ общая конфигурация в репозитории (в пакетах) конфигурация среды отдельно (puppet и прочее) хранение примеров конфигурации среды никаких hardcoded values
  31. 31. best practices ● сборка ○ хранение копии всех актуальных билдеров ○ чистка системы (все ненужные либы не нужны) ○ сборка пакетов только на билдерах (никаких локальных сборок) ○ хранение актуальных пакетов ○ ведение лога установленных на продакшене версий
  32. 32. ● ● pip только для билдера продакшен использует только deb/rpm пример топологии сети
  33. 33. 1. Спасибо 2. Вопросы? yuri.khrustalev@gmail.com http://about.me/ykhrustalev

×