Post on 28-Nov-2014
description
Python-разработка в частиЯндекс-вселенной
Александр Кошелев, Яндекс
СодержаниеВведениеКак былоКак сталоВыводы
Наша часть вселеннойДесятки сервисовВнутренние и иногда внешниеВысокие и не очень нагрузкиБекэнд или full-stack сервисPython 2.xDjango, Tornado, Flask и т.п.
УсловияНесколько серверных сред
developmenttestingproduction
UbuntuХорошее железо и инфраструктураОбщежитие
Как былоРазрабатывали как моглиРуками собирали debian-пакетыПересобирали зависимостиВсе команды делали по-своему
ПлюсыDebian-пакетыИспользуется только пакетный менеджер системыПредсказуемость выкладки на большой кластерБольше свободы
МинусыDebian-пакетыЗависимость от соседейМного ручной работыНет стандартных подходов
Как сейчасvirtualenvFabricCIВнутренний Open SourceСтандартизация
ПлюсыРешили почти все проблемы старого подхода
МинусыТеперь у нас два пакетных менеджераМеньше свободы
virtualenvИзоляцияПредсказуемость окруженияСвой PyPI – быстрое создание окруженияpip-accel/wheel – ещё более быстрое
Свой PyPIlocalshop
Сотни пользователейСотни пакетов
Интегрировано с CIЗеркало большого PyPI
FabricДля нас – альтернатива makeАвтоматизация конвейера сборкиУтилитарные операцииЗапуск тестов
CIСборкаТестированиеДобавление в очередь на выкатку (тикет)
Конвейер сборкив CI
Создать окружение через virtualenvУстановить зависимости и код проектаСобрать статику, переводы и т.п.Положить в debian-пакетПакет загрузить в репозиторий
Конвейер сборкиу разработчика
Обновить changelogДождаться сборки в CIДождаться тестов в CIДождаться тикета на выкладкуДождаться выкладки в нужную среду
Внутренний Open SourceБиблиотекиОбщее владение кодомCode Review
ПлатформаСтандартизацияПредсказуемые компоненты
СтандартизацияЕдиный перечень технологийЕдиные подходы
АвторизацияЛогиРаспределенные блокировкиРабота с окружениемИнтерфейсыМониторинги...
КомпонентыБаза (SQL и NoSQL)Очередь задачФронты/бекиАгрегация логов/ошибокPub/sub механизм
Вопросы?