Es gibt nichts, was die Verwendung gespeicherter Prozeduren mit Microservices ausdrücklich verbietet oder dagegen spricht.
Haftungsausschluss: Ich mag keine gespeicherten Prozeduren aus dem POV eines Entwicklers, aber das hat in keiner Weise mit Microservices zu tun.
Gespeicherte Prozeduren arbeiten normalerweise mit einer Monolith-Datenbank.
Ich glaube, Sie erliegen einem logischen Irrtum.
Gespeicherte Prozeduren sind heutzutage rückläufig. Die meisten gespeicherten Prozeduren, die noch verwendet werden, stammen aus einer älteren Codebasis, die noch vorhanden ist. Damals waren auch monolithische Datenbanken viel häufiger als zu Zeiten, als Microservices populär wurden.
Gespeicherte Procs und monolithische Datenbanken kommen beide in alten Codebasen vor, weshalb Sie sie häufiger zusammen sehen. Aber das ist kein Kausalzusammenhang. Sie verwenden keine gespeicherten Prozesse, da Sie eine monololithische Datenbank haben. Sie haben keine monolithische Datenbank, weil Sie gespeicherte Prozesse verwenden.
Die meisten Bücher über Microservices empfehlen eine Datenbank pro Microservice.
Es gibt keinen technischen Grund, warum diese kleineren Datenbanken keine gespeicherten Prozeduren haben können.
Wie ich schon sagte, mag ich keine gespeicherten Procs. Ich finde sie umständlich und widerstandsfähig gegen zukünftige Wartung. Ich denke, dass das Verteilen von Sprocs auf viele kleine Datenbanken die Probleme, die ich bereits nicht mag, weiter verschärft. Das heißt aber nicht, dass es nicht möglich ist.
Auch in den meisten Büchern zur Mikrodienstarchitektur heißt es, dass sie autonom und lose gekoppelt sein sollten. Koppelt den Microservice mithilfe von speziell in Oracle geschriebenen Stored Procedures eng an diese Technologie.
Auf der anderen Seite kann dasselbe Argument für den von Ihrem Microservice verwendeten ORM vorgebracht werden. Nicht jeder ORM unterstützt auch jede Datenbank. Die Kopplung (insbesondere ihre Dichtheit) ist ein relatives Konzept. Es geht darum, so locker wie möglich zu sein.
Sprocs leiden im Allgemeinen unter dichter Kopplung, unabhängig von Mikrodiensten. Ich würde generell von Sprocs abraten, aber nicht besonders, weil Sie Microservices verwenden. Es ist das gleiche Argument wie zuvor: Ich denke nicht, dass Sprocs der richtige Weg sind (im Allgemeinen), aber das könnte nur meine Voreingenommenheit sein, und es hat nichts mit Microservices zu tun.
Die meisten MSA-Bücher (die ich gelesen habe) empfehlen, dass Microservices geschäftsorientiert sein sollten (entwickelt mit Ddd). Durch das Verschieben von Geschäftslogik in gespeicherte Prozeduren in der Datenbank ist dies nicht mehr der Fall.
Das war schon immer mein Hauptproblem bei Sprocs: Geschäftslogik in der Datenbank. Auch wenn es nicht die Absicht ist, endet es irgendwie immer so.
Aber auch hier gibt es diesen Kritikpunkt, unabhängig davon, ob Sie Microservices verwenden oder nicht. Der einzige Grund, warum es so aussieht, ist, dass Microservices Sie zur Modernisierung Ihrer gesamten Architektur drängen und Sprocs in modernen Architekturen nicht mehr so beliebt sind.