|
|
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominКонфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. Кто такой онбордер? Сначала вроде слово понятное, но дальше по Вашему описанию, все совсем загадочно А бы разделил так: 1. Администраторы (системные администраторы) на стороне заказчика - оптимально текстовые конфиги, т.к. они не только ЯП, обычно ничего о системе знать не желают. В крайнем случае, представляют из себя био-робота нажимающим кнопочки на клавиатуре по указаниям по телефону. Был один такой случай, когда администратор не мог справиться с установкой системы. Кончилось тем, что его привели в кабинет директора, директор позвонил в фирму-производителя-саппорт системы, администратор в кабинете директора по указанию по телефону нажимал кнопки ))). Это был провинциальный музей (пусть будет в Уральской глуши), т.ч. администратору-студенту с зарплатой научного сотрудника провинциального музея, это простительно ))) Т.е. настройки системного уровня. Желательно, что бы их делал инсталятор, но понятно, что идеал не достижим. Иногда нужно вмешательство человека. Здесь даже yaml приближается к границе добра и зла, т.к. объяснить какой должен быть отступ по телефону - задача не из простых. IMHO 2) Метаописания бизнес логики Оптимально, что бы ядро кодировали программисты, а бизнес логику поддерживали специально обученные девочки или (для специалистов высокого уровня) женщины разбирающиеся в предметной области. Разбираться они должны в ПРЕДМЕТНОЙ ОБЛАСТИ, самые крупные специалисты - IMHO & AFAIK это люди проработавшие на соответствующих должностях у заказчика и потом перешедшие в IT. Т.е. для музеев - бывшие музейные сотрудники (в том числе, культурологическое образование), для бухгалтерии - люди с соответствующим экономическим образованием, для логистики - люди проработавшие в предприятиях далеких от IT (склады, распределительные центы и т.д.). И так далее. Они не то, что ЯП, они вообще слова программирование, конфиги, объекты и прочее слышать должны только в курилки, кухне или других местах общего пользования от своих коллег-программистов. Слышать, но не факт, что понимать их смысл ))) 3) Экранные формы На современном фраймворке для этого требуется квалификация Java-программиста? Бл....дь. Дожили. Позиция на работе предполагает рисовать экранные формы, а ищут программиста знающего, что такое Thread, synchronized и прочее. Нафига? В 90-х, в компании из около 50 человека прикладных программистов, слово Thread знал я один. Плюс начальство, которое в 70-начало 80 работало программистами на ЕС / СМ'ках. 4) Отчеты Для этого нужны программисты? Побойтесь бога. На реальном проекте обучал студентов рисовать отчеты для OeBS на XML Publisher'е. Через пару месяцев, от заказчика был резонный вопрос "почему высококвалифицированные специалисты консалтера (со ставкой 500$ в день), отчеты делают значительно (в 2-а раза) медленнее, чем вчерашние студенты за совершенно другую зарплату" Тот случай, когда термин овер квалифаев замечательно характеризует работу В принципе, требуется тот же био-робот, взял ТЗ, скопи-пастил в комментарии во view, для каждого поля в отчете, через интерфейс OeBS посмотрел источник данных (запрос), скопипастил, написал LEFT OUTER JOIN между табличками. Код SQL конечно студенты порождали специфический.... Но кого это волнует при SMP-сервере от IBM за полляма долларов? Разумеется когда в запросе оказывалось что табличка раз десять сама с собой соединяется LEFT OUTER JOIN - оно переставало работать. Тогда обращались с вопросом, где ошибка и как исправить ))) Но при всем при этом, я 100% уверен, что данные студенты ни одного отчета, способного "повесить сервер" не написали. А даже думаю, что отчетов работающих больше пары секунд у них так же не было. Наблюдал картину на другом проекте, когда мега аналитики, создавали мега-ТЗ, который воплощали достаточно квалифицированные программисты и мега админы бегали вокруг продакшен сервера (наверное даже еще более дорогого) и пытались быстро эти отчеты килят, что бы сервер не лег. А что еще может получится, если одного взгляда на ТЗ достаточно, что бы посочувствовать программисту, который будет пытаться это воплотить на PL/SQL ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:44 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev1. Системная информация которая нужна для запуска и минимальной работы приложения - обычно настраивается инсталятором (если есть) или простейшими текстовыми конфигами/параметрами окружениями/параметрами JVM У нас SaaS, инсталятора как такового нет- просто в UI "развернуть с таким-то конфигом новый инстанс". В файлах что-то менять плохо, т.к. конфликтует с масштабируемостью приложения. Сейчас мы можем запустить с одним и тем же конфигом хоть 100 экземпляров приложения- они просто будут брать задачи из пула и делать. Править конфиг в 100 местах? Ну их нафиг. Просто указывается при старте один параметр, по которому уже в consul находится всё, что надо. Leonid Kudryavtsev2. Базовая бизнес информация уровня название заказчика, какие нибудь другие базовые характеристики - вполне может настраиваться или через инсталятор или через GUI системы Вот как раз тут надо делать много чего, 99% делает разработчик, но иногда надо быстро что-то поправить онбордеру. Leonid Kudryavtsev3. Метаописание системы под конкретного заказчика - знаю системы KAMIS, Oracle Utilities Customer Care & Billing где метоописаниями задаются экранные формы, порядок прохождения документов и так далее. Т.е. система это скорее FrameWork для рисования GUI + заточенность под конректный класс учетных задач. Аналогично п.2, т.к. у нас меньше вариативности. Leonid Kudryavtsev4. Если нужно кодировать логику (например правила валидации полей, какие-то простейшие IF...THEN...ELSE), то добавляют какой-то язык. В KAMIS'е в ряде мест настройки используются свой простейшими формулами (больше заточен под бизнес), CC&B использовать Java, OeBS PL/SQL, Java. Ну вот тут kts имеет свои плюсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:54 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevКто такой онбордер? Сначала вроде слово понятное, но дальше по Вашему описанию, все совсем загадочно У нас SaaS. На стороне заказчика- только бизнес-пользователи в браузере тыкают формочки. Онбордер же работает у нас, мониторит сервер, быстро решает простые проблемы, консультируется с разработчиком и описывает проблемы для исправления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:57 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominВ файлах что-то менять плохо, т.к. конфликтует с масштабируемостью приложения. да какая разница формат этого конфига. Что файл, что сервис, что БД. Вопрос только в валидации этого конфига и его версионности. Можно и всю программу в конфиг перенести. Если вы болеете за валидный конфиг, то делайте веб-сервис по его правке. Тут советовали. Умный ваш "конфигураст"- пусть правит без ошибок. Глупый - ИС по конфигам ему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:43 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Много букв. Мне скучно, хочется пообщаться. Petro123Я подозреваю откуда топик вырос). Из микросервисов. А теперь не знают как связать эти микросервисы. Модели то нету. BIPL (вроде так пишется), BPM ? В целом в продуктах смысл есть, но как их применять в мирной жизни, не очень понятно. === Недолго работал в фирме разрабатывающую софт для трейдеров на микросервисах. Там был репозиторий конфигов не меньший, чем програмного кода (на отдельном проекте). Но это и понятно. 3 серверные по всему миру, сотни серверов, устройств и так далее. Отдел администраторов и дев-опсов (занимающихся системой репозиториев, деплоя и так далее). Дев-опсы периодически код писали и он периодически на продакшене глючил ))) например где-то в конфигах в результате оказывалась не закрытая кавычка и важный сервис не запускался ))) Но дев-опсы писали код! И были достаточно квалифицированными. Что в результате использовать для конфигов на сервере, в общем глубоко пофиг. Для запуска серверов и настройки ОС, VM - системные текстовые файлы, директорий /etc, переменные окружения Для системного софта (PostgreSQL и так далее) - текстовые файлы Для прикладных микросервисов - yaml Но цепочка конфигурирования стандартая: 1. программисты в процессе разработки-тестирования настраивают свою систему сами 2. документируют, передают в отдел администраторов - дев-опсов 3. систему поддерживают админы на основание документации (минимальной) Требования к админу - везде одни и те же, прочитать администратион гайд и вбить в конфиг те символы, которые там указаны. В свое время для КАМИС 2000 делал FAQ по обнаружению ошибок: если система не запускается - смотри сюда, код ошибки такой-то - запусти эту программу, код ошибки такой-то - измени в конфиге эту циферку на другую. Аналогично инструкции для стиральной машине. Системному администратору нафиг не нужно понимать, что какие циферки значат и почему в системе именно так. Он должен действовать по инструкции. Если этого в инструкции нет - обратись в саппорт или вызови ночью на работу программиста ответственного за этот модуль. Я бы даже сказал, первое требование к системному администратору - ничего НЕ делать. IMHO & AFAIK Поведение администратора "от бога": звонок в саппорт со словами, "у нас Windows полетел, можно ли восстановить БД". После первых слов покрылся потом ))) Но на следующий вопрос, есть ли у bасkup'ы по инструкции, выяснилось, что у человека 5 (ПЯТЬ) разных backup'ов. Начиная от образа диска Acronis'ом и кончая дампом сделанному по инструкции прикладной системы + копия диска уже после сбоя Первые его действия при сбое - позвонить в саппорт, проинформировать, что система упала и спросить разрешение восстановить системный раздел из Acronis'а. Следующий звонок был через 15 мин, "спасибо, все заработало". Был контр-пример: Когда относительно КВАЛИФИЦИРОВАННЫЕ люди, умудрились сломать сервер при ПЛАНОВОМ выключение питания (даже разработчик софта был об этом проинформировать за 2-е недели до выключения) Когда диски полетели, выяснилось, что одного из backup'ов у них нет, т.к. софт ЯКОБЫ "не работал и выдавал ошибку Нет места на диске, а на диске было еще 2 Gb". Хотя вторая строчка в инструкции (первая - заголовок) была примерно следующая "в связи с особенностью Windows, требуется свободное место для временных файлов в 3-4 раза большее, чем размер записываемого носителя (12 Gb для DVD). В случае если место не достаточно, для предотвращения сбоев система не запускается и выдает ошибку....". Б....дь. Софт не работает! И это были КВАЛИФИЦИРОВАННЫЕ люди. По технической знаниям, на 2-3 месте в их городе. Директору заказчика, кроме мата в адрес его сотрудников, пришлось заключать дополнительный договор на работы по сборке БД из отдельных уцелевших архивов. Разработчику пара недель дебильной и мало интересной работы. Была практически анекдотическая ситуация, когда Oracle упал. Относительно технически грамотные люди, решили залезть в компьютер выполняющий роль сервера, жесткий диск у них не вынимался и они помогли ему зубилом (!). Oracle этого не перенес и упал. Бекапов у них не было (или были на том же диске). Около полгода работы коллектива в 5-10 человек были утеряны полностью. НО ЭТО СИСТЕМНОЕ АДМИНИСТРИРОВАНИЕ Администрирование прикладной системы - фактически аналогично. Прочти документацию, выполни все по документации, свяжись с саппортом. В том же самом КАМИС 2000, функции администратора прикладной системы, выполняли вообще девочки-музейные сотрудницы. С уровнем технических знаний: умение пользоваться электронной почтой, разархивировать файлы из zip'а, запустить на Windows командную строчку и запустить там команды и скопипастить ответ в письмо. Отсутствие технических знаний, как-то не мешало им даже ставить и настраивать Oracle ))), диагностировать ошибки сети и так далее. Конечно инструкции со скриншотами и указанием, какие галочки нужно нажать. Про базовые задачи администрирования системы - добавить пользователей, сбросить пароль в общем и говорить не приходится. Зайди в соответствующий пункт меню администратора и выполни операцию. Вроде, даже, иногда они и шаблоны отчетов правили. На уровне изменить шрифт, изменить фразу и так далее. Вот у них проблем, что бы сервер полетел в результате использования зубила или место на диске кончилось - как-то не было от слова СОВСЕМ. В общем, цитируя Эвклизиаста "от многих знаний, много печали". Petro123А теперь не знают как связать эти микросервисы. Модели то нету. Проблем не было. Был архитектор (или возможно несколько), которые знали, что они хотят и что должно быть в результате. Была картинка (маркерами) на доске. Была пара картинок в wiki. В общем, никаких проблем от микросервисов. Хоть их было ну очень много. На мой взгляд, даже чересчур. Народ использовал дофига языков: ErLang, Java, Go, Рубби ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 16:53 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВ общем, никаких проблем от микросервисов. приведу пример. Когда у тебя без микросервисов, то мы делаем жёстко FK между таблой справочник городов и адресом контрагента. Когда микросервисы, то выносим это в конфиги т.к. сервис Справочник может быть по другому адресу или с другим ключиком для связи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 17:09 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominУ нас SaaS, инсталятора как такового нет- просто в UI "развернуть с таким-то конфигом новый инстанс". В файлах что-то менять плохо, т.к. конфликтует с масштабируемостью приложения. Сейчас мы можем запустить с одним и тем же конфигом хоть 100 экземпляров приложения- они просто будут брать задачи из пула и делать. Править конфиг в 100 местах? Ну их нафиг. Просто указывается при старте один параметр, по которому уже в consul находится всё, что надо. Разница между SaaS или клиент-сервер как ни парадоксально не такая уж и большая. В той же системе КАМИС 2000, запуск происходил так: 1. Запустилась система. Все параметры в иконке: путь к Forms Runtime, строка соединения с БД и схема в БД конкретного заказчика 2. Система сравнила файлы на диске клиента с табличкой S_FILES. Если отличается - обновилась. Система перезапустилась с корректной версией файлов 3. Работаем Единственное что отличало заказчиков с точки зрения софта (в офисе) - просто их код - имя схемы в БД. В общем-то, так же ))). Ну и с учетом, что у большинства заказчика не было никаких админов ))), даже сложность/стоимость администрирования и сопровождения сопоставима. Я так понимаю, consul это просто БД. Полностью соглашусь с Petro123. Добавив еще слово и его деплой. В принципе, сделать нормальный / удобный и эффективный деплой и на текстовых файлах - проблемы не составляет Но здесь соответственно плюсы проистекают из минусов. Тяжелее деплоить - нет одной точки отказа. Централизованное хранение - легко деплоить, но появляется точка отказа. При этом, под отказом я понимаю не только физические ошибки (железо) но и логические (человека). Разумеется, могут быть какие-то промежуточные решения. Alexey TominLeonid Kudryavtsev2. Базовая бизнес информация уровня название заказчика, какие нибудь другие базовые характеристики - вполне может настраиваться или через инсталятор или через GUI системы Вот как раз тут надо делать много чего, 99% делает разработчик, но иногда надо быстро что-то поправить онбордеру. Не очень понятно, почему эту информацию не свести в одну/несколько табличек (СУБД). Не зафиксировать типы, не сделать простейший интерфейс для онбоардера. И, блин, кто такой онбоардер ???? Я сначала подумал, что это типа админа на стороне заказчика, человека отвечающего за саппорт. Но следующие Ваши слова: "...Когда изменения доходят до продакшна ( 1-3 недели )..." вызывают тогда полное недоумения. Alexey TominLeonid Kudryavtsev4. Если нужно кодировать логику (например правила валидации полей, какие-то простейшие IF...THEN...ELSE), то добавляют какой-то язык. В KAMIS'е в ряде мест настройки используются свой простейшими формулами (больше заточен под бизнес), CC&B использовать Java, OeBS PL/SQL, Java. Ну вот тут kts имеет свои плюсы. Тут есть полное не понимание с моей стороны: 1. Есть kts настолько удобен для кодирования - нафига нужна Java? 2. Если в компании знают Java - нафига кого-то заставлять изучать kts. Чем больше "ядро" хорошо разработано и покрывает потребности бизнеса - тем меньше нужна "настройка" на языке программирования. Смысл в скриптовых языках, непосредственно встраиваемые в прикладную систему и их кастомизация в некий предметный язык, описывающий конкретную бизнес-область - мне понятен. Банальное не желание изобретать велосипед ))). Но здесь IMHO & AFAIK первичное требование к языку - удобность интеграции в систему, максимальная похожесть на основной язык, удобство доступа (маппинг) к объектам ядра. Удобство описание бизнес логики. Желательно, что бы при каком-то супер привилегированном уровне доступа, можно было напрямую подменять компоненты ядра. Ну и совсем оптимально, когда языки совпадают. Как пример реальной потребности. Один из заказчиков обнаружил ошибку в ядре системы. Для него это критично. Вносить изменения в ядро - долго (внесли изменение, оттестировать, смержить в release). Нам требуется придумать для заказчика work around Было бы замечательно, если бы язык конфигурирования, позволял бы нам для конкретного заказчика подменить класс (модуль) с ошибкой и внести в него мелкое исправление для обхода проблемы. Тогда workaround/заплатку можно выпустить на уровне конфигурации для конкретного заказчика, а bug fix / path для остальных через некоторое время, в очередном релизе. Опять таки, желательно, что бы прикладной язык и язык ядра были максимально одинаковые. Но смысл в продвинутом языке для описания конфигов при этом отличающийся от языка на котором написано "ядро". Как-то сомнительно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 18:33 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Petro123Leonid KudryavtsevВ общем, никаких проблем от микросервисов. приведу пример. Когда у тебя без микросервисов, то мы делаем жёстко FK между таблой справочник городов и адресом контрагента. Когда микросервисы, то выносим это в конфиги т.к. сервис Справочник может быть по другому адресу или с другим ключиком для связи. Вот вообще полностью не врубился. СУБД или есть или ее нет. При чем тут микросервисы вообще не понятно. 1) Первый сценарий Пусть есть СУБД Oracle Personal Edition работающая на домашнем компе. Есть две таблицы и FK между ними. Все понятно Пусть есть СУБД Oracle EE в RAC конфигурации где ноды расположены на разных континентах. Все то же самое. Есть таблица и есть FK. На каком континенте расположен конкретный блок данных СУБД - задача СУБД, кластерной файловой системы и так далее. Если у нас экзадата, то select может выполняться вообще чуть ли не на уровне винчестера. Но нам пофиг! Т.к. это задача СУБД. Для пользователя, прикладного программиста, программиста PL/SQL и так далее - ничего не меняется. 2) Второй сценарий Есть приложение созданное на Oracle с двумя табличками и FK между ними Пытаемся переписать ее на ассемблер, да еще при отсутствие файловой системы. В конфиги выносим связь между секторами на жестком диске.... Что в целом логично, жесткие диски бывают разные, кол-во головок отличается и так далее, т.ч. желательно это как нибудь настраивать и вынести в конфиги. Вот у меня ровно такая аналогия рождается. Только с микросервисами это никак не связано. Ничем не отличается. Тот самый FK в СУБД это и есть твой конфиг. Задает ключики для связи (поля) и адрес (таблица на которую ссылаемся). Все ровно так же. Есть две бизнес-сущности (таблица, сервис) и связь между ними (FK, конфиг). В ERP часто FK вообще не используют. Дабы бизнес правила для связи бизнес-объектов задаются в самой системе. Дублировать эти проверки на уровне РСУБД считается лишним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 18:53 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevВот вообще полностью не врубился Если справочник в ядре (системный), то он всегда есть. Если он по SAAS \BPM или оркестровкой веб-сервисов, то это первая причина конфигураторов, конфигов и этого сабжа. Программист прикладник просто пишет разный код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 19:29 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Все слова понятны, даже сталкивался на практике. Но в смысл полностью не врубаюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 23:31 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, значит тема себя исчерпала). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 09:26 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Petro123Leonid KudryavtsevВ общем, никаких проблем от микросервисов. приведу пример. Когда у тебя без микросервисов, то мы делаем жёстко FK между таблой справочник городов и адресом контрагента. Когда микросервисы, то выносим это в конфиги т.к. сервис Справочник может быть по другому адресу или с другим ключиком для связи. Бред. Совершено никакой связи. Точнее- демонстрация полного непонимания сути. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 09:50 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, ну дак вы второй тут за 3 года пытаетесь внедрить микросервисы. Разве по топику не видно что вы их внедряете не понимая сути. Почитайте гугл. Там они уже антипаттерн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 10:12 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Petro123ну дак вы второй тут за 3 года пытаетесь внедрить микросервисы. Э... да? Petro123Разве по топику не видно что вы их внедряете не понимая сути. Почитайте гугл. Там они уже антипаттерн. При чём здесь микросервисы? И почему в гугле антипатерны? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 10:37 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominПри чём здесь микросервисы? может и оффтоп). Я выше сделал затравочку о том что причина топика микросервисы. Вы промолчали. А молчание знак согласия. В общем, тут профи очень много хороших вариантов много накидали (альтернатив). Топик очень полезный. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 10:41 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominПри чём здесь микросервисы? может и оффтоп). Я выше сделал затравочку о том что причина топика микросервисы. Вы промолчали. А молчание знак согласия. от Вас только флейм, по сути ноль. Когда был разговор по делу- просто игнорировал. Теперь- подбираю остатки. Petro123В общем, тут профи очень много хороших вариантов много накидали (альтернатив). Топик очень полезный. Удачи! Ага. поговорили с пользой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.03.2017, 19:09 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39427843&tid=2123029]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
73ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 225ms |
| total: | 411ms |

| 0 / 0 |
