Python-разработка в части Яндекс-вселенной - Александр...

Post on 28-Nov-2014

439 views 1 download

description

 

Transcript of Python-разработка в части Яндекс-вселенной - Александр...

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 механизм

Вопросы?