Хранимые процедуры являются деталями реализации. Функции базы данных, лямбда-выражения или сценарий оболочки, хранящиеся где-то в файловой системе, - все это детали реализации и не имеют отношения к архитектуре.
большинство книг по микросервисам рекомендуют одну базу данных на микросервис.
Итак, мы можем кодировать хранимые процедуры в этих базах данных.
опять же, большинство книг по микросервисной архитектуре утверждают, что они должны быть автономными и слабо связанными
Между бизнес-возможностями, жизненными циклами разработки, управлением, развертыванием, местоположением команды и т. Д. Ничего общего с деталями реализации. Микросервисы не решают техническую проблему (как раз наоборот). Они приходят, чтобы решить проблемы с руководством и временем выхода на рынок. Это стратегия, а не тактика. Способ быстрого отказа с наименьшими затратами. Если определенная возможность для бизнеса окажется бесполезной, мы отбрасываем ее, не путая другие возможности, развертывания, управление проектами, релизы ...
Обратите внимание, что «split» уже действует как разъединяющий агент. Скажем, у нас есть две службы: A поддерживается Oracle, а B - MongoDB. Если мы не нарушим золотое правило развязки, то можно будет отбросить Оракул А + с незначительными побочными эффектами на Б.
Использование хранимых процедур, написанных, например, специально для Oracle, тесно связывает микросервис с этой технологией.
Это может привести к блокировке поставщика. Часто поставщик навязывается бизнесом по историческим или договорным причинам 1 . Важно знать, как не блокировать наш код для поставщика. Например, некоторые ORM и платформы реализуют новый язык запросов, который скрывает встроенные функции и функции базы данных.
Хотя, если наши сервисы достаточно микроуровневы, блокировка поставщика больше не является проблемой, поскольку она затрагивает небольшую часть целого. Небольшая деталь, которую можно быстро заменить (или изолировать).
большинство книг MSA (которые я читал) рекомендует, чтобы микросервисы были ориентированы на бизнес (разработанные с использованием DDD).
Это должно быть ориентировано на бизнес, и вот в чем дело. Не все компании используют преимущества DDD. DDD и микросервисы перекрываются во многих точках, но они не являются причинно-следственными связями. Мы можем получить экосистему микросервисов, состоящую из анемичных сервисов. Или состоят из комбинации обоих: сервисы, реализующие сложный домен, и тупые анемичные сервисы, предоставляющие POJO непосредственно из БД. В этом нет ничего плохого.
Что касается книг, они сосредоточены только на выполнении стратегии. Тактика - как использовать преимущества распределенных вычислений - как заставить их работать на успех, но они (как правило) не зависят от стратегии. Стратегии варьируются от компании к компании и редко зависят от разработчиков. Таким образом, мы все еще должны экстраполировать и адаптировать то, что говорится в книгах, к нашим конкретным потребностям, требованиям и ограничениям. Цель состоит в том, чтобы сделать бизнес-стратегию прибыльной и устойчивой.
Всегда помните, что любая архитектура - это средство для достижения цели. Деловые правила. Мы не строим микросервисные экосистемы для моды или для любви к искусству.