Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

608 views

Published on

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

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

×