Из серии "знаете ли вы что..." :-).

В Яндексе выкладывание всего рабочего кода на серверы управляется системой Debian'овских пакетов.

Хотя наверное копирование между несколькими машинами в кластере делается какой-то другой автоматикой, но вот само действие "выложить новую версию кода на сервер" делается админами с помощью стандартного apt-get'а. Мне всегда было интересно, как это делается у умных людей, потому что я в своих проектах как-то никогда сам не доходил до вопросов автоматизации обновления боевого работающего кода, потому что мои проекты никогда, прямо скажем, не были такими масштабными и критическими.

При ближайшем рассмотрении оказалось, что apt — это мощная и универсальная штука, в которой есть все что нужно для такого сценария. Админам не нужно вникать в детали каждого проекта: разработчик просто присылает название пакета, который надо установить, и он ставится. Проверка версий, установка зависимостей, предварительная настройка, прописывание init-скриптов — все это можно описать в пакете. А я, помнится, процесс установки одного своего сервиса подробно описывал словами в wiki, чтобы админ все это делал вручную :-). А если в рабочем коде вдруг обнаружатся дикие баги, которые не выявило внутреннее тестирование, то админ, ничего не зная о коде, может просто заменить его на предыдущую работающую версию.

Но есть и минусы. Сегодня я упаковал в Яндексе свой первый собственный пакет. Процесс оказался геморройным: слишком много файликов, слишком много "вспомогательных" скриптов, слишком много надо помнить, что где поменять. Но коллеги вокруг говорят, что я привыкну :-).

Пользуясь случаем хочу выразить благодарность Андрею и Ване за терпение к моим многократным вопросам по каждому поводу :-)

И еще на связанную тему... Это, в общем-то, и не новость уже, но Яндекс официально хостит дистрибутивы многих линуксов на http://mirror.yandex.ru. Причем, для многих дистрибутивов (в том числе, для моей любимой Ubuntu) мы являемся официальным зеркалом.

Комментарии: 32

  1. Alexander Solovyov

    Процесс оказался геморройным

    Да, дебиановские пакеты - не самая простая штука. :(

  2. GiNeR

    Это гуд, что разбираешься. Порядку быть :)
    В deb не всё так сложно как кажется на первый взгляд. Просто в "большой сети" я не находил quick start по сборке deb, а большой по размеру доки многие пугаются.

  3. mike

    Интересно, на RPM можно чо-то подобное сделать?

  4. Тимур Вафин

    А что происходит, если новая версия требует изменения бд?

    Как откатить код ясно, а если возможность отката бд?

    Да, с rpm можно сделать тоже самое.

  5. Alexander Solovyov

    Интересно, на RPM можно чо-то подобное сделать?

    А какие проблемы? Вот разве что там все щас yum'ом пользуются, который apt'у в подмётки не годится.

  6. Nonexistent

    Да, применение apt'а кажется целесообразным. Интересно.

  7. alt

    весьма интересно ;)

    значит ли это что весь яндекс работает на дебиане, или на клоне, или вообще на чем-то своем с интегрированым apt?

  8. Иван Сагалаев

    Да, у нас в основном Debian. Есть и что-то другое, но я специально не узнавал, поэтому врать не буду.

  9. Игорь Александрович
        <p />
    

    А пчу в вас там не убунту?! ;-)

  10. anonymous

    [В Яндексе выкладывание всего рабочего кода на серверы управляется системой Debian'овских пакетов.]

  11. Ilya V. Azarov

    Хм... В сентябре поеду на highload - поинтересуюсь об особенностях OS.

  12. Laz

    Рекомендую бросить глаз на утилитку checkinstall (есть в оф. репозиториях дебиана), помогает со сборкой deb-ов, rpm-ок и tgz из исходников.

  13. Denis

    Про сборку из исходников в пакет
    http://forum.ubuntu.ru/index.php?topic=11609.0

  14. ph

    А какие проблемы? Вот разве что там все щас yum’ом пользуются, который apt’у в подмётки не годится.

    во-первых, есть apt-rpm
    во-вторых, это довольно спорно, я давно не использовал yum, но насколько я помню, он примерно ту же функциональность предоставляет.

    а deb и rpm весьма похожи. что позволяет существовать таким штукам, как alien.

  15. Alexander Solovyov

    во-первых, есть apt-rpm

    Я ж написал, что увлекаются yum'ом. Для apt-rpm как минимум придётся самому мейнтейнить репозиторий, потому что их нету уже вменяемых для большинства ОС. Да и сами rpm-based линухи куда как менее стройные, чем дебиан. :)

    во-вторых, это довольно спорно, я давно не использовал yum, но насколько я помню, он примерно ту же функциональность предоставляет.

    Что значит спорно? Yum умеет на порядки меньше. Те же preferences в нём реализованы очень куцо (вообще они там есть, может я его с кем-то ещё путаю?).

    а deb и rpm весьма похожи. что позволяет существовать таким штукам, как alien.

    При чём тут это?

  16. koder

    Вот это IMHO пример правильно сделанной вещи ),
    собственно apt для этого и сделан был - софт
    распространять и ставить.

    А по поводу yum - preferences это проблема rpm а не yum. Yum только высокоуровневая надстройка. Но yum бы с этой задачей справился ничуть не хуже Fedora вон вполне нормально себя на нем чувствует. А Яндекс ну ни разу не федора по масштабам.

    Да и сами rpm-based линухи куда как менее
    стройные, чем дебиан. :)

    Я тут долго искал imHo, но че-то не нашел.

  17. Tigro

    Я ж написал, что увлекаются yum’ом. Для apt-rpm как минимум придётся самому мейнтейнить репозиторий, потому что их нету уже вменяемых для большинства ОС.

    Это абсолютная неправда, так как сейчас используются одинаковые мета-данные и для YUM и для APT-RPM и для SMART. Другое дело что APT-RPM это уже прошлый день.

  18. koder

    Процесс оказался геморройным: слишком много
    файликов, слишком много “вспомогательных”
    скриптов, слишком много надо помнить, что где
    поменять

    Я сам deb gакеты не делал, но скорее всего все
    конфиг файлы текстовые. Так может cheetah(или че другое) + Django GUI спасут отца русской демократии? Мне для rpm весьма помогало.

  19. Alexander Solovyov

    Другое дело что APT-RPM это уже прошлый день.

    Ну тогда о чём мы говорим? Апт - на голову сильнее юма. Это неоспоримый факт. Если апт-рпм - прошедший день, то может с ним что-то не то?

    А по поводу yum - preferences это проблема rpm а не yum.

    Ок. Но в двух словах - какая разница? ;)

    Fedora вон вполне нормально себя на нем чувствует.

    А что такое Федора? А это дистр для экспериментов редхета. Так какая разница, как она себя на чём чувствует?

    А Яндекс ну ни разу не федора по масштабам.

    Гм. Федора не является для меня каким-то таким дистром, который можно себе на сервер поставить. Что в ней хорошего? Недоменеджер (по меркам апта) пакетов? Или невероятная bleeding-edge'нутость?

    Я тут долго искал imHo, но че-то не нашел.

    orly? С чего он там должен быть? Это факт. ;)

  20. russian_knight

    Привет от длинноволосого, которые гостили у вас сегодня в Яндексе.

    Я тебя таки узнал. Всё время подозревал, а потом фамилия выдала с потрохами.

  21. Gray

    Вообще-то, под Debian у нас не так много бегает. Основной парк - это FreeBSD разных версий.

  22. Alexander Solovyov

    у нас

    В смысле в Яндексе?

    Основной парк - это FreeBSD разных версий.

    Ну так не Федора же! ;) Да и Фря - ничуть не хуже деба имхо, но я больше люблю бинарники. :)

  23. Gray

    В смысле да :).
    Я про серверы, конечно. На рабочих станциях, если сотрудник желает Linux, ставится Ubuntu.

    А если не хочет ни Windows, ни Linux, то получает MacBook.

  24. Alexander Solovyov

    На рабочих станциях...

    ...админам пополам, что стоит. Учаснегу самому мучаться. :D У нас та же ситуация.

  25. Gray

    Ну, почему же? Хелпдеск нормально саппортит Ubuntu, как и Windows. Вот с MacOS приходится самим разбираться.
    Правда, чаще не приходится - не надо там разбираться :).

  26. Иван Тарасов

    А вот кстати было бы интересно подробнее узнать про использование apt для такого configuration management'а. Можешь подробнее процесс/что-где-когда-зачем описать?

  27. cadmi

    эх, почитать - так прям сплошной шоколад: внутреннее тестирование, пакеты... :)

  28. Maximbo

    Скажем, в ALT Linux apt-rpm живёт и побеждает. И обходит deb по простоте сборке пакетов. Потому как всё донельзя оптимизировано, шаблонизировано и вычищено от лишних телодвижений. Собственно, после пары лет с альтовым сборочным конвеером от сборки deb волосы стали дыбом. Но это решение из-за малой распространённости подходит только для тех, кто "умеет и понимает зачем".

    А ещё есть stow — менеджер установленных из исходников пакетов. Специально для любителей экспериментов с соблюдением чистоты и стерильности в лаборатории бинарников.

  29. Traut

    есть, кстати, хорошее видео из google-вских tech-talks - inside debian package :)

  30. [...] и посадили их отвечать на вопросы. Чего рассказали: в Яндексе используются Дебиановские пакеты, в Рамблере используется какая-то самосписная [...]

  31. 9000

    После того, как я упаковал свой 3-й или 4-й пакет в яндексе, левел у меня явно поднялся (первые левелы быстро растут) и всё стало казаться намного проще и удобнее.

  32. Доброе время суток. Пришло время выкладывать проект в продакшн, всё осложняется тем, что у меня не будет доступа по сети к системе после инсталляции, а ездить не всегда удобно. Поэтому я сейчас подробно разбираю процесс установки и обновления проекта с помощью стандартных пакетов Debian, к чему меня сподвигла статья http://softwaremaniacs.org/blog/2007/08/15/deb-packages-in-yandex/ С самой сборкой пакетов проблем нет. Вопрос в том, как правильно раскидать сам код сайта, статику по файловой системе, куда выложить settings.py?

Добавить комментарий