Категория: GNU/Linux

В последнее время я неоднократно сталкивался в Интернете с термином "Платформа Linux". Меня, как практика, очень коробит этот оксюморон. Причем я не одинок в своем мнении. Недавно я встретил аналогичное мнение на одном очень популярном IT-форуме. К сожалению, это мнение не просуществовало долго, так как было высказано в достаточно резкой форме.

Я хочу попытаться убедить тех, кто способен слышать, почему Linux не является платформой. Прежде всего тех, кто принимает решения о выборе этой самой платформы.


Итак, как мы видим из Вики, четкого определения термина "платформа" мы не имеем по сей день. Давайте попытаемся сформулировать, что же мы все-таки понимаем под понятием "платформа" с точки зрения практиков.

Есть аппаратная платформа - совокупность архитектуры центрального процессора, шин, и некоего минимального набора периферии, обеспечивающий выполнение определенных операционных систем и прикладных программ. Например, x86 - это аппаратная платформа.

Есть операционная система, которая выполняется на аппаратной платформе и обеспечивает единую унифицированную среду для выполнения прикладных программ и взаимодействия пользователя с аппаратной платформой (выделено мной). Операционная система представляет собой комбинацию ядра и operational environment, или userland. Помимо этого, ОС имеет оболочку (оболочки), файловые системы, сетевой интерфейс, структуру директорий.

Какими чертами, с точки зрения директора IT, должна обладать платформа, дабы считаться таковой?

Платформа должна обладать достаточно длительным жизненным циклом (порядка десяти лет) и обеспечивать в течение этого периода возможность выполнения большинства однажды написанных прикладных программ.
Платформа должна быть стабильной, не меняться непредсказуемым образом в произвольные промежутки времени без веских причин.
Платформа должна иметь единый API (для сохранения архитектурного единства приложений и единых подходов к разработке) и унифицированный ABI (в случае операционных систем для обеспечения выполнения единожды написанных и скомпилированных приложений без необходимости их перекомпиляции).
Платформа должна иметь единый административный и прикладной интерфейс. А именно, использовать конечное количество оболочек, обеспечивать единое пространство управления процессами и системами, иметь единый интерфейс установки прикладного ПО и пакетов программ, иметь единый интерфейс управления обновлениями. Кроме этого, иметь единую структуру директорий, с одинаковым месторасположением основных компонентов юзерленда и системных компонентов.
Платформа имеет достаточно большое сообщество разработчиков и поставщиков прикладных программ, эксплуатируемых на ней.

Все это требуется для того, чтобы обеспечить возможность выполнять однократно написанную прикладную программу или систему на возможно большем количестве вычислительных систем (иметь большую инсталляционню базу) без необходимости рекомпиляции, а также минимизировать TCO (совокупную стоимость владения) за счет уменьшения затрат на поддержку и увеличения жизненного цикла программно-аппаратного комплекса.

Замечание. Совсем не каждая операционная система является платформой. KolibriOS - операционная система. Но она - не платформа.

Ранее платформой в общем смысле этого слова неформально считалась совокупность аппаратной платформы и операционной системы.

Это определение остается верным по сей день, однако мы его несколько дополним. Платформой так же является достаточно распространенная единая среда выполнения приложений. Я подчеркиваю - единая. С единым пользовательским и прикладным интерфейсом, единой структурой директорий, пакетов, библиотек, едиными подходами к управлению и администрированию.

В некоторых случаях платформами с натяжкой можно считать различные операционные среды, удовлетворяющие большинству требований к платформам. Например, Java - может считаться платформой, поскольку является средой для выполнения прикладных программ. Такой платформой может считаться даже Perl.

Говоря простым языком - от платформы требуется стабильность, единство и возможность выполнять возможно большее количество прикладных программ. А также возможность, изучив систему один раз, использовать постоянные и воспроизводимые подходы на всех последующих версиях платформы без необходимости переобучения. Использовать, непример, единые скриптовые комплексы на большинстве версий данной платформы. Находить прикладные программы и их данные в одних и тех же местах. И так далее.

Я повторяю, все это означает, что мы рассматриваем платформу с точки зрения департамента IT.

Говоря простым языком, если я планирую построение крупной инфраструктуры критичных систем, работающих в режиме 24х7х365, и при этом планирую минимизировать затраты, (что очень естественно для бизнеса, не правда ли?) я буду выбирать платформу, которая позволит мне, установив оборудование и ОС один раз, с минимальными затратами обновлять и обслуживать их с минимальным простоем, без необходимости обновлять прикладные системы, на протяжении возможно большего промежутка времени. Что, в частности, подразумевает, что, раз обучив системных администраторов, мне не придется потом ежегодно тратиться на их переобучение в связи с кардинальными изменениями платформы. Кроме этого, для сокращения TCO мне желательно для эксплуатации систем использовать минимально квалифицированный персонал уровня операторов, а не дорогостоящих гениев ядерного хака.

Ну и такое простое соображение. Полностью переустановить домашний писюк - это вовсе не то же самое, что и переустановка нескольких тысяч серверов в датацентре, правда?

Однако, несмотря на максиму, вынесенную в заголовок, и которая коротко обобщает все то, что мы только что сформулировали, с единством в компьютерном мире очень туго. Даже, несмотря на титанические усилия, стандарт POSIX обязательным так и не стал. Я сколько себя в компьютерных системах помню, его пытаються разработать и насадить. Безуспешно.

Таким образом, платформами мы можем считать - с точки зрения enterprise и с некоторыми - весьма существенными - натяжками:

- Большинство UNIX-систем
- Несмотря на все недостатки и кривизну - Wintel (Windows + Intel). Большая часть приложений, написанных для Win32 более десяти лет назад, без использования костылей и грязных хаков, посейчас исполняется на современных версиях
- Java

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

Потому что, как директору IT, лично мне неприемлема ситуация, когда, после обновления ОС, перестает работать большинство моих прикладных программ, за которые плачены деньги или на которые потрачено много времени и усилий и которые использует достаточно большое количество пользователей. Или если требуется обновлять приложения. Переустанавливать их. Так же, как недопустима ситуация необходимости перекомпиляции большинства приложений для обеспечения совместимости с новой версией операционной среды или необходимость переучивания обслуживающего персонала в связи с этим же. Постоянно мутирующая операционная среда платформой не является и являться не может по определению.

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

Замечание. Я с ним полностью согласен. Перманентно красноглазить вы можете дома, собирая и пересобирая систему just for fun и наслаждаясь своей немеренной крутизной в сборке ядер и юзерленда, допиливая и перепиливая систему как вам взбрендится, добиваясь того, чтобы какой-то софт работал на вашей персональной платформочке. Причем лично мне даже это глубоко претит. Я не сторонник мастурбационного компьютинга. Я не хочу заниматься со своей ОС на десктопе, ковыряя ее неделями. Я хочу один раз ее поставить, настроить и забыть о ней на несколько лет, пока не придет пора вынужденной ее смены либо оборудование придется выбрасывать.

Говоря простым языком, для платформы недопустимы подходы "Однажды лебедь раком щуку" и "Кому-то нравится поп, кому-то попадья, а кому-то свиной хрящик".

Что мы имеем в случае Linux?

А имеем мы полную доступность всех исходников для каждого и физическую возможность клепать сколько угодно дистрибутивов.

Что на деле означает полную анархию. "Мама-анархия, папа-стакан портвейна".

Сотни "платформочек". По большей части несовместимых на уровне ABI, библиотек, ядер, пакетов и системы патчей. Различных в такой степени, что фактически являющихся несовместимыми друг с другом на большинстве уровней. Инсталляционная база каждой составляет от нескольких сот до нескольких тысяч систем в максимуме. Сами любители анархии постоянно сталкиваются с ситуацией, когда приложение либо несовместимо на уровне пакетного менеджера (что еще хорошо) либо на уровне ABI и просто физически не работает на их платформочке, будучи скомпилированной на другой.

Пример? Пожалуйста - вот он. Обратите внимание - по одной сборке для Windows и Solaris, одна сборка для MacOS и два десятка сборок для Linux.

О чем это говорит? О том, что целевые Linux-дистрибутивы несовместимы между собой. А здесь ведь далеко не все дистры представлены! А лишь самые известные и основные!

И ладно бы, нежизнеспособное само сдохло. И осталась бы пара-тройка устоявшихся платформ, централизованно, предсказуемо и авторитарно развиваемых и поддерживаемых, стандартизированных. Так нет же!

Каждую неделю в среднем рожают один новый дистрибутив. Каждый лепит его по-своему. Создавая сотни несовместимых между собой платформочек. В какой-то момент разработчикам и мэнтайнерам прикладного софта ведь настоиграет собирать и поддерживать десятки и сотни вариантов своих программ. О, вот вам исходники - занимайтесь ими сами.

Хороший подход. Приемлемый для красноглазого мастурбатора дома. И категорически неприемлемый на предприятии.

То, что совместимость идет к черту - это одна сторона медали. Со второй красноглазые еще просто не познакомились. Вымышленный диалог в отделе кадров:

- Здравствуйте, вы системный администратор?
- Да, я системный администратор Linux.
- С каким дистрибутивом вы работаете?
- С дистрибутивом ЛунныйСвет.
- Мы используем КраснуюШапку.
- Простите, я ее не знаю. Даже никогда о ней не слышал.
- Спасибо, вы нам не подходите, до свидания.

Если говорить о безопасности, то дело вообще швах.

Одно дело, когда платформа, оставаясь в большей части неизменной, годами вылизывается в рамках своего жизненного цикла с точки зрения безопасности. В какой-то момент она и становится достаточно безопасной. Но когда платформа меняется постоянно, причем никто не обременяет себя ни secure by design, ни аудитами кода, ни даже сколько-нибудь регулярными обновлениями безопасности - на кой ляд мне такая платформа? Более того - кардинальные изменения вносятся по принципу "шоб було", а создатель дистрибутива обычно в безопасности разбирается как свинья в апельсинах.

Не раз и не два были ситуации, когда публикуется какой-нибудь новый эксплоит. Все пингвинятники дружно начинают его пробовать. "Ой, у меня сработал, ой, и у меня, и у меня тоже, а у меня нет, у меня БСД, ха-ха-ха, так вам и надо!" Далее - по квалификации, либо патчат сами, либо ждут патча, либо, плача и колясь, продолжают есть кактус.

Я не говорю, что закрытый код лучше. Но, например, в случае платформ, централизованно выпускаются обновления безопасности, минимум раз в квартал. Что позволяет достаточно спокойно эксплуатировать системы, находящиеся в публичном доступе.

Швобода, говорите? Бери исходники и пили их сам? Как однажды выразился один мой хороший знакомый - "Банк - это не софтверхаус". Цель департамента IT - не интеллектуальная мастурбация с платформой, а эксплуатация прикладных систем и обеспечение потребностей бизнеса.

Оставим в покое параноидальные мысли об открытых исходниках и закладках. Те, кого это реально беспокоит, могут нанять профессиональную команду и за несколько лет создать собственную ОС с нуля. Если не слабо. И если это реально необходимо.

Да, лицензии и поддержка платформ стоят денег. Но десяток красноглазых прыщебхомяков, пилящих мою платформу, за жрат работать не будут и вряд ли обойдутся дешевле, чем покупка поддержки. Помимо того, что я делаю бизнес заложником этих самых красноглазых, которые отнюдь не всегда отличаются здравомыслием.

С точки зрения все того же директора IT есть три варианта.

- Послать Linux к чертовой матери и использовать платформу.
- Выбрать один из считанных единиц дистрибутивов, находящийся в одних, достаточно богатых, авторитарных и сильных руках и использовать его, купив официальную поддержку. С натяжкой, такие дистры можно пересчитать по пальцам одной руки. Это будет каким-то подобием платформы.
- Взять в свои руки полный набор исходников, нанять красноглазых хомяков, зажать их в ежовые рукавицы и создать собственный закрытый дистр для собственных надобностей. Поддерживая, развивая и переписывая его собственными силами. И послав в глубокую задницу сообщество с его анархическим подходом. Такой подход по зубам весьма немногим - Google, например. У кого квалифицированных кадров и денег куры не клюют. Будет приватная платформа Предприятие Linux.

На мой личный взгляд, самый лучший вариант - первый. И не надо мне расписывать преимущества дистрибутива ЛунныйСвет. В сортах дерьма не разбираюсь.

PS. Соображения, что-де Linux нынче мэйнстрим, меня лично как-то не убеждают. Мэйнстрим - не синоним платформы. Обратите внимание - в основном, к Linux Foundation присоединяются хардверные вендоры, которым нужны дармовые драйверы для обеспечения продаж их железа. Драйверы - они, знаете ли, платформу не определяют. А какая разница, купят железку окошечники или красноглазые пингвинятники? Раз вас так много. Деньги - они не пахнут.

источник