ITBlogs

Сообщество IT-профессионалов
Welcome to ITBlogs Sign in | Join | Help
in Search

Анатомия CIO

В каком смысле вас полюбит начальство?

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

Теперь попробуем применить этот подход к теме, об которую в последние пару дней посетители сайта изломали копий столько, что хватит на небольшой пионерский костер - к SOA. Ладно, пускай все вердоры вдруг завтра сели - и меж собой договорились, что с послезавтра у них все бизнес-объекты стандартные и друг-другом понимаются. Ну вот приключилось с ними такое, вследствие роста солнечной активности и прохождения над Калифорнией озоновой дыры. И написали, для простоты всего три разных вендора, три системы - один HR, другой CRM и третий - управление складом (тоже наверно мудреная аббревиатура есть, забыл). А четвертый к ним интеграционную платформу присобачил, чтобы они могли друг-друга как им заблагорассудится вызывать. Само собой - все три решения - лучшие в своём классе - и как раз ложатся в реинжиниринг нашего бизнеса, чтобы кучу новых возможностей создать. Не, ну должно же быть в жизни место для идиллии?

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

А что же там должно быть внизу?

Вот, скажем, ввел кто-то клиента неверно - и хотим мы его удалить. Не вопрос, идем в CRM, находим клиента, жмем Delete. И насторожились читавшие когда-то литературу по БД ИТ-шники ... И правильно насторожились, потому что не знает наша CRM - а есть ли в сладской системе уже введенные на этого клиента операции. В БД это называется FOREIGN KEY и делается на нем REFERENCE INTEGRITY, нарушение которой к добру, как известно, еще никого не приводило. А значит - наша распределенная, на Web-сервисах, система должна поддерживать распределенную ссылочную целостность ... Уже веселее? А если у нас клиент не только в складской системе используется, но и в бухгалтерской и еще там пятке каких-то, о которых CRM знать не знает? Надо, стало быть каждую новую систему как-то регистрировать, чтобы CRM не позабыла не только по её запросу данные выдавать, а и при попытке этих данных модификации - у всех у них поинтересоваться - не возражают ли?

Ладно, положим поддерживает, логика такова, что вместе с таким клиентам надо его операции почистить ... А если они почему-то не могут быть удалены - так и клиента удалять не стоит. И опять насторожились БД-шники, ибо это уже называется транзакция. А у нас она получается распределенная и по произвольному количеству произвольных систем учета. Асинхронно  бы это сделать - да ACID, ити его не одобряет, значит хорошо бы синхронно. Хорошо бы также, чтобы все перечисленные системы обладали при этом одинаковыми взглядами на уровни изоляции и версионность бизнес-объектов. Желающие осознать задачу могут попробовать замутить распределенную транзакцию между Oracle, MSSQL, DB2 и Interbase одновременно. То-то будет весело ...

Ну да Бог с ним с удалением, рисуем мы просто фактуру в складской системе. Опа, реквизиты клиента надо и номер договора. А они в CRM. Не вопрос, для этих полей вызываем веб-сервис "дай реквизиты клиента". Дал, нарисовали. Но тут приходит отдел маркетинга и говорит, что в плане повышения социальной ответственности продажников надо на фактуре написать фамилию и телефон менеджера этого клиента (а они в HR, а привязка одного к другому - в CRM), а еще - хорошо бы телефон его начальника отдела (он тоже в HR есть и привязка в HR). Хочется, очень хочется предположить, что в CRM таки есть веб-сервис "дай привязку клиента к другой системе", да еще и можно указать к какой, да еще и при смене HR-системы - он эту привязку сумеет снова понять, что надо её в новую HR переадресовать. В общем - рисование фактур становится процессом уже творческим, требующим знания распределенной архитектуры системы. Кстати - асинхронно - опять-таки нехорошо это делать - всё-таки процесс вывода фактур требует интерактивности и в асинхронную очередь его так просто не поставишь.

Теперь вернемся чуток к реалиям.

Разумеется, на нынешнем уровне развития науки и техники все перечисленные задачи по-отдельности более чем решаемы. Но! Кто видел реальную ERP - тот знает, что она как правило работает на пределе возможностей дорогущего железа и быстродействием транзакций при этом не блещет. Сильно не блещет. Имея все перечисленные проблемы в одной БД. Каким чудом оно начнет работать в распределенном режиме поверх небыстрых веб-сервисов - для меня более чем тайна. Поскольку чудес в области железа пока не предвидится, то закон Мура догонит подобные запросы ох нескоро ... Готовьте ваши денежки ... Что там говорили следующее? Виртуализация? Да, да, своевременно ;-) Начальству бюджет понравится ...

Опять же - о стабильности работы. Ладно, положим все инфраструктурные компоненты, количество которых удесятеряется будут работать безупречно. Но замена или модернизация одного "лучшего в своём классе" компонента, как мы успели заметить пролезет во все возможные и невозможные, а потому неожиданные места. HR модуль обновили - фактуры отвалились. То-то будет радости. Внутри одной ERP подобное еще как-то отслеживается при модернизациях (хотя и из рук вон плохо), что будет при независимых компонентах?

Ну и напоследок - заведомо неизвестная вендорам конфигурация системы - заведомо гарантирует, что отчетный модуль мы будем делать сами и уникальный под каждое предприятие. Не то, чтобы это обязательно плохо - индивидуальная отчетность - это здорово, но это означает, что отчетный блок - ляжет на CIO. Причем - отчеты, которые OLAP - сделаются несложно, а вот те, которые должны в online делаться - делать непонятно как. Писать на каждый программу, вызывающую кучу веб-сервисов? Кстати. как там в стандартах со стандартами запроса коллекций объектов? Или хотя-бы с запросом объекта по условию? Вот надо мне в отчет всех сотрудников с фамилиями на "М". Будет в любой произвольной HR системе веб-сервис, позволяющий одинаковым образом подобное запросить? Ну, о быстродействии отчетов, которые online выполняются в подобной среде уж умолчу ...

Еще один, кстати, "напоследок" - наверно специалистов по конфигурированию "лучших" решений тоже понадобится немало? Внутри-то они все разные, свои языки настройки, свои параметры - значит свои курсы для ИТ-шников, свои "узкие" специалисты. Причем - поскольку всё интегрировано - то передача каждого решения своему поставщику на поддержку кажется плохой идеей. Поменяют одни чего в CRM - печать фактур в складе отвалится - кто будет разбираться? Сколько это времени займет? Кого и как в это время будет любить начальство?

Выводы

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

P.S. Всё сказанное отнюдь не означает, что аффтар - злобный враг SOA. Подходы нормальные, мысли здравые, во многих случаях они вполне могут работать и сейчас. Автор - злобный враг подачи SOA как панацеи. Ибо это уже - навешивание на уши лапши, а автор этого не любит. Особенно, когда уши его.

Published 21 ноября 2006 г. 11:48 by Tolik

Comments

 

Vladislav Artukov said:

С этого же угла зрения стоит рассматривать MS DSI (в перевод на русский примерно так - инициатива компании Microsoft по управлению распределенными системами). Преподносимая как панацея, на сегодняшнем уровне эксплуатируемых приложений она работоспособна лишь в узких секторах. Вот, например, запустим MS Exchange 2007 в эксплуатацию - возможно, этот сектор ляжет под управление DSI-инструментов. И так далее.

ноября 21, 2006 10:48
 

Tolik said:

Вообще всегда боялся панацей :-)

Видимо потому, что ни одной живой еще не встречал

ноября 21, 2006 10:53
 

kenzo said:

серебрянной пули нет (с)

ноября 21, 2006 11:43
 

Tolik said:

> серебрянной пули нет

Хорошо ... В трех словах - суть всего креатифа.

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

ноября 21, 2006 11:56
 

booter said:

Грамотно написано. Ибо серебряной пули действительно нет, об этом еще в прошлом веке писалось (вон книжечка на полке стоит).

Я так подозреваю, что SOA выродится в сервисы для интеграции на уровне компаний, где связи достаточно слабы (например, передача заказа). Там это будет  наверняка удобнее.

Кстати, попытка создать кирпичики (медная пуля) - уже неоднократно вводилась как сверхдостежение. Вспомните DCOM и CORBA. И где они сейчас? : )

ноября 21, 2006 13:05
 

Tolik said:

О! Точно. Проклятый склероз, я ведь помнил, что были уже "веб-сервисы", только забыл какие. Конечно КОБРА. :-)

ноября 21, 2006 13:09
 

Vlad Borkus said:

Анатолий, отлично описали все проблемы SOA. В общем-то большинство описанных их применительно к любой интеграции.

Ситуация как вы ее описали, конечно ужасна, но правда в том, что все эти приложения скапливаются у вас почти независимо от вашего желания.

Главный позитивный момент в SOA, что ищутся какие-то новые инструменты для решения этих проблем.

На самом деле пока предприятие маленькое все и без SOA и EAI прекрасно решается. Когда большое -- от CIO нужен уже методологический подход к учету приложений и их интеграции.

Я, кстати, сторонник того, что не нужно все усложнять. Если можно обойтись без EAI или SOA , значит так и надо жить.

Пара замечаний.

Про REFERENCE INTEGRITY. В традиционных EAI это решается за счет инициации событий об обновлении содержимого БД системы. Многие адаптеры к стандартным системам приводят запись в нормализованный вид, на ее базе проще потом обновлять другие приложения. Сейчас много говорят, что надо объединять SOA и MDA.

По стандартам для REFERENCE INTEGRITY в Web-сервисах см. http://www.konnasi.ru/_files/Web_Services_Borkus_PCWeek.pdf  

Там очень много всего, прочинать целиком вряд ли кто сможет, но есть и про транзакции.

В продуктах -- реализовано пока частично, только для ACID. Для сложных транзакций -- нет.

PS//А копирайт на придуманный мною слоган нарушать не надо. !!! :))))) А то нарушили, понимаешь, ссылочную целостность. :))))

ноября 21, 2006 15:29
 

Tolik said:

Ой, да какие ВСЕ проблемы? Проблемы начнутся при стандартизации бизнес-объектов, то, что я описал - это так, детский лепет, технические вопросы так или иначе порешат, тут у меня никаких сомнений, вопрос: "когда ?".

Картина по-моему совсем не грустная, а абсолютно нормальная и всем знакомая. Всё зависит от точки зрения - если SOA - это панацея и спасение - то есть о чем грустить, если это направление для многолетней работы - то всё в порядке, есть проблемы - будут и решения.

Я лишь обозначал, что проблемы есть, они пока не решены и решение будет ой не скоро. А работать над решением - конечно же надо.

ноября 21, 2006 15:37
 

Vlad Borkus said:

2 Tolik

Для меня SOA -- не панацея. Об этом во вчерашней ветке и говорили.

Собственно у нас, пролучается, полный консенсус.

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

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

Если, кстати, говоря им это удастся -- будет референтная модель как поступать с другими системами.

ноября 21, 2006 15:47
 

Vlad Borkus said:

Анатолий,

>Проблемы начнутся при стандартизации бизнес-объектов, то, что я описал - это так, детский лепет, технические вопросы так или иначе порешат, тут у меня никаких сомнений, вопрос: "когда ?"

Еще не удержусь, задам Вам вопрос.

Каково ваше отношение к EDI, EDI/XML, ebXML, RosettaNet? Есть еще куча стандартов для отраслей -- HIPPA, HL7 и т.п.

ноября 21, 2006 16:08
 

booter said:

> Проблемы начнутся при стандартизации бизнес-объектов

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

ноября 21, 2006 16:26
 

Nikolay Ponomarenko said:

Хех, впервые встретил точку зрения по SOA близкую к практике и реальности :)

Все помнят что "SOA - это не готовая технология", но мало кто упоминает на что и как ляжет все это на практике.

ноября 21, 2006 16:47
 

Vlad Borkus said:

Николай, обратите внимание на вывод в этой статье

"сказанное отнюдь не означает, что аффтар - злобный враг SOA. Подходы нормальные, мысли здравые, во многих случаях они вполне могут работать и сейчас. Автор - злобный враг подачи SOA как панацеи. "

Остальное -- профессионально сделанные иллюстрации из жизни ИТ-специалиста.

Не надо принимать их за тезис "в автомобиле надо масло менять, грязная, противная работа. Может нафиг это авто?".

ноября 21, 2006 17:49
 

Vlad Borkus said:

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

Ответ, наверное, разобрать на запчасти и ими пользоваться.

ноября 21, 2006 17:56
 

Vlad Borkus said:

Анатолий, неабрел в тексте на проблему.

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

Это как раз делается. Через XQuery. А для тех СУБД, что не поддерживают сервисы, навешать зонтик из EII. Они почти поголовно сейчас эту возможность дают, по-моему.

Что касается комбинации данных. В отчетную систему будут возвращаться коллекции XML. Думаю, что они будут уметь обрабатывать такие коллекции и вызывать сервисы.

на вопрос по производительности можно ответить просто: она на будет ниже примерно на порядок относительно прямых запросов.

ноября 21, 2006 18:16
 

Elena Makurochkina said:

При построении системы надо идти от нужд бизнеса. А бизнес не нуждается в зоопарке приложений, даже если они все супер-пупер новомодные и лучшие в своем класса (хотя что значит лучшие? Лучшие для кого и в какой ситуации?). И после анализа потребностей в большинстве случаев выясняется что лучше делать единую систему, а не бороться с набором сервисов. Хотя и набор сервисов в некоторых ситуациях удобен. Но, все таки, imho – SOA не для корпоративных систем.

Еще хочется поспорить по поводу некоторых аргументов поста:

1. «ввел кто-то клиента неверно - и хотим мы его удалить». Объекты не должны удаляться. Они должны переходить в состояние удален. И вообще объекты при любых изменениях должны оставлять историю. Например, даже если клиента ввели правильно, но у него со временем изменились реквизиты, для того, чтобы посмотреть платежки, выставленные год назад нужны старые реквизиты, для свежих – новые. Это относится не к SOA, а к IT ситемам вообще.

2. На промышленных системах внешние ключи часто отключаются для поднятия скорости обработки. т.е. при разработке (на тестовом сервере) все живет с ключами, но уже при переносе на полигон все идет без ключей. И в таком же виде идет на продуктив.

ноября 21, 2006 18:47
 

Vlad Borkus said:

2 SunDest

Реплика

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

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

1) Ослабли на время контроль над тем, что внедряем -- для того, чтобы "быстрее" или "заточить"

2) Слияния.

Но, кстати, не так зоопарк и плох. Он для ИТ плох, а для бизнеса не всегда (не всегда плох не значит, что хорош).

SOA -- один из путей как с этим зоопарком разбираться.

В остальном все правильно.

ноября 21, 2006 19:16
 

Elena Makurochkina said:

2 Vlad Borkus:

В обоих приведенных случаях SOA выступает в качестве времянки и латания дыр. Если по недогляду или при объединении организовался бардак, то временно можно поставить заплатки так, чтобы все это жило, но на долгосрочный период надо проанализировать, понять и выбрать (или спроектировать) единую систему, которая будет удовлетворять потребностям.

Сейчас получается что хорошую идею SOA употребляют не к месту и прикрываясь ей узаконивают бардак.

ноября 21, 2006 20:22
 

Vlad Borkus said:

2 SunDest

>Сейчас получается что хорошую идею SOA употребляют не к месту и прикрываясь ей узаконивают бардак.

Мне кажестя чуть не так. Идея (даже не идея, а шумиха вокруг) SOA возникла потому, что люди признали -- бардак будет всегда. Т.е. капитулировали и ищут пути, как в бардаке жить.

Это из области проблем оптимального соотношения порядка и хаоса.

ноября 22, 2006 0:38
 

Vlad Borkus said:

Вот попалось на глаза -- с конференции SAP. Розничная сеть с оборотом 200 млн долл. Архитектура

80 % значимых операционных процессов поддержаны функциональностью SAP Retail. Включая ЦО, РЦ, офисы филиалов и до back-office магазина. Процессы планирования - не SAP система, но результат планирования в SAP. Интеграция. Хранилище данных (OLAP) – не SAP система. Интеграция. Формирование фискальной отчетности – не SAP система. Интеграция.

ноября 22, 2006 1:56
 

Elena Makurochkina said:

2 Vlad Borkus:

> люди признали -- бардак будет всегда

Кто признал? Бизнес покупает то, что ему рекламируют. Люди, которые принимают решения, обычно, очень далеки от IT и сами понять они не могут, но они верят тому, что им говорят. И чем больше говорить что бардак неизбежен, тем больше они в это поверят! Тем более когда сами видят что кругом бардак. Свое imho по поводу того кто чего понял и кому это выгодно написала здесь:

http://sundest.blogspot.com/2006/11/blog-post_22.html

Для коммента слишком много получилось.

А по поводу интеграции – интеграция не тоже что SOA. Сервисно-ориентированная архитектура идет от отдельных сервисов и, если надо, эти отдельные сервисы можно «подружить». А Интеграция может быть и в системах спроектированных как единое целое. SOA - это подход в архитектуре, а интеграция – это уже уровень реализации.

ноября 22, 2006 5:51
 

Tolik said:

>Еще не удержусь, задам Вам вопрос.

Слушай, есть предложение, на ТЫ, на брудершафт выпьем при удобном случае. Как-то еще по старым фидошным привычкам ВЫ в сети на мой менталитет не ложится :-) (впрочем, любой, кто затребует обращения на Вы - таковое безусловно получит)

>Каково ваше отношение к EDI, EDI/XML, ebXML, RosettaNet

Сугубо положительное. Тут стандарты как раз по месту. Проблема обмена данными более чем готова для стандартизации. В отличие от проблемы интеграции систем на уровне вызовов.

ноября 22, 2006 6:23
 

Tolik said:

>Это как раз делается. Через XQuery. А для тех СУБД, что не поддерживают

>сервисы, навешать зонтик из EII.

Иззвините ...

Каких-таких СУБД? Я так понял - стандартизируется доступ к бизнес-объектам, в базы никто напрямую не лезет. Или всё-таки лезет? Если лезет - то не надо нам никаких SOA, просто есть несколько СУБД и репликация (так или иначе сделанная) между ними.

Правда - тогда придется стандартизировать структуру БД и внутренние представления бизнес-объектов (иначе как я узнаю, как оно хранится в БД другой учетной системы) ;-)

ноября 22, 2006 6:36
 

Tolik said:

>Это как раз делается. Через XQuery. А для тех СУБД, что не поддерживают

>сервисы, навешать зонтик из EII.

Иззвините ...

Каких-таких СУБД? Я так понял - стандартизируется доступ к бизнес-объектам, в базы никто напрямую не лезет. Или всё-таки лезет? Если лезет - то не надо нам никаких SOA, просто есть несколько СУБД и репликация (так или иначе сделанная) между ними.

Правда - тогда придется стандартизировать структуру БД и внутренние представления бизнес-объектов (иначе как я узнаю, как оно хранится в БД другой учетной системы) ;-)

ноября 22, 2006 6:49
 

Tolik said:

>«ввел кто-то клиента неверно - и хотим мы его удалить».

>Объекты не должны удаляться

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

> На промышленных системах внешние ключи часто отключаются

Это означает поддержку ключей не в БД, а на сервере приложений. Что их будет поддерживать в распределенной системе?

ноября 22, 2006 6:54
 

Tolik said:

>Вот попалось на глаза -- с конференции SAP.

>Розничная сеть с оборотом 200 млн долл

Вот моя компания. Оптовая сеть с оборотом 600 млн. Заменяем SAP на самописанную систему - всё остальное - почти один в один. Интеграция - на уровне обмена данными - загрузка-выгрузка (см. про мое хорошее отношение к EDI и т.п.). Никто никого напрямую не вызывает, ибо незачем.

ноября 22, 2006 6:57
 

Elena Makurochkina said:

Tolik! Вы заменили SAP самописную систему?!

Вот этот крамольный прогноз

http://sundest.blogspot.com/2006/11/it.html

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

А тут выясняется что это уже и не прогноз совсем, а текущая жизнь!

ноября 22, 2006 11:35
 

Tolik said:

Не, мы ничего не меняли, у нас она с самого начала была самописная, потом её заменили другой самописной.

ноября 22, 2006 13:10
 

booter said:

> Не, мы ничего не меняли, у нас она с самого начала была самописная, потом её заменили другой самописной.

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

ноября 22, 2006 14:20
 

Vlad Borkus said:

2 Tolik

>Слушай, есть предложение, на ТЫ, на брудершафт выпьем при удобном случае.

Договорились :)

>Проблема обмена данными более чем готова для стандартизации. В отличие от проблемы интеграции

систем на уровне вызовов.

Это очень близкие вещи, на самом деле WS ложатся и на EDI. В конце концов WS -- технологическая вещь, на

этом уровне все равно, что там по XML гуляет.

>Я так понял - стандартизируется доступ к бизнес-объектам, в базы никто напрямую не лезет. Или всё-таки

лезет? Если лезет - то не надо нам никаких SOA

Я могу сказать только про текущие тенденции. Сервисам ничто не может помешать работать на разных уровнях. И на уровне базы в том числе.

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

Скажем, по приведенным примерам мы предполагаем, что reusable будет сервис, который выдает данные клиентов по какому-то критерию. Вот его и кодируем в промежуточном слое.

Но можем поступить и по другому, ради эффективности, но в ущерб архитектуре. Если база поддерживает сервис запросов (в дополнение к SQL), то можем делать запросы как хотим.

На самом деле есть куча производителей EII, продукты которых обеспечивают доступ по WS. Судя по тому, что живут они неплохо, это востребованно в штатах.

>Объекты не должны удаляться

Еще соображение. Я с этим в остновном по области документооборота сталкивался. Есть такие вещи как аудит, проверки всякие и так далее. По прошествии 5 лет многое лучше удалять.

>Это означает поддержку ключей не в БД, а на сервере приложений.

Я так понял, что имеется в виду, что этим будет заниматься бизнес-приложение. Так поступают. В том же SAP есть, кажется, и такая песня.

>Заменяем SAP на самописанную систему - всё остальное - почти один в один.

Должны быть очень серьезные причины...

По SAP в смысле ее окупаемости, конечно, дела обстоят очень неоднозначно, но среди людей далеких от ИТ, SAP успешно внедрила мнение, что ее ERP = развитый бизнес. У компании повышается капитализция, легче брать кредиты.

Это главный SAP'овский козырь. Их брэнд.

>Интеграция - на уровне обмена данными - загрузка-выгрузка (см. про мое хорошее отношение к EDI и т.п.).

> Никто никого напрямую не вызывает, ибо незачем.

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

стандартизации API на техническом уровне. Если на будущее потребуется все более быстрый анализ данных.

Мне, если честно, ближе традиционные EAI. Я там вижу случаи, где они могут быть полезны (скажем, те же финансы). В общем-то это близко к идее репликации база-база, но с трансформацией данных в промежуточном слое.

В SOA мне нравится идея, что когда делаешь приложений, то нужно продумать его открытый API. То, что SAP, скажем, переписывает свои приложения под этот API. Или всякие коннекторы, будут его поддерживать, -- очень хорошо. То, что IBM, Microsoft и компания дадут инструменты для работы с этим API -- еще лучше.

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

Вот и получается -- что об API надо думать, ну а все остальное -- живем как обычно.

ноября 22, 2006 14:31
 

Vlad Borkus said:

2 SunDest

>> люди признали -- бардак будет всегда

>Кто признал?

Если коротко, то SAP. Посмотрите на то, что они сейчас предлагают.

ноября 22, 2006 14:32
 

Konstantin Starovoytov said:

Внимательно слежу за обеими дискуссиями, предпочитаю не вмешиваться (видимо как и многие другие участники :-), т.к. считаю что все "правильные" слова по теме уже сказаны. Но после прочтения задумался - А какую же из актуальных для моей компании проблем СОА может решить уже сегодня? И вот к какому выводу пришел - похоже такое применение все-таки есть - у меня стоит приложение b2b на веб-сервере вне локальной сети компании по соображениям безопасности. По этим же соображениям нельзя открыть порты на маршрутизаторе для доступа к базе данных ERP системы для этого приложения, которая, естественно, находится уже внутри локальной сети. А доступ такой нужен чтобы узнавать информацию о платежах клиента, например. Сейчас обмен такой информацией происходит по расписанию через XML файлы. А вот если бы мы нафигачили веб-сервис к нашей ERP, который бы выдавал нужные данные, то можно было бы повысить оперативность обмена. Правда вопрос бы уже встал с безопасностью веб-сервера, который бы "отдавал" веб-сервис наружу (вот тут уважаемые профессионалы, наверно, подскажут мне как получше это реализовать).

ноября 23, 2006 3:06
 

Vlad Borkus said:

Константин, вы по-моему ударили по "мягкому подбрьюшью" все нынешней технологии веб-сервисов -- безопасность. :) С ней довольно плохо. Но не совсем.

Прежде, чем двинемся дальше вопрос -- а сейчас как решаетс вопрос безопасности XML файла, который содержит (судя по всему) какие-то конфиденциальные сведения и безопасности данных в B2B-базе?

Вопрос не праздный -- каковы границы безопасности?

Дальнейшие ветки плучаются такие. Не хочется городить сложности, связанные с использованием WS-Security. Хотя, это тоже возможно.

Нам нужно обеспечить (как обычно):

1) аутентификацию запрашивающец стороны

2) защиту от подмены в процессе передачи

а) В минимуме хотелось бы безопасность можно ограничить SSL. Не использовать встроенные механизмы WS.

Если не нужно специально шифровать тело данных (XML передается в открытую), то остается вопрос аутентификации запрашивающей B2B системы. Web-сервис будет отвечать только ей.

Это делается настройкой firewall (прописываем правило: извне он будет пропускать только обращения от внешнего веб-сервера к внутреннему веб-серверу, т.е. пару определенных IP). Отвесать внутренний сервер имеет право тоже только по этому IP.

У внутреннего сервера должен быть свой выделенный IP. Возможны и варианты с динамическим IP, но тогда firewall -- система не динамически настраиваемая, придется разрешать доступ снаружи ко всем IP внутри.

Далее, можно аутентифицировать уже внешний веб-сервер на внутреннем средствами самого Web-сервера или по паролю-логину. Можно сделать так, что этот логин будет периодически (скажем раз в 5 минут) присылаться на сервер изнутри компании.

Это пока все без специфически Web-сервисных вещей.

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

б) Если "чисто" Web-сервисно. Получается нужно настраивать стек WS-Security. Его поддержка есть сейчас в серверах приложений IBM и в стеке, поддерживаемым Microsoft (точно будет в Indio и есть в BizTalk, с текущим статусом -- .Net точно не помню).  

Если совсем упрощенно, то WS-Security обеспечивает шифрование сообщений, их подпись и вставление в заголовки сообщений идентифицирующих запрашивающую сторону токенов.

WS-Security должен быть настроен на внешнем веб-сервере так, чтобы периодически запрашивать в некоей службе авторизации новый жетон на доступ к внутреннему серверу. Внутренний сервер будет его проверять -- опять-таки средствами стека WS-Security.

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

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

Будет выглядеть так ( веб сервер внешний)-(медиатор)-(фаервол)-(медиатор)-(внутренний веб-сервер)-(ERP).

Типичный пример поставщика SOA Software, но есть и другие.

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

Может потом еще, что в голову придет, я дополню.

ноября 23, 2006 14:18
 

Konstantin Starovoytov said:

Влад! Спасибо за развернутый и профессиональный ответ, но система получится "тяжелой" и сложной в поддержке, особенно момент с заменой паролей каждые 5 мин мне понравился. Подожду пока с внедрением я думаю :-) Будем как и раньше XML файлы на FTP кидать. В самих файлах ничего особо критичного нет, поэтому мы их вроде даже не шифруем. В существующей системе нас не беспокоит безопасность веб-сервера, нас беспокоит доступ в нашу локальную сеть. Сейчас его ни для кого нет. А вот если я веб-сервисы поставлю - будет, вот об этом и говорим. Как я понял Ваш ответ именно эту проблему вы и предлагаете решать, но повторю - уж очень много звеньев, а кто ответить за риски связанные с таким "нагромождением"?

ноября 23, 2006 14:31
 

booter said:

> Будет выглядеть так ( веб сервер внешний)-(медиатор)-(фаервол)-(медиатор)-(внутренний веб-сервер)-(ERP).

Это какая-то схема для полных параноиков. Не проще ли (фаервол) - (DMZ) - (вэбсервер,фаервол) - (ERP) ?

Разумеется, работа с WS по SSL, авторизация по сертификатам. На OSS такая схема собирается за день максимум.

ноября 23, 2006 14:44
 

Vlad Borkus said:

>а кто ответить за риски связанные с таким "нагромождением"

Ну, это риторический вопрос :)))))

Если серьезно, то когда даже слегка приоткрывают внутренюю сеть, то всегда масса вопросов возникает.

Но есть действительно негативная нынешняя тенденция -- малооправданное переусложнение.

Создают новые "панацеи", а те открывают вновь казалось бы уже раньше проблемы, их героически решают, создают еще проблем.. Ходят, в общем, по кругу. Говорят, правда, что по спирали :)))))

С Java это было очень заметно.

ноября 23, 2006 14:46
 

Vlad Borkus said:

2 booter

> Это какая-то схема для полных параноиков.

По сути -- это первый вариант. Просто я DMZ в схеме опустил, и так ясно, что она там есть.

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

Ну, сейчас-то сеть вообще снаружи закрыта полностью.

ноября 23, 2006 14:57
 

booter said:

> Ну, сейчас-то сеть вообще снаружи закрыта полностью.

Ну и правильно : )

ноября 23, 2006 15:51
 

Vlad Borkus said:

Можно еще, кстати говоря, организовать Web-сервис на внешнем веб-сервере и вызываеть его изнутри сети, закладывая через него обновления. Добавив, конечно, авторизацию. Фактически, правда, получается аналог того, что есть сейчас с FTP.

ноября 23, 2006 19:38
 

feygin said:

2 Tolik:

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

2 Vlad Borkus:

В WSS самый простой способ аутентификации -- это UsernameToken. Служба авторизации (WS-Trust? Kerberos?) в данном случае overkill.

> Можно еще, кстати говоря, организовать Web-сервис на внешнем веб-сервере и вызываеть его изнутри сети, закладывая через него обновления.

Именно для этих целей IBM придумал WS-Polling (см. http://www.w3.org/Submission/ws-polling/).

2 Konstantin Starovoytov:

WS-Polling позволяет третьей стороне принимать сообщения за настоящего адресата, когда взаимодействие происходит по модели one-way. Это очень похоже на схему SMTP/POP, в том числе и в том, что адресат всегда выступает клиентом и не должен открывать никаких inbound портов на своей стороне.

В России по этой схеме (и даже по этой спецификации) работает EDI-провайдер 1С:Сеть (http://v8.1c.ru/news/newsAbout.jsp?id=1208), кстати, с использованием упомянутого Владом WSS и даже WSRM. Там, помимо прикладных функций, связанных непосредственно с EDI, есть слой медиации, через который с EDI-процессами и происходит взаимодействие. Через него можно пускать и ваш трафик. Если интересно, могу дать доступ поиграться (пишите по личной связи).

ноября 29, 2006 17:42
 

Konstantin Starovoytov said:

2 feygin:

спасибо за предложение, появятся ресурсы - обязательно опробую эту модель, и обращусь!

2 Елашкин:

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

ноября 30, 2006 9:41
 

Vlad Borkus said:

2 feigin

>Служба авторизации (WS-Trust? Kerberos?) в данном случае overkill.

Нет, конечно. Мы начали с нечетких требований по безопасности, потом их тут уточняли.

В изложенных потом ограничениях, самый простой способ пока вырисовывается с web-сервисом на внешнем сервере и SSL- защитой канала по двойному сертификату.

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

Относительно угрозы взлома внешнего сервера с дальнейшей атакой с него внутрь, WSS ничего, как видится,не даст.

Иначе говоря, в той конфигурации достаточно будет защиты по SSL.

WS-Polling, WSS и прочие неустоявшиеся протоколы добавляют сложности и стоимости, я бы без надобности не использовал.

Идеи - пожалуйста, протоколы -- нет.

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

2 Константин

>ничего не делай, но при этом занимай правильную нишу

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

ноября 30, 2006 19:21
 

Mikhail Elashkin said:

Ха, я же говорил, что машинка (идея) работает!

Народ узнает новое.

ноября 30, 2006 19:34
 

feygin said:

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

Отправление запроса по почте, вроде, тоже не особенно добавляет онлайновости. Что FTP, что POP, что WSP -- архитектура транспорта не меняется, и последний шаг остается за клиентом. Тут уж либо порт открывай и принимай напрямую, либо доставка данных окольными путями и тогда поллингом асихронно обновления получай (FTP-шным, почтовым или Web-сервисным).

декабря 1, 2006 10:12
 

Даниил Фейгин: мысли вслух said:

Предметное обсуждение SOA началось и по-русски. Сколько ни пишут журналы на эту тему, дискуссии никак

декабря 3, 2006 13:08
Anonymous comments are disabled

About Tolik

Живу в Новосибирске. Бывший ИТ-директор (CIO) фармацевтического дистрибьютора "Катрен". Ныне директор по развитию этой же компании. Когда-то неплохо программировал. Женат, двое детей - мальчик - и еще девочка :-) Учился (и закончил) Новосибирский Электротехнический Институт, радиоинженер. Имею диплом MBA, в результате чего постоянно съезжаю на взгляд со стороны бизнеса.

This Blog

Syndication

Powered by Community Server (Personal Edition), by Telligent Systems