• Like
PyClub VRN дистрибьюция python приложений
Upcoming SlideShare
Loading in...5
×

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

  • 161 views
Uploaded on

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

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

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
161
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

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