|
|
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Добрый день! Всё что ниже- это расуждения, никак не руководство "бежать и делать". Хотя бы потому, что не исправлена критичная бага для выполнения этого. Возникла такая мысль- все эти properties (даже если они yaml) - это костыль. Почему? Потому что теряется вся прелесть статически типизированного языка. Я могу ошибиться в имени и не заметить этого- IDEA часто не видит использования проперти, если она в другом модули, поэтому она не помошник, а eclipse/netbeans вроде этого вообще не умеют. Могу ошибиться в типе (да хоть ввести 1.3е10 с русской "е"). А что вместо? А например kotlin-script. В коде описываем классы с параметрами (каждый модуль- свои), потом приложение описывает мега-класс со ссылками на все возможные параметры, пишем неболшую обёртку и далее в .kts-файле пишем примерно так Код: sql 1. 2. 3. 4. 5. 6. 7. В т.ч. можно и лямбды писать (чего в конфигах нет вообще). Далее выполняется конфиг и на выходе получаем готовый объект с параметрами, которые можно передавать тому же guice/springio Интересно послушать умные мысли, как за, так и против. --<br /> Алексей.<br /> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2017, 10:11 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Почему не груви? В целом же - полностью поддерживаю инициативу. Сам в поисках подобного решения. Основная проблема в использовании языка это относительно строгий синтаксис, который легко могут нарушить не достаточно технически подкованные пользователи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2017, 16:13 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
BlazkowiczПочему не груви? А что толку от груви? Нет проверки типов. Closure надо конвертировать. Плюс один - вместо любого значения можно вставить Closure. Но что-то я боюсь такой гибкости. У нас уже есть конфиг в груви для специальной части кода- но я жду kotlin 1.1.2 чтобы заменить на котлин-скрипт. После появления kotlin и kotlin-script я не вижу смысла в groovy вообще. И не только я- kotlin-script задействовали вместо груви в spring-boot и gradle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.03.2017, 16:51 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Была похожая тема уже. Делал как-то так: #19518406 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2017, 10:52 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, а мне нравится подобная идея, единственное нужно по тестить, на сколько eclipse понимает kotlin и mixed проект из Java/Kotlin, в IJIDEA думаю все идеально должно быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2017, 12:22 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Приблизительно такой же подход используется в http://bootique.io И без всяких котлинов, грувей и прочей лабудени (хотя интеграция с Kotlin есть из коробки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2017, 19:50 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Andrei TПриблизительно такой же подход используется в http://bootique.io И без всяких котлинов, грувей и прочей лабудени (хотя интеграция с Kotlin есть из коробки) Ничего общего. Можно в конфиге что угодно написать- ниаой обратной связи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2017, 21:57 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, В bootique 4 уровня конфигурации: - CLI (переменные среды) - JVM параметры - файл конфигурации (YAML, JSON, возможность подключения кастомных форматов) - программный код в Guice-модуле -- это то, о чем пишите вы в исходном посте, если я правильно понял Подобный подход реализован в аналогичных проектах Spring и Dropwizard. По принципу "чем больше уровней конфигурации, тем лучше". С типизацией проблем никаких нет -- большие куски конфигурационной логики размещаются в DI в виде кода, а отдельные параметры сеттятся/инжектируются в параметры конструкторов/методов или поля классов, и соответвствие типов проверяется рантаймом (YAML и JSON поддерживают типы, а конвертацией строковых CLI и JVM параметров занимается фреймворк). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 01:20 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Andrei TAlexey Tomin, В bootique 4 уровня конфигурации: - CLI (переменные среды) - JVM параметры - файл конфигурации (YAML, JSON, возможность подключения кастомных форматов) - программный код в Guice-модуле -- это то, о чем пишите вы в исходном посте, если я правильно понял Подобный подход реализован в аналогичных проектах Spring и Dropwizard. По принципу "чем больше уровней конфигурации, тем лучше". С типизацией проблем никаких нет -- большие куски конфигурационной логики размещаются в DI в виде кода, а отдельные параметры сеттятся/инжектируются в параметры конструкторов/методов или поля классов, и соответвствие типов проверяется рантаймом (YAML и JSON поддерживают типы, а конвертацией строковых CLI и JVM параметров занимается фреймворк). Типы они-то поддерживают, но не проверяют, как и имена. А DI-код компилируется при сборке. Вообще у нас подход такой- если конфиг правит разработчик- тут всё просто- можно и офмф-код. Если онбордер- он делает merge-request (ну или patchset в gerrit) и одновременно копипастит это либо в (самописный) UI для puppet'а, либо в consul. Приложение при рестарте (или по таймеру) подхатывает изменения- и тут никакие DI уже не катят. Я хочу, чтобы онбордер правил конфиги в проекте (с полной проверкой всего IDEA) и подкладывал изменения в нужный UI. Если это java-код, то надо либо писать многобукв (что тяжело), либо копипастить фрагменты (что чревато ошибками), либо groovy/kts. В одном из проектов сделали groovy для _некоторых_ конфигов (там нужно в конфиге писать функции), теперь жду kotlin 1.1.2 для перевода в kts всего этого. Но я задумался, что может писать _все_ конфиги в kts. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 07:26 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
На мой взгляд, скриптовые конфиги - это путь в никуда. Конфиг - это набор данных, специфичных для конкретного окружения. Идеальный (имхо) конфиг - это переменные окружения :) Если дать возможность в конфиге писать логику, она там очень скоро появится... Получим логику, специфичную для окружения. А это рай для админов и ад для разработчиков, которые продукт поддерживают. Есть похожий пример из соседней области - gradle. На моей памяти любой большой проект на грэдле быстро превращается в "ant" с кучей императивщины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 07:41 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
PS. Не понимаю ажиотажа вокруг kotlin. Были уже Xtend и Ceylon в той же категории, оказались особо не нужны. Кроме как популярностью Idea и агрессивным маркетингом Jetbrains не могу объяснить хайп вокруг котлина... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 07:44 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Теперь я понял, о чем вы говорите. Проблема опечаток и ошибок действительно существует. В приложениях мы ее решаем с помощью Ctrl+C/Ctrl+V, возможностей текстового редактора по автоматической смене регистра, ну и, конечно, такого именования параметров, когда тип более-менее понятен из названия. Если тип не понятен, сверяемся с кодом или авто-собираемой схемой конфигурации приложения (фича Bootique). Т.е. сводим к проблеме дисциплины и чистого кода. Идея валидации конфига в compile-time звучит очень интересно. У нас файл конфигурации используется только в приложении для определения дефолтных настроек и упаковывается вместе с приложением в jar. Отдельные параметры специфичные для среды или сценария запуска (обычно это простые значения: логины, пароли, хосты/порты и т.п.) переопределяются через JVM/CLI. Т.е. файл в нашем случае - это аналог вашего "мега-класса", доступ к нему осуществляется только из IDE, и, действительно, было бы логично иметь какой-то статический валидатор. Если позволите, вопрос по вашему подходу. Есть ли возможность использовать собственные типы, или только стандартные + коллекции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 10:59 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Andrei TЕсли позволите, вопрос по вашему подходу. Есть ли возможность использовать собственные типы, или только стандартные + коллекции? А это и есть тот баг, который поправили в 1.1.2 (жду выхода). import (своих классов) в 1.1.1 работает в IDEA, но не работает в maven (gradle/bazel не проверял). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 12:50 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
ДиезPS. Не понимаю ажиотажа вокруг kotlin. Разработка ПО (включая разработку языков) это тонкий баланс между кучей разных крайностей. На мой взгляд из существующих статически-типизированных ООП языков kotlin лучше всего выдерживает баланс. java - просто пример "как делать не надо", ceylon слился в экстазе с jboss (тащит их либы), плюс баги (кто пробовал- говорит их мбольше) scala потеряла простоту и обзавелась кучей непонятных закоулков и способов выстрелить в ногу. Ну и да, возможность обсудить с автором языка почему что и как было сделано- это существено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 12:53 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, STS + SpringBoot + starters и не занимаешься той ерундой которая описана выше в по топику. Один файл настроики и все. Ну если хочешь свой лог писать то указываешь где log.xml. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 12:59 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominAndrei TЕсли позволите, вопрос по вашему подходу. Есть ли возможность использовать собственные типы, или только стандартные + коллекции? А это и есть тот баг, который поправили в 1.1.2 (жду выхода). import (своих классов) в 1.1.1 работает в IDEA, но не работает в maven (gradle/bazel не проверял). Отлично! Есть ли поддержка полиморфизма? Скажем, есть настроечный параметр "Коннектор", в приложении это будет некий интерфейс Connector; в конфиг-модуле будет несколько параметров типа Connector. Для разных параметров коннектор может быть разного типа: jdbc, file, http и т.п. Интересует вот что: 1) поддерживаются ли в принципе такие параметры, которые объявлены в Java-коде как имеющие абстрактный тип? 2) если да, то умеет ли обсуждаемый механизм валидировать такие параметры? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 13:10 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
И вдогонку второй вопрос. С какой степенью гранулярности осуществляется переопределение параметров? Могу ли я переопределить одно поле параметра составного типа, или потребуется переопределять весь параметр целиком? Можно ли переопределить значение ключа в словаре (если есть поддержка Map)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 13:12 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Andrei TЕсть ли поддержка полиморфизма? Скажем, есть настроечный параметр "Коннектор", в приложении это будет некий интерфейс Connector; в конфиг-модуле будет несколько параметров типа Connector. Для разных параметров коннектор может быть разного типа: jdbc, file, http и т.п. Интересует вот что: 1) поддерживаются ли в принципе такие параметры, которые объявлены в Java-коде как имеющие абстрактный тип? 2) если да, то умеет ли обсуждаемый механизм валидировать такие параметры? Всё есть. Можно считать, конфиг kts- это код на kotlin. Отличие только в том, что kotlin-script это скрипт :) который удобнее выполнять в runtime без вызова javac или других компиляторов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 15:19 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominДобрый день! Всё что ниже- это расуждения, никак не руководство "бежать и делать". Хотя бы потому, что не исправлена критичная В т.ч. можно и лямбды писать (чего в конфигах нет вообще). Далее выполняется конфиг и на выходе получаем готовый объект с параметрами, которые можно передавать тому же guice/springio Интересно послушать умные мысли, как за, так и против. Прошу прощения, я лично против. По большому в spring-е сейчас никто не мешает делать конфигурирование ч/з Java. А переносить часть логики в конфиги вне ЯП... по мне это плохое решение. По мне .propertues, .yaml, .json достаточно для хранения изменяемых параметров/констант. А их проверку/логику выносить в Java-конфиги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 15:20 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominДиезPS. Не понимаю ажиотажа вокруг kotlin. Разработка ПО (включая разработку языков) это тонкий баланс между кучей разных крайностей. На мой взгляд из существующих статически-типизированных ООП языков kotlin лучше всего выдерживает баланс. java - просто пример "как делать не надо", ceylon слился в экстазе с jboss (тащит их либы), плюс баги (кто пробовал- говорит их мбольше) scala потеряла простоту и обзавелась кучей непонятных закоулков и способов выстрелить в ногу. Ну и да, возможность обсудить с автором языка почему что и как было сделано- это существено. Оффтоп, конечно.. ну да ладно, пятница ) На мой взгляд, в реальной жизни приживаются именно крайности - какие-то явные преимущества, которых нет у других решений. Scala - полноценная функциональщина, Groovy - полноценная динамика, Clojure - мощное метапрограммирование. А Kotlin что дает по сравнению с Java? Синтаксический сахар и немного защиты от NPE... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 21:53 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Usman @ConfigurationProperties / @PropertySource Alexey TominМогу ошибиться в типе (да хоть ввести 1.3е10 с русской "е")Будет ошибка: Код: java 1. Ошибка будет также в случае несуществующего имени свойства (опечатка и пр.). Все ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2017, 22:04 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, можно порассуждать на тему - зачем вообще нужны конфиги. Если у нас есть язык который будет над-множеством грамматики над конфигами - тогда теряется различие между кодом и данными. С этой точки зрения кусок кода на lisp (только для примера) Код: javascript 1. 2. 3. 4. можно толковать как код и как DSL. Разница только в том через какой инструмент мы на него посмотрим. Я какое-то время создавал на проекте "идеальный" конфигуратор. И когда я понял что через java-рефлексию я создаю экземпляры классов из .properties то я задумался - а зачем тогда вообще нужен умный конфигуратор - если язык всеравно умнее. Что мы пытаемся кому-то доказать создавая умные конфигурации? Нет-ли в этом ловушки или парадокса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 01:17 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominЯ могу ошибиться в имени и не заметить этого- IDEA часто не видит использования проперти... А что вместо? А например kotlin-script. Пользоваться IDEA вообще нецелосообразно (это коммерческое IDE хуже бесплатных), поэтому отдельные его недостатки несущественны. Но совсем неправильно предлагать идеи для их исправления. Это на руку новым русским - "хозяевам" фирмы JetBrains (идиотское название, ну не буду сейчас насмехаться). Эти личности плохо себя ведут: скрывают российское происхождение фирмы, ничего не сделали для российских пользователей: ни скидки не дали для своих, ни интерфейс не русифицировали. Как-то выпустили книгу по IDEA 4.5... как раз перед выходом 5. Потом я видел жалобу одного из авторов книги: её экземпляр авторам не подарили, а предложили купить. Эти новые русские просто обезумели от жадности. Помогать им - себя не уважать. Не знакомился с Kotlin и не буду: отталкивает непристойное происхождение от этой фирмы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 09:32 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey Tomin, можно порассуждать на тему - зачем вообще нужны конфиги. Если у нас есть язык который будет над-множеством грамматики над конфигами - тогда теряется различие между кодом и данными. С этой точки зрения кусок кода на lisp (только для примера) Код: javascript 1. 2. 3. 4. можно толковать как код и как DSL. Разница только в том через какой инструмент мы на него посмотрим. ... Что мы пытаемся кому-то доказать создавая умные конфигурации? Нет-ли в этом ловушки или парадокса? Конфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 11:26 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominКонфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. Опишите процесс редактирования такого конфига с точки зрения онбордера. Что он делает шаг за шагом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 13:20 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
mayton, вы совершенно правильно выше написали. Есть опасность, что эта тема вообще не нужна в грамотном процессе производства ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 14:56 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
добавлю. ...или в эксплуатации ПО... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 14:58 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Partisan MAlexey TominЯ могу ошибиться в имени и не заметить этого- IDEA часто не видит использования проперти... А что вместо? А например kotlin-script. Пользоваться IDEA вообще нецелосообразно (это коммерческое IDE хуже бесплатных), поэтому отдельные его недостатки несущественны. Но совсем неправильно предлагать идеи для их исправления. Это на руку новым русским - "хозяевам" фирмы JetBrains (идиотское название, ну не буду сейчас насмехаться). Эти личности плохо себя ведут: скрывают российское происхождение фирмы, ничего не сделали для российских пользователей: ни скидки не дали для своих, ни интерфейс не русифицировали. Как-то выпустили книгу по IDEA 4.5... как раз перед выходом 5. Потом я видел жалобу одного из авторов книги: её экземпляр авторам не подарили, а предложили купить. Эти новые русские просто обезумели от жадности. Помогать им - себя не уважать. Не знакомился с Kotlin и не буду: отталкивает непристойное происхождение от этой фирмы. Вы можете взять idea comminity edition. Она бесплатна и вы не поверите ... У неё достаточно возможностей Для ентерппрайз. По крайней мере на одном из проектов картографии для известного авто концерна Мы её использовали. Пс. Сорян за опечатки. Пишу с моб. Девайса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 16:26 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey TominКонфиг это штука, которую может править не только разработчик, но и онбордер (который ЯП знает не очень). С одной стороны. С другой- хочется плюшек статического языка с прверками. Опишите процесс редактирования такого конфига с точки зрения онбордера. Что он делает шаг за шагом? 1. В отдельной ветке правит конфиг для конкретного клиента. 2. Отправляет на мерж-реквект. 3. Копипастит изменение в consul 4. Когда изменения доходят до продакшна (1-3 недели)- удаляет из consul'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.03.2017, 18:15 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin1. В отдельной ветке правит конфиг для конкретного клиента. 2. Отправляет на мерж-реквект. 3. Копипастит изменение в consul 4. Когда изменения доходят до продакшна (1-3 недели)- удаляет из consul'а. Еще больше непонятно. В отдельной ветке? Речь идет о репозитарии исходного кода? К исходному коду должны иметь доступ только компетентные люди. Или-же компетентные должны делать code-review в обязательном порядке. И еще непонятно что такое consul. Вобщем гоняйте модульные тесты по конфигам и проверяйте типы. Если у вас интеллектуальный конфиг который не парсится а исполняется - то исполняйте его в тест-енвайронмент mandatory каждый раз на сборку (коммит или деплой). A фокус с 1.3е10 в современной IDE не проходит. Подсветка хайлайтит там где буква не латинская. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 01:13 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey Tomin1. В отдельной ветке правит конфиг для конкретного клиента. 2. Отправляет на мерж-реквект. 3. Копипастит изменение в consul 4. Когда изменения доходят до продакшна (1-3 недели)- удаляет из consul'а. Еще больше непонятно. В отдельной ветке? Речь идет о репозитарии исходного кода? Да. maytonК исходному коду должны иметь доступ только компетентные люди. Или-же компетентные должны делать code-review в обязательном порядке. Конечно, ревью делают разработчики. maytonИ еще непонятно что такое consul. Вот оно. maytonВобщем гоняйте модульные тесты по конфигам и проверяйте типы. Если у вас интеллектуальный конфиг который не парсится а исполняется - то исполняйте его в тест-енвайронмент mandatory каждый раз на сборку (коммит или деплой). A фокус с 1.3е10 в современной IDE не проходит. Подсветка хайлайтит там где буква не латинская. Лучше, если ошибку нельзя сделать, а не ловить её тестами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 14:14 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin Вот оно. Вместо того чтобы просто нормально ответить - вы меня тыкаете носом в google? Зачем вы это делаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 16:25 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
maytonAlexey Tomin Вот оно. Вместо того чтобы просто нормально ответить - вы меня тыкаете носом в google? Зачем вы это делаете? Ну реально же первы две ссылки- на сайт и описание на хабре . В общем- это отличный способ настраивать сервер "по быстрому" без правки файлов (что криминал). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 20:11 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Дарю идею :) конфигурация описывается как интерфейс Код: java 1. 2. 3. 4. 5. 6. А потом биндится системой из источника (файл/база/сеть) через прокси объект, реализующий этот интерфейс Тут и статическая типизация и прочие прелести. P.S. А реализацию можно подсмотреть в компоненте ConfigAdmin подробнее есть тут... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2017, 23:17 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Spring + @ConfigProperties. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 00:27 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Читаю и ошизеваю. Выдумать несуществующую проблему и доблестно ее решать. У кого нибудь в реальности были проблемы с конфигами pn site, пусть даже с текстовыми? Когда синтаксис мог бы существенно помочь в решении проблемы? Конфиги должны быть простыми, тупыми, кондовыми и надежными. На реальных серверах, мне вообще пришлось vi освоить, что бы конфиги править. Где там взять Idea, Eclipse, java или разбираться с какими-то экзотическими языками. Работал с yaml, IMHO идея задавать иерархию как отступы пробелов, в голову разработчиков могла придти только в середине 2000-х годов. До этого времени, такие идеи просто посчитали бы признаком белой горячки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 01:03 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Правда есть первичный вопрос, что называть "конфигами". Прикладное решение на 1C тоже вроде называется "конфигурация", но язык 1C я бы к subj относить бы не стал ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 01:09 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Вот вполне себе годный Spring-конфиг который читает системное свойство user.region и использует его дальше. Код: xml 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 01:35 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsevидея задавать иерархию как отступы пробеловPython-style конфиги (: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 04:42 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Про сложность. Если конфиг требует описать применимость некоей методики, которая может выражаться через "рекламные кампании на странице id="1234725" не трогать", то без лямб в конфиге не обойтись. Leonid KudryavtsevНа реальных серверах, мне вообще пришлось vi освоить, что бы конфиги править. Где там взять Idea, Eclipse, java или разбираться с какими-то экзотическими языками. При миграции в mesos приходётся забыть и о vi. Как вообщее о правке файлов. В любой момент конкретная нода может испариться бесследно, или возникнуть 10 новых (нагрузка выросла). Так что все конфиги- в распределённой БД, типа consul. Leonid KudryavtsevРаботал с yaml, IMHO идея задавать иерархию как отступы пробелов, в голову разработчиков могла придти только в середине 2000-х годов. До этого времени, такие идеи просто посчитали бы признаком белой горячки. Да пофиг. Просто yaml используется в gitlab-ci, который всё одно используется. PS: "размышления"- это не "завтра делать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 09:08 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevПравда есть первичный вопрос, что называть "конфигами". перечень констант характеризующий заказчика_А от заказчикк_Б Leonid KudryavtsevПрикладное решение на 1C тоже вроде называется "конфигурация" мало ли что они у себя называют. И конфигурация не равна конфигу. Буквы разные. Они как бы вообще не программисты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 09:39 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominПро сложность. Если конфиг требует описать применимость некоей методики, которая может выражаться через "рекламные кампании на странице id="1234725" не трогать", то без лямб в конфиге не обойтись. Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 09:45 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Petro123Alexey TominПро сложность. Если конфиг требует описать применимость некоей методики, которая может выражаться через "рекламные кампании на странице id="1234725" не трогать", то без лямб в конфиге не обойтись. Код: java 1. 2. Это слишком простой случай. Может оказаться, что в имени кампнии что-то. Мало ли что они там придумают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 10:33 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominМало ли что они там придумают. если придумают, то это БЛ. Вы выносите аддон или ещё какой кусок кода за пределы ядра ИС. Это сложно назвать конфигами. Это расширение ИС. У вас Модель должна предусматривать простые входные параметры конфига в виде констант. Не надо усложнять простые решения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 10:43 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey Tomin, Вам нужно реализовать собственный сервис конфигураций ! Плюсы: - Сервис - не скрипт, который может править кто угодно - Учетные записи (для каждого проекта/модуля/... своя учетка) - Валидация (обычная проверка входных данных и по шаблону - URL'ы и пр. экзотика) - Возможность создания различных профилей конфигов (напр., клонирование) - итэдэ Минусы: - придется написать плагины для Gradle и Maven, как минимум для Maven ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 11:37 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Alexey TominPetro123пропущено... Код: java 1. 2. Это слишком простой случай. Может оказаться, что в имени кампнии что-то. Мало ли что они там придумают. Думаю, для таких задач первым делом надо рассмотреть Business Rules Management, тот же Drools. И со статической валидацией там вроде всё в порядке, и поддержка IDE есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 14:15 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Давайте разделим конфиги по степени конфиговасти ))) 1. Системная информация которая нужна для запуска и минимальной работы приложения - обычно настраивается инсталятором (если есть) или простейшими текстовыми конфигами/параметрами окружениями/параметрами JVM 2. Базовая бизнес информация уровня название заказчика, какие нибудь другие базовые характеристики - вполне может настраиваться или через инсталятор или через GUI системы 3. Метаописание системы под конкретного заказчика - знаю системы KAMIS, Oracle Utilities Customer Care & Billing где метоописаниями задаются экранные формы, порядок прохождения документов и так далее. Т.е. система это скорее FrameWork для рисования GUI + заточенность под конректный класс учетных задач. 4. Если нужно кодировать логику (например правила валидации полей, какие-то простейшие IF...THEN...ELSE), то добавляют какой-то язык. В KAMIS'е в ряде мест настройки используются свой простейшими формулами (больше заточен под бизнес), CC&B использовать Java, OeBS PL/SQL, Java. ну и то, что конфигами в здравом уме назвать сложно, но в принципе, та же конфигурация: 5. Отчеты ! А что? Это тоже "конфиги" и при этом обычно отличающиеся для разных заказчиков 6. Справочника. Аналогичные "конфиги" но которые часто правятся Если взять крупные ERP системы, например OeBS, то так же огромное кол-во галочек настройки / конфигурации бизнес-логики + возможность подключать свои модули (формы, отчеты). Ну или 1C. Возникла такая мысль- все эти properties (даже если они yaml) - это костыль. С этим сложно не согласиться. Т.к. в современных программах принято делать инсталяторы и GUI. Все текстовые конфиги - это костыль. Необходимый при отсутствии инсталятора и GUI администрирования. И необязательно в виде файлов. Частую ситуацию, когда текстовые конфиги правятся быстрее/удобнее, чем то же через GUI администрирования, рассматривать не будем. Это и так всем понятно. Т.ч. удобнее, что бы было и то и то. Или если конфиги хранятся в БД, удобный способ их копи-пастить И деплоить разным клиентам. Системы которые лично я видел: KAMIS 2000 - метаописания хранятся в БД. Аналогично свой генератор отчетов работающий по метаописанию (сбор данных) + RTF шаблон загруженный в БД. Для людей занимающихся настройкой, сделаны простейшие формы, которые начинались от просто "табличке" созданной wizardom, но на протяжении жизни усложнялись. Весь метаязык, простейшие формулы (когда нужны IF'и) и свой парсер + вроде выполнения кусочков формул передачей его в SELECT'ы. Простейшие - т.е. десятки символов максимум. Был компонент - генерация HTML-каталогов, где был свой язык. Внедрение данных и кода в HTML + интерпретатор + IF, FOR, переменные и так далее. Типа JSP (его еще в то время не было). Предполагалось, что его смогут использовать заказчики, но для них и это оказалось очень сложно. Хорошо если цвет фона, буковок в HTML найдут и смогут кастомизировать ))). Для инсталяции - сделан инсталятор (вот там уже простейший текстовый конфиг ))), банальное уникальное имя/код/название_схемы_в_ БД + несколько галочек, какие компоненты для него требуются + положенный dump Oracle). Вся необходимая настроечная информация - фактически содержится в ИКОНКЕ запуска. Путь к установленному Forms'у, путь к директорию с программой, строка соединения с БД. Все остальное (включая актуальный код приложения для обновления) - в БД. Для формирования обновлений (и ведения БД, своего рода репозиторий версий) - в какой-то момент сделана форма, генератор Update'ов. Сами update - просто bat'ник + sql скрипты (код и файлы необходимые для клиента тоже хранится в БД и обновляются через БД) Экранные формы (FMB,FMX) строятся системой в момент первого запуска клиентского места (или если клиентское место увидело, что нужно обновится), аналогично обновляются остальные клиентские файлы (PLL, DLL, EXE и т.д.) и так далее. по ситуации на начало 2000-х годов Oracle Utilities Customer Care and Billing Более переусложненной системы я не видел. Метаописания в БД, которые артифакт-генератором преобразуются в анотации и код Java ))), для компиляции которых требуется Eclipse со специальными плагинами, компилируется в class'ы и XML пакуется в JAR и деплоится; аннотации преобразуются в XML, которые подгружаются при загрузке приложения и управляют маппингом Java объекты - Json - JScript Это еще не говоря о Copy Book'ах. Я наивно думал, что код Copy Book'ов сделан автоматически генератором кода. Нифига! Там ошибки! Его писали вручную. Нафига ? Почему было не сделать генератор кода Copy Book'ов по элементарному метаописанию. Манильцев много - напишут. В общем, п....ц. Зато Hibernate используют )))) JavaScript формирует JSON, который по настроечным XML преврашается в XML с данными, который приход в CC&B объект-сервис, который отображает это на Hibernate объект, который (в некоторых случаях) через Copy Book'и передается в Cobol, который выполняет запись/чтение в БД. При этом тексты запросов хранятся и в БД и в виде Cobol приложения. Я предлагал отправить меня в командировку в Лос-Анжелес с оплатой ночных клубов за счет фирмы, найти там их архитектора (компания Oracle имя архитектора и его секс предпочтения в тайне не хранила) и популярно объяснить ему, что половина всей этой хренотени в системе даром не нужна. Но начальство оплатить поездку отказалось ))). В общем, если бы не SPL WG (сейчас Oracle), безработность в Маниле была бы повыше ))) Oracle e-Business Suite - конфиги и справочники также в БД. Возможность документированно добавлять свои модули и отчеты. Порядок прохождения документов и утверждений задается настройкой в БД + Oracle Workflow. То же замечательный пример, когда попытка создать специализированное средство, можно признать неудачным. Oracle Workflow - попытка рисовать процессы.... Ну я не видел ни одного разработчика, который бы это освоил. При возможности решить задачу через Pl/SQL и через Workflow, всегда выбирали PL/SQL. Oracle Scripting - сам не сталкивался,. По описаниям людей, тихий ужас. Продукт наверное сам по себе и ничего, но осмысленности в нем мало. Т.к. программисту проще задачу решить на PL/SQL, а консультант/аналитик/пользователь все равно не освоит. 1C - я так понимаю, в БД + текст приложения конфигурации Petro123перечень констант характеризующий заказчика_А от заказчикк_Б Констант? Тут еще не прошлой страницы (в первом же сообщении) до кода и лямбд дошли. AFAIK ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:04 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#18+
Leonid KudryavtsevТут еще не прошлой страницы (в первом же сообщении) до кода и лямбд дошли. я и отвечал что не понял что это такое и зачем)). Есть много любителей сделать очень гибкую систему, чтобы ВСЁ конфигурировалось. Получается монстр. Т.к. Модель это _упрощённое_ описание реального мира предметки. Если необходимы формулы в Модели значит надо делать табличку с полем Формула. ... Я подозреваю откуда топик вырос). Из микросервисов. А теперь не знают как связать эти микросервисы. Модели то нету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.03.2017, 15:14 |
|
||
|
Размышления на тему конфигов
|
|||
|---|---|---|---|
|
#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?all=1&fid=59&tid=2123029]: |
0ms |
get settings: |
11ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
114ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 461ms |

| 0 / 0 |
