SOA и обещание чудес

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

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


Однако, чудеса, которые существуют в теории, на практике обычно не появляются. Возникает вопрос, где обещанные чудеса ? Или с SOA что-то не так ? Все так, просто не надо ждать чудес.

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

Важно также понимать, какой обещают профит.

Разбиение на модули обещает, например
  • Повторное использование aka reuse. О, про reuse можно говорить долго, но, я думаю, вы в курсе и так.
  • Каталог, в котором перечислено все, что когда-либо существовало и в котором можно найти именно то, что нужно в данный момент. См. также reuse.
  • Простоту разработки и модификации каждого отдельного модуля.
  • Надежность, поскольку сбой одного модуля не влияет на другие.
Формализация интерфейсов, в свою очередь, обещает
  • Проверку корректности. То есть гарантию того, что все как надо, а не как обычно.
  • Независимость от реализации. Хотите модуль X от производителя A заменить на модуль Y от производителя B - легко !
  • Стандартизацию протокола обмена. Все будут использовать XML и воцарится гармония всеобщей совместимости. Ну, или JSON, но гармония чтоб обязательно.
Можно долго рассуждать, почему практика программирования расходится с теоретическими обещаниями, говорить про неидеальность мира, нечеткость требований, рыночную гонку и прочее, но, думаю, любой, кто занимался разработкой достаточно долго, понимает это сам.

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

0 комментариев:

Отправить комментарий