Интеграция неигтегрируемого
От: Miroff Россия  
Дата: 21.12.07 13:24
Оценка:
Салют!

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

Вопрос: что умные люди советуют использовать для интеграции в современном мире?
Хочется:
1. Поддержки всех возможных языков на уровне библиотек либо простоты имплементации этой поддержки.
2. Поддержки распределенности.
3. Контроля исполняемых в текущий момент времени задач.
4. Фиксации интерфейсов модулей, чтобы можно было заменять модули без риска развалить всю систему.
5. Простоты перекомбинации модулей для расширения функционала системы.

Масштабы примерно такие:
1-10 рабочих станций, на которых выполняются процессы
100-1000 функциональных модулей
10-100 различных юзкейзов к системе
Re: Интеграция неигтегрируемого
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 21.12.07 13:29
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Салют!

M>...

Может SOA и веб сервисы?
Re: Интеграция неигтегрируемого
От: Maxim S. Shatskih Россия  
Дата: 22.12.07 14:32
Оценка:
M>оформляются в виде отдельных программ со своими собственными форматами входа и выхода и интегрируются между собой в классическом unix way.

ИМХО UNIX-way для _такой_ интеграции лучше всего. Если нужна распределенность — то можно что-то типа SOAP использовать.

Все форматы данных при общении должны быть задокументированы.
Занимайтесь LoveCraftом, а не WarCraftом!
Re: Интеграция неигтегрируемого
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 22.12.07 15:17
Оценка:
Здравствуйте, Miroff, Вы писали:

[skipped]
ESB (Enterprise Service Bus), по сути и есть SOA.
Re[2]: Интеграция неигтегрируемого
От: Miroff Россия  
Дата: 24.12.07 08:50
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Может SOA и веб сервисы?


По моему опыту, у вебсервисов есть один концептуальный недостаток. Они сложны. Мало того, что разработка веб-сервисов в разы более трудоемка, чем разработка CLI, так еще и их поддержка требует специальных знаний. ИМХО, SOA на веб-сервисах технология тяжелая. Она хорошо подходит для ситуаций, когда у нас есть сильные команды админов и разработчиков, а система изменяется централизованно, продуманно и медленно. В моем случае, есть кучка микрокоманд из 1-5 человек, для которых программирование часто не является основным занятием. Я не представляю их за отладкой веб-сервисов. Их приоритет -- решенные задачи, а не архитектурные красивости. Боюсь, что заставить всех написать веб-сервисные обертки к модулям задача нереальная, не говоря уже о том, чтобы все переписать.

Если где-то бывает SOA, не опирающаяся на веб-сервисы, буду рад ссылкам.
Re[3]: Интеграция неигтегрируемого
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 24.12.07 09:15
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Если где-то бывает SOA, не опирающаяся на веб-сервисы, буду рад ссылкам.

Введите в Google словосочетание написанное в этом сообщении: Re: Интеграция неигтегрируемого
Автор: rsn81
Дата: 22.12.07
.
Re[2]: Интеграция неигтегрируемого
От: Miroff Россия  
Дата: 24.12.07 09:39
Оценка: :)
Здравствуйте, Maxim S. Shatskih, Вы писали:

MSS>ИМХО UNIX-way для _такой_ интеграции лучше всего. Если нужна распределенность — то можно что-то типа SOAP использовать.

MSS>Все форматы данных при общении должны быть задокументированы.

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

Я вижу "серебряную пулю" так (оставим в стороне распределенность):
1. Вместо текстовых форматов модули используют некоторый структурированный формат общения, например, на основе XML или RDF.
2. Создается набор инструментов для конвертирования структурированного формата в текстовые и обратно. Например, с помощью XSLT преобразований.
3. Для каждого модуля определяются типы данных, которые он способен принимать на вход.

Таким образом, поскольку все понимают только один формат, содержащий только информацию, без human-readable разметки, интеграция должна упроститься.
Вопрос: не изобретаю ли очередного велосипеда? Возможно, кто-то в этом направлении уже успешно трудится. ИМХО, такая штука пришлась бы очень кстати в тех же юниксах и существенно бы упростила CLI утилиты. Ее отсутствие меня очень сильно смущает. Может я хочу странного?
Re[3]: Интеграция неигтегрируемого
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 24.12.07 10:32
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Вопрос: не изобретаю ли очередного велосипеда?

Да, изобретаете. В своих пунктах 1-3 вы описали суть ESB (уж аж в 3 раз говорю вам!), см. описание простой реализации здесь: Re: Как собрать процесс воедино?
Автор: rsn81
Дата: 28.06.07
Re[4]: Интеграция неигтегрируемого
От: Miroff Россия  
Дата: 24.12.07 12:15
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Да, изобретаете. В своих пунктах 1-3 вы описали суть ESB (уж аж в 3 раз говорю вам!), см. описание простой реализации здесь: Re: Как собрать процесс воедино?
Автор: rsn81
Дата: 28.06.07


Спасибо, посмотрю. Можете ответить на пару вопросов?
Скажите, вы можете представить себе unix, построенный на этой штуке?
Какова трудоемкость декларативного описания процессов в том-же Mule?
Re[5]: Интеграция неигтегрируемого
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 24.12.07 13:06
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Спасибо, посмотрю. Можете ответить на пару вопросов?

M>Скажите, вы можете представить себе unix, построенный на этой штуке?
Не могу и, пожалуй, даже не буду рисковать.
Вопрос не понял.

M>Какова трудоемкость декларативного описания процессов в том-же Mule?

Я не знаю, что вы в данном контексте подразумеваете под процессом. В Mule задаются декларативно узлы и маршрут общей шины; если же определенный узел выполняет специфические действия, то есть которых нет в стандартной поставке Mule, то нужно кодить.
Re[6]: Интеграция неигтегрируемого
От: Miroff Россия  
Дата: 25.12.07 12:46
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Не могу и, пожалуй, даже не буду рисковать.

R>Вопрос не понял.

R>Я не знаю, что вы в данном контексте подразумеваете под процессом. В Mule задаются декларативно узлы и маршрут общей шины; если же определенный узел выполняет специфические действия, то есть которых нет в стандартной поставке Mule, то нужно кодить.


Поясняю, предметная область такова, что очень часто все происходит в пределах одной машины. Поэтому куча распределенных протоколов из стандартной поставки посвящена изрядная часть документации к Mule мне мало интересна. С другой стороны, разные комбинации модулей создаются довольно часто на один раз. Поэтому я применяю эмпирический критерий сравнимости с unix way. Например, мне нужен список файлов, в которых встречается слово "Ленин", я комбинирую find и grep. Завтра мне может потребоваться конвертировать все эти файлы в html и залить по ftp на сервер. Вот такую операцию, составленную из примитивных команд я называю процессом. В терминах Mule, это, скорее всего, маршрут по общей шине. Отсюда вопрос, насколько медленнее описывать (и отлаживать) процессы в Mule по сравнению с unix way? Если на порядок медленнее, боюсь, что такое решение не подойдет.
Re[7]: Интеграция неигтегрируемого
От: rsn81 Россия http://rsn81.wordpress.com
Дата: 25.12.07 13:24
Оценка:
Здравствуйте, Miroff, Вы писали:

M>Поясняю, предметная область такова, что очень часто все происходит в пределах одной машины. Поэтому куча распределенных протоколов из стандартной поставки посвящена изрядная часть документации к Mule мне мало интересна.

Есть коннекторы и к файловой системе.

M>С другой стороны, разные комбинации модулей создаются довольно часто на один раз. Поэтому я применяю эмпирический критерий сравнимости с unix way. Например, мне нужен список файлов, в которых встречается слово "Ленин", я комбинирую find и grep. Завтра мне может потребоваться конвертировать все эти файлы в html и залить по ftp на сервер.

Настроить и протестировать такой маршрут не должно отнять и часа. Написание XSL-преобразования и прочее — не учитываю — просто связать все в единый поток.

M>Вот такую операцию, составленную из примитивных команд я называю процессом. В терминах Mule, это, скорее всего, маршрут по общей шине. Отсюда вопрос, насколько медленнее описывать (и отлаживать) процессы в Mule по сравнению с unix way? Если на порядок медленнее, боюсь, что такое решение не подойдет.

А потрогать пытались? Дольше рассуждать...
Re[3]: Интеграция неигтегрируемого
От: Maxim S. Shatskih Россия  
Дата: 25.12.07 14:50
Оценка:
M>разработать собственно бизнес логику. Например, географические координаты могут быть представлены чуть ли не в десятке разных форматов. Для даты форматов уже несколько десятков.

В вашей системе будет только один формат координат и один формат даты, возможно, с фильтрами для импорта-экспорта (если оно нужно).

M>1. Вместо текстовых форматов модули используют некоторый структурированный формат общения, например, на основе XML или RDF.

M>2. Создается набор инструментов для конвертирования структурированного формата в текстовые и обратно. Например, с помощью XSLT преобразований.

А XML не текстовый?

M>3. Для каждого модуля определяются типы данных, которые он способен принимать на вход.


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

M>Таким образом, поскольку все понимают только один формат, содержащий только информацию, без human-readable разметки, интеграция должна упроститься.


XML вполне себе human-readable.
Занимайтесь LoveCraftом, а не WarCraftом!
Re: Интеграция неигтегрируемого
От: alander  
Дата: 11.01.08 16:10
Оценка:
M>1. Поддержки всех возможных языков на уровне библиотек либо простоты имплементации этой поддержки.
M>2. Поддержки распределенности.
M>3. Контроля исполняемых в текущий момент времени задач.
M>4. Фиксации интерфейсов модулей, чтобы можно было заменять модули без риска развалить всю систему.
M>5. Простоты перекомбинации модулей для расширения функционала системы.

Все эти задачи можно решить методом обмена сообщениями. Можно почитать здесь. Здесь масса шаблонов описывается
Re[2]: Интеграция неигтегрируемого
От: Firstborn Латвия  
Дата: 12.01.08 21:17
Оценка:
Здравствуйте, rsn81, Вы писали:

R>Здравствуйте, Miroff, Вы писали:


R>ESB (Enterprise Service Bus), по сути и есть SOA.


Отнюдь.

ESB does not implement a service-oriented architecture (SOA) but provides the features with which one may be implemented.

(http://en.wikipedia.org/wiki/Enterprise_service_bus)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.