Из серии "знаете ли вы что..." :-).
В Яндексе выкладывание всего рабочего кода на серверы управляется системой Debian'овских пакетов.
Хотя наверное копирование между несколькими машинами в кластере делается какой-то другой автоматикой, но вот само действие "выложить новую версию кода на сервер" делается админами с помощью стандартного apt-get'а. Мне всегда было интересно, как это делается у умных людей, потому что я в своих проектах как-то никогда сам не доходил до вопросов автоматизации обновления боевого работающего кода, потому что мои проекты никогда, прямо скажем, не были такими масштабными и критическими.
При ближайшем рассмотрении оказалось, что apt -- это мощная и универсальная штука, в которой есть все что нужно для такого сценария. Админам не нужно вникать в детали каждого проекта: разработчик просто присылает название пакета, который надо установить, и он ставится. Проверка версий, установка зависимостей, предварительная настройка, прописывание init-скриптов -- все это можно описать в пакете. А я, помнится, процесс установки одного своего сервиса подробно описывал словами в wiki, чтобы админ все это делал вручную :-). А если в рабочем коде вдруг обнаружатся дикие баги, которые не выявило внутреннее тестирование, то админ, ничего не зная о коде, может просто заменить его на предыдущую работающую версию.
Но есть и минусы. Сегодня я упаковал в Яндексе свой первый собственный пакет. Процесс оказался геморройным: слишком много файликов, слишком много "вспомогательных" скриптов, слишком много надо помнить, что где поменять. Но коллеги вокруг говорят, что я привыкну :-).
Пользуясь случаем хочу выразить благодарность Андрею и Ване за терпение к моим многократным вопросам по каждому поводу :-)
И еще на связанную тему... Это, в общем-то, и не новость уже, но Яндекс официально хостит дистрибутивы многих линуксов на http://mirror.yandex.ru. Причем, для многих дистрибутивов (в том числе, для моей любимой Ubuntu) мы являемся официальным зеркалом.
Комментарии: 31
Alexander Solovyov
15.08.07 20:59
Да, дебиановские пакеты - не самая простая штука. :(
GiNeR
15.08.07 21:15
Это гуд, что разбираешься. Порядку быть :)
В deb не всё так сложно как кажется на первый взгляд. Просто в "большой сети" я не находил quick start по сборке deb, а большой по размеру доки многие пугаются.
mike
15.08.07 21:53
Интересно, на RPM можно чо-то подобное сделать?
Тимур Вафин
15.08.07 22:38
А что происходит, если новая версия требует изменения бд?
Как откатить код ясно, а если возможность отката бд?
Да, с rpm можно сделать тоже самое.
Alexander Solovyov
15.08.07 23:49
А какие проблемы? Вот разве что там все щас yum'ом пользуются, который apt'у в подмётки не годится.
Nonexistent
16.08.07 02:33
Да, применение apt'а кажется целесообразным. Интересно.
alt
16.08.07 09:26
весьма интересно ;)
значит ли это что весь яндекс работает на дебиане, или на клоне, или вообще на чем-то своем с интегрированым apt?
Иван Сагалаев
16.08.07 09:46
Да, у нас в основном Debian. Есть и что-то другое, но я специально не узнавал, поэтому врать не буду.
Игорь Александрович
16.08.07 10:31
А пчу в вас там не убунту?! ;-)
anonymous
16.08.07 12:01
[В Яндексе выкладывание всего рабочего кода на серверы управляется системой Debian'овских пакетов.]
Ilya V. Azarov
16.08.07 12:24
Хм... В сентябре поеду на highload - поинтересуюсь об особенностях OS.
Laz
16.08.07 12:30
Рекомендую бросить глаз на утилитку checkinstall (есть в оф. репозиториях дебиана), помогает со сборкой deb-ов, rpm-ок и tgz из исходников.
Denis
16.08.07 13:06
Про сборку из исходников в пакет
http://forum.ubuntu.ru/index.php?topic=11609.0
ph
16.08.07 13:38
во-первых, есть apt-rpm
во-вторых, это довольно спорно, я давно не использовал yum, но насколько я помню, он примерно ту же функциональность предоставляет.
а deb и rpm весьма похожи. что позволяет существовать таким штукам, как alien.
Alexander Solovyov
16.08.07 14:38
Я ж написал, что увлекаются yum'ом. Для apt-rpm как минимум придётся самому мейнтейнить репозиторий, потому что их нету уже вменяемых для большинства ОС. Да и сами rpm-based линухи куда как менее стройные, чем дебиан. :)
Что значит спорно? Yum умеет на порядки меньше. Те же preferences в нём реализованы очень куцо (вообще они там есть, может я его с кем-то ещё путаю?).
При чём тут это?
koder
16.08.07 15:03
Вот это IMHO пример правильно сделанной вещи ),
собственно apt для этого и сделан был - софт
распространять и ставить.
А по поводу yum - preferences это проблема rpm а не yum. Yum только высокоуровневая надстройка. Но yum бы с этой задачей справился ничуть не хуже Fedora вон вполне нормально себя на нем чувствует. А Яндекс ну ни разу не федора по масштабам.
Я тут долго искал imHo, но че-то не нашел.
Tigro
16.08.07 15:40
Я ж написал, что увлекаются yum’ом. Для apt-rpm как минимум придётся самому мейнтейнить репозиторий, потому что их нету уже вменяемых для большинства ОС.
Это абсолютная неправда, так как сейчас используются одинаковые мета-данные и для YUM и для APT-RPM и для SMART. Другое дело что APT-RPM это уже прошлый день.
koder
16.08.07 15:47
Я сам deb gакеты не делал, но скорее всего все
конфиг файлы текстовые. Так может cheetah(или че другое) + Django GUI спасут отца русской демократии? Мне для rpm весьма помогало.
Alexander Solovyov
16.08.07 19:33
Ну тогда о чём мы говорим? Апт - на голову сильнее юма. Это неоспоримый факт. Если апт-рпм - прошедший день, то может с ним что-то не то?
Ок. Но в двух словах - какая разница? ;)
А что такое Федора? А это дистр для экспериментов редхета. Так какая разница, как она себя на чём чувствует?
Гм. Федора не является для меня каким-то таким дистром, который можно себе на сервер поставить. Что в ней хорошего? Недоменеджер (по меркам апта) пакетов? Или невероятная bleeding-edge'нутость?
orly? С чего он там должен быть? Это факт. ;)
russian_knight
16.08.07 20:00
Привет от длинноволосого, которые гостили у вас сегодня в Яндексе.
Я тебя таки узнал. Всё время подозревал, а потом фамилия выдала с потрохами.
Gray
16.08.07 21:03
Вообще-то, под Debian у нас не так много бегает. Основной парк - это FreeBSD разных версий.
Alexander Solovyov
16.08.07 22:17
В смысле в Яндексе?
Ну так не Федора же! ;) Да и Фря - ничуть не хуже деба имхо, но я больше люблю бинарники. :)
Gray
16.08.07 22:47
В смысле да :).
Я про серверы, конечно. На рабочих станциях, если сотрудник желает Linux, ставится Ubuntu.
А если не хочет ни Windows, ни Linux, то получает MacBook.
Alexander Solovyov
17.08.07 08:50
...админам пополам, что стоит. Учаснегу самому мучаться. :D У нас та же ситуация.
Gray
17.08.07 20:17
Ну, почему же? Хелпдеск нормально саппортит Ubuntu, как и Windows. Вот с MacOS приходится самим разбираться.
Правда, чаще не приходится - не надо там разбираться :).
Иван Тарасов
18.08.07 00:08
А вот кстати было бы интересно подробнее узнать про использование apt для такого configuration management'а. Можешь подробнее процесс/что-где-когда-зачем описать?
cadmi
19.08.07 12:09
эх, почитать - так прям сплошной шоколад: внутреннее тестирование, пакеты... :)
Maximbo
22.08.07 20:21
Скажем, в ALT Linux apt-rpm живёт и побеждает. И обходит deb по простоте сборке пакетов. Потому как всё донельзя оптимизировано, шаблонизировано и вычищено от лишних телодвижений. Собственно, после пары лет с альтовым сборочным конвеером от сборки deb волосы стали дыбом. Но это решение из-за малой распространённости подходит только для тех, кто "умеет и понимает зачем".
А ещё есть stow -- менеджер установленных из исходников пакетов. Специально для любителей экспериментов с соблюдением чистоты и стерильности в лаборатории бинарников.
Traut
18.09.07 18:17
есть, кстати, хорошее видео из google-вских tech-talks - inside debian package :)
Алёна C++: HighLoad2007
26.09.07 23:58
[...] и посадили их отвечать на вопросы. Чего рассказали: в Яндексе используются Дебиановские пакеты, в Рамблере используется какая-то самосписная [...]
9000
3.10.07 12:54
После того, как я упаковал свой 3-й или 4-й пакет в яндексе, левел у меня явно поднялся (первые левелы быстро растут) и всё стало казаться намного проще и удобнее.