マイクロサービスでストアドプロシージャを使用することを明示的に禁止または主張するものはありません。
免責事項:開発者のPOVのストアドプロシージャは好きではありませんが、マイクロサービスとはまったく関係ありません。
ストアドプロシージャは通常、モノリスデータベースで機能します。
あなたは論理的な誤りに屈していると思います。
ストアドプロシージャは最近減少傾向にあります。まだ使用されているほとんどのストアドプロシージャは、保持されている古いコードベースのものです。当時、モノリシックデータベースは、マイクロサービスが普及したときと比べてはるかに普及していました。
ストアドプロシージャとモノリシックデータベースはどちらも古いコードベースで発生するため、頻繁に一緒に表示されます。しかし、それは因果関係ではありません。モノリシックデータベースがあるため、ストアドプロシージャは使用しません。ストアドプロシージャを使用しているため、モノリシックデータベースはありません。
マイクロサービスに関するほとんどの書籍では、マイクロサービスごとに1つのデータベースを推奨しています。
これらの小さなデータベースがストアドプロシージャを保持できない技術的な理由はありません。
前述したように、ストアドプロシージャは好きではありません。私はそれらが面倒で、将来のメンテナンスに耐えることがわかります。多くの小さなデータベースにsprocを広めることは、私がすでに気に入らない問題をさらに悪化させると思います。しかし、それはそれができないという意味ではありません。
繰り返しますが、ほとんどのマイクロサービスアーキテクチャの本は、自律的で疎結合である必要があると述べています。特にOracleで作成されたストアドプロシージャを使用すると、マイクロサービスとそのテクノロジが緊密に結合されます。
一方、マイクロサービスが使用するORMについては、同じ議論をすることができます。すべてのORMがすべてのデータベースをサポートするわけではありません。カップリング(具体的にはそのタイトネス)は相対的な概念です。それはあなたが合理的にできる限りゆるいことの問題です。
Sprocは、マイクロサービスに関係なく、一般に密結合の影響を受けます。一般的にはsprocに対してはお勧めしますが、特にマイクロサービスを使用しているためではありません。これは以前と同じ議論です:sprocは(一般的に)進むべき道ではないと思いますが、それは単に私の偏見かもしれませんし、マイクロサービスとは関係ありません。
ほとんどのmsaの本(私が読んだ)は、マイクロサービスをビジネス指向(dddを使用して設計)にすることを推奨しています。データベースのストアドプロシージャにビジネスロジックを移動することにより、これはもはや事実ではありません。
これは、常にsprocについての私の主な不満でした。データベースのビジネスロジックです。意図しないときでさえ、それはどういうわけか常にそのようになる傾向があります。
ただし、マイクロサービスを使用するかどうかに関係なく、この不満は存在します。それがより大きな問題のように見える唯一の理由は、マイクロサービスがあなたにあなたのアーキテクチャ全体を近代化することを強いるからです。