LINUX.ORG.RU
ФорумTalks

Почему серверное и десктопное ПО до сих пор повсеместно не использует XML-конфиги (или удаленное хранилище конфигов)? Где M2M API?

 , , , ,


0

2

P.S. Для тех, кто не осилит: суть треда в проблемах использования ПО автогенерации конфигов и оркестрирования в современном мире.

Воу-воу, полегче, ЛОР!

Посмотрел я на AIX, продукты Red Hat, яву, на кеды, на systemd, продукты Mozilla и у меня случился Батрудинов (я бы даже сказал хороший французский багет)! Точнее багет случился, когда я начал писать рецепты для ПО в puppet.

Почему всё ПО не использует нормальные, документированные и понятные конфиги, как у этого ПО? Почему не использовать внешнее (удаленное) хранилище конфигов или XML-конфиги?

Тот же firefox имеет хранилище конфигурационных опций с описанием (по которым, кстати, ещё и онлайн-справка расширенная доступна).
AIX вообще использует кошерное внешнее хранилище (увы, не для всего) конфигов. И умеет к нему удобный псевдогуй, и консольный доступ.
Systemd позволяет удобно описать юниты самой разной направленности. И работать всё это будет гарантированно и стабильно. Не то что скрипты инициализации, которые вообще не понятно, отработают или нет.
Почти все серверные продукты RedHat управляются через XML-конфиги и БД.
Большинство ПО под яву юзает читабельные XML-конфиги с комментами.

А что мы видим обычно?
Apache2: конфиги вообще не документированы, код имеет очень хитрую обработку конфигов (в которых одно и то же можно сделать десятью методами). Даже обработка случая, когда запрашивается несуществующий (дефолтный) домен, может быть задана минимум 3-мя способами (причём ни один из них не является явным).
Nginx: уже лучше, что всё-равно кофиги не очень: их уже можно нормально генерировать, но вот считать их и распарсить уже не выйдет.
Asterisk: это ПО просто эталонный пример недокументрованных забагованных функций, странного поведения, взаимозаменяющих и устаревших опций, непонятных дефолтных настроек. После перехода на FreeSwitch с XML-конфигами и JS-скриптами я перестал просыпаться ночью в холодном поту и дозваниваться на IVR.
БД (любые почти: mysql, postgresql, postgresql XL, firebird). Такое ощущение, что конфиги проектировались для БД на 10 запросов в секунду, которая работает максимум с тремя клиентами, но никак не для кластеров. Кластерные конфигурации вообще очень странные: многое нельзя сделать на лету, настройки хранятся как в конфигах (INI-подобных), так и в системных таблицах. Это очень неудобно, особенно в облачном случае, когда БД надо масштабировать на лету, либо обеспечивать HA.
У postgresql настройка вообще совсем не простая: из-за отсутсвтвия движка интеллектуального вакууминга (как у оракла) его надо настраивать вручную под каждую конфигурацию, причём очень хорошо понимать особенности текущий конфигурации. Также постгрес имеет исторически большой набор ПО, которое расширяет возможности БД, работая, как глобальные встроенные функции и триггеры. Они как хотят, так и хранят свои настройки.
DE. Ну тут всё просто: твоё приложение - твои правила! Конфигами рулить очень сложно.
Оборудование. IPMI нормально работает только через питоновые либы, которые определяют конкретный сервер и конкретную реализацию IPMI. Логи тоже не стандартизированы. Из настройки в автоматическом режиме доступен только порядок загрузки. Для всего остального надо заходить руками в EFI/BIOS. Часто даже утилит для бекапа и развёртки на другие сервера этих конфигов биоса нет.


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

На тему людей, которые хотят человекочитаемые конфиги, а не нормальный интерфейс machine2machine, у меня родилась зарисовка:
http://www.youtube.com/watch?v=f6dGb2I8iB0
Почему, мистер Андерсон? Почему? Во имя чего? Что Вы делаете? Зачем, зачем пишете велосипеды? Зачем продолжаете костылить? Нужели Вы верите в какой-нибудь KISS, или Вам просто страшно слиться? Так в чём же приемущества plain-конфигов, может откроете? Это свобода? Минималистичность? Может быть чистота, или Вы боретесь за читабельность? Иллюзия, мистер Андерсон, причуды кодинга. Хрупкие логические теории слабого программиста, который отчаянно пытается оправдать существование устаревших форматов, безсхемных и бессмысленных. Но они, мистер Андерсон, как и языки с прямым доступом к памяти, столь же искусственны. Только человек может придумать скучное и безжизненное понятие «читабельность». Вам пора это увидеть, мистер Андерсон, увидеть и понять: Вы не можете победить XML, продолжать борьбу с энтерпрайзом бессмысленно. Почему, почему, мистер Андерсон, почему Вы упорствуете?

Перемещено leave из general

☆☆☆

Последнее исправление: ktulhu666 (всего исправлений: 5)
Ответ на: комментарий от ktulhu666

Сразу бы XML юзали.
пусть сразу юзают XML.

:%s/XML/TOML/g

Лол. Да там такие исходники, что сам автор хрен разберется. Часто даже без комментов.

Увы, всем по**й.

XML-редакторы, постоение визуального дерева узлов, блобы и валидация
Вы, что, в nano XML правите? Вы в своём уме?

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

ни блобок, ни экранирования, ни валидации.

  • блобок — зачем это в конфиге?
  • экранирование — есть. Только не в " ущербном виде.
  • валидации — видимо валидация не нужна никому )
I60R ★★
()
Ответ на: комментарий от leave

Скажи, а ты видел хоть раз конфиг вебсферы?

Да, просто офигенный вариант. Но без XML-редактора его не прочесть. Кстати, какого хрена у меня два по -2, да ещё с комментарием «нецензурные выражения»? Это же анон писал, а не я. Требую вернуть шквор, а то его и так мало осталось.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от aplay

По моим прикидкам, максимум пару недель осталось товарищу.

leave ★★★★★
()
Ответ на: комментарий от leave

Скажи, а ты видел хоть раз конфиг вебсферы?

EXL >Мне ничего не пришло. Я даже удивился, когда обнаружил себя в этом списке.
Каст был подчищен или как? Мне от спамеров всё спокойно приходило, когда был мегакаст. Или сейчас новый алгоритм?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от sergej

xml - это язык машин для машин

который требует либо написание сложного парсера, либо тянуть чужого огромного монстра для этих же целей. Проще по KISS бинарный формат, JSON, да даже ini.

peregrine ★★★★★
()
Ответ на: комментарий от ktulhu666

По 7.1 у тебя одно удаление, и это самое 7.1 не просто так в правилах есть.

Теперь по вебсфере. Вот стоит она у меня на аиксе через два промежуточных сервера от меня. Как редактировать конфиг?

И ещё усложним задачу: пусть это будет websphere portal, со своим ещё одним конфигом и половиной настроек в базе.

Даю подсказку: единственное разумное решение в данном случае - использование родной автоматизации через jython или напрямую через jmx api (если вдруг стало очень скучно). Какой отсюда следует вывод? Правильно, конфиг может быть хоть плоским, хоть бинарным, хоть каким - все равно уровень сложности продукта не позволяет в оркестрации использовать шаблонизацию файлов конфигурации.

leave ★★★★★
()
Ответ на: комментарий от ktulhu666

Ни малейшего понятия. «Подчистить» каст возможности нет.

leave ★★★★★
()
Ответ на: комментарий от leave

Как редактировать конфиг?

Через kate + освой уже ssh/sshfs на AIX. Не будь лохом, не юзай их убогий терминал. Если же мы говорим про самопальную оркестрацию, то puppet может дёргать любые скрипты, в чём проблема то?

не позволяет в оркестрации использовать шаблонизацию файлов конфигурации.

Видимо, ты до сих пор не понял, что оркестрация можешь работать через бинарный API (привет, MS и VMWare). Автогенерация XML-конфигов - это просто один из вариантов оркестрации. Я требую нормальный и документированный M2M-интерфейс (желательно с библиотеками, чтобы свои костыли не писать), а не конкретно XML.

Правильно, конфиг может быть хоть плоским, хоть бинарным, хоть каким

Только было бы офигенно иметь возможность его прочитать и понять. В этом XML с XML-редактором - единственный вариант.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от I60R

Правильно, конфиг может быть хоть плоским, хоть бинарным, хоть каким

Освой уже kate, а лучше jedit или jaxe.

ktulhu666 ☆☆☆
() автор топика

XML совершенно не человеко-писабельный. Насчёт читабельности можно порассуждать, но неписабельный точно. Позтому вполне естественно желание придумать формат, который легче писать. Например, формат, идеально (по мнению автора, а он может быть и прав) отражающий функционал программы, структуру её поведения. Сам так делал, переизобретя для одной мелкой своей утилиты формат а-ля INI (обычного INI было недостаточно, а XML был бы длинным и неписабельным).

Вот если ты приведёшь примеры не Apache и Nginx, а такие программы, у которых есть собственный гуй, то таки да, их разработчики придурки, так как могли бы свои же внутренности хранить в XML/JSON/чём-то ещё стандартном.

greatperson
()
Ответ на: комментарий от ktulhu666

Правильно, конфиг может быть хоть плоским, хоть бинарным, хоть каким

Я такого не говорил!

Освой уже kate, а лучше jedit или jaxe.

Нет, спасибо

I60R ★★
()
Ответ на: комментарий от greatperson

Сам так делал, переизобретя для одной мелкой своей утилиты формат а-ля INI

Почему TOML не использовал?

I60R ★★
()
Ответ на: комментарий от ktulhu666

И что, много ты там его понял? )

Остальное комментировать не буду, поскольку ты только себя слышишь. Попробуй все же перечитать, что я писал выше.

leave ★★★★★
()
Ответ на: комментарий от I60R

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

leave ★★★★★
()

Трижды звездун оргазмирует от хымыэля, жаждет их читать и править в ворде под вайном:)

Napilnik ★★★★★
()
Ответ на: комментарий от I60R

В моём конкретном случае было очень удобно придумать две разновидности присвоения значения. Условно говоря, два вид знака «равно». Плюс ещё пара мелочей. Сомневаюсь, что TOML такое умеет, потому что это нафиг кому-то в массовом порядке нужно.

greatperson
()
Ответ на: комментарий от leave

И что, много ты там его понял? )

Я уже 100 раз писал, что нужно использовать XML-редактор, который делает нормальное форматирование и узлы отображает в правой панели. Есть ещё проприетарные редакторы, там вообще есть поддержка подгрузки схем и созданием элементов дерева в соответствии с ними. Ну и удобное отображение значений прямо в дереве.
То, что Вы пытаетесь использовать обычный текстовый редактор для редактирования языка, предназначенного для машин и сверхсложных документов, это лично ВАШИ проблемы. Может, Вы и elinks используете как дефолтный браузер?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от leave

поскольку ты только себя слышишь

Просто я не увидел ещё ни одного сильного аргумента. Пока я вижу только «кококо, суперрасширяемый машинный формат сложно редактировать консольным редактором. кококо, надо, чтобы всё можно было настраивать средствами 40-летней давности, и вручную! кококо, sshfs на AIX - это очень сложно.». Нормальное ПО должно поставляться с библиотекой для его настройки оркестратором, тащемта. XML - это просто способ общения с приложением, когда разработчик не предусмотрел очевидных m2m возможностей.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Я тебе про Фому, а ты мне про редакторы.

leave ★★★★★
()
Ответ на: комментарий от ktulhu666

Давай, вперёд, сделай мне sshfs через два jump-сервера с AllowTcpForwarding No. Жду.

Умные все, аж тошно. Следующий тред будет про SOAP?

leave ★★★★★
()
Ответ на: комментарий от leave

А чо, «Ъ-ынтерпрайзно, надежно, масштабно» (ТМ) Рекламировалось как убийцо CORBA :) Породило сериаловсрачей и батхерта. Рекламировалось как... человеко-дружелюбная замена бинарным RPC... Содержит «человеко-дружелюбный» XML: берешь такой с VIMа открываешь простынку сериализованных объектов со связями, хедерами и «энвелопами»... о_О... закрываешь простынку - а там уже и кулстори про REST на подходе, как более лучше дружелюбная замена SOAP...

slackwarrior ★★★★★
()
Ответ на: комментарий от leave

Давай, вперёд, сделай мне sshfs через два jump-сервера с AllowTcpForwarding No. Жду.

Либо нормально настройте маршрутизацию, либо разрешите форвардинг. Либо в LPAR запустите программный маршрутизатор и узбагойтесь уже. И да: а сейчас как подключаетесь то? Через проприетарный терминал на LPAR-гипервизоре?
Кстати, добавляйтесь ко мне в джаббер.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от slackwarrior

REST

А чем REST то не торт?! По нему и XML, и JSON, и HTML можно гнать. Вы ещё микросервисы и яву поносить начните.

ktulhu666 ☆☆☆
() автор топика

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

В предложенном ТС случае, в случае краха/взлома/компрометации M2M-сервера получится нифига ненадежная система. Особенно это касается конфигураций «на лету». На лету уменьшил shared-пул в продакш базе, в итоге все запросы идут через диск с дичайшими тормозами. На лету подключил кривой модуль для apache, в результате чего все процессы начали жрать гигабайты оперативки. На лету перебросил транк с мегафона на билайн в asterisk, но почему-то через 2 минуты прибежал ком.дир и сказал что сделка на 5 мио оборвалась и нас послали на три буквы, ибо раз не умеем в телефонию, то не умеем ничего.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Ты видать не в курсах оголтелого маркетинга XML именно как «человеко-дружелюбного» формата :)

Ну это намного лучше, чем конфиги апача или бинарные форматы и протоколы. И отладку легче проводить. Или Вы не согласны?

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от gh0stwizard

ТС тут в их число не входит, ибо он решает свою попоболь

В смысле «свою»? Другие люди хотят в оркестрацию?

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

Например, железа или сервера аутентификации? Или сети? Оно должно исполняться в виртуальной машине в вакууме.
Можно использовать криптографию, тестирование перед применением изменений и федеративные резервные readonly сервера конфигураций, а также избыточного (резервного) мастера. В чём проблема то?
Или Вы хотите сказать, что для конфигураций с сотнями тысяч виртуальных машин это не важно?!

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

В смысле «свою»? Другие люди хотят в оркестрацию?

Твоя задача это написать 100500 конфигов. Задача разработчика написать программу с минимум зависимостей. Чем больше звеньев, тем больше шанс, что какое-то звено сломается и вся система накроется.

В чём проблема то?

Неломаемых систем нет (по этому пункту даже не стану спорить). Изоляция это пункт в гарантии, которую дает разработчик. В случае с M2M, разработчик (это может быть лицо, компания, группа компаний и т.п.) должен еще дать гарантию на систему M2M. Вот AIX взял и сделал это. Red Hat взял и запилил RHN (Red Hat Network). В случае опенсорса, такие решения оверхед. Даже если вокруг будут говорить, что система Х надежна, работает на 200%, пока разраб не поверит в ее чудесные свойства сам лично и не станет ее евангелистом, этой поддержки в здравом уме не будет запилено никогда.

Или Вы хотите сказать, что для конфигураций с сотнями тысяч виртуальных машин это не важно?!

Дело не в важности. А в том, что решает разработчик и какие гарантии (даже для себя) он выдвигает. Еще раз скажу, что разработчиком может выступать компания, группа людей, индивид и т.п.

--

Что с этим можно сделать?

Можно перечислить на счет, скажем PostgreSQL, несколько миллионов долларов с пояснительным письмом, что вы хотите получить такой-то функционал и чтобы он был open source.

Можно написать патчи и отослать разработчикам.

Можно открыть свой репозиторий и тихо молча пилить его под свои нужды.

Можно открыть свою компанию по предоставлению данных решений другим заинтересованным в этом лицам.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

Можно открыть свою компанию по предоставлению данных решений другим заинтересованным в этом лицам.

Хм... а потом продать её гуглу, путь небольшую страну, а сдачу ЛОР... хм...

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Odd wheel reinvention и NIH всю дорогу (а еще эти все приблуды через некоторое время начинают использоваться несовсем для того, для чего задумывались :) «Еще один RPC» (С) Еще гуглобуфера никто ИТТ не вспоминал (они апофеоз - с обратномаркетингом почему бинари лудшы тексто-простыней :))?

slackwarrior ★★★★★
()
Ответ на: комментарий от ktulhu666

лучше

«Ту хум хау» (c) Кому-то и ломать глаза кашей из тегов «лучше». У них это пройдет :)

slackwarrior ★★★★★
()
Ответ на: комментарий от ktulhu666

что нужно использовать XML-редактор

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

suuaq
()
Ответ на: комментарий от suuaq

Ок, приведите стандарт такого формата. Поддержкой во всех существующих языках программирования.

ktulhu666 ☆☆☆
() автор топика
Ответ на: комментарий от ktulhu666

Поддержкой во всех существующих языках программирования.

Хорошо подумал? Зачем тебе столько языков?

Кстати, парсер xml на malbolge уже написали?

Ок, приведите стандарт такого формата.

protobufs, der, cbor, выбери что нибудь сам, а?

suuaq
()
Ответ на: комментарий от ktulhu666

Пример, плиз.

И бабла мне занеси за культпросвет «история middleware» :)

slackwarrior ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.