Le procedure memorizzate sono dettagli di implementazione. Le funzioni del database, lambdas o uno script shell archiviato da qualche parte nel file system sono tutti dettagli di implementazione e irrilevanti per l'architettura.
la maggior parte dei libri sui microservizi raccomanda un database per microservizio.
Ok, quindi possiamo codificare le procedure memorizzate in questi database.
ancora una volta la maggior parte dei libri di architettura di microservizi afferma che dovrebbero essere autonomi e liberamente accoppiati
Tra le capacità aziendali, i cicli di vita dello sviluppo, la gestione, le implementazioni, le posizioni dei team, ecc. Niente a che vedere con i dettagli dell'implementazione. I microservizi non risolvono un problema tecnico (esattamente il contrario). Vengono per risolvere i problemi con la gestione e il time-to-market. È una strategia, non una tattica. Un modo per fallire velocemente con il minor costo possibile. Se una determinata capacità aziendale si rivela inutile, la lasciamo cadere senza incasinare altre capacità, implementazioni, gestione dei progetti, rilasci ...
Si noti che la "divisione" si comporta già come un agente di disaccoppiamento. Supponiamo che abbiamo due servizi, A è supportato da Oracle e B da MongoDB. Se non infrangiamo la regola d'oro del disaccoppiamento, dovrebbe essere possibile far cadere A + Oracle con effetti collaterali trascurabili su B.
Utilizzando le procedure memorizzate scritte in modo specifico in Oracle, si accoppia strettamente il microservizio a quella tecnologia.
Potrebbe causare il blocco del fornitore. Molte volte, il venditore è imposto dall'azienda per motivi storici o contrattuali 1 . È importante sapere come non bloccare il nostro codice al fornitore. Ad esempio, alcuni ORM e framework implementano un nuovo linguaggio di query che nasconde le funzioni e le funzionalità integrate nel database.
Tuttavia, se i nostri servizi sono sufficientemente micro, il blocco dei fornitori non è più un problema poiché influisce su una piccola parte del tutto. Una piccola parte che dovrebbe essere possibile essere sostituita (o isolata) rapidamente.
la maggior parte dei libri di MSA (che ho letto) raccomandano che i microservizi siano orientati al business (progettati usando DDD).
Dovrebbe essere guidato dal mondo degli affari e qui la cosa. Non tutte le aziende traggono vantaggio da DDD. DDD e microservizi si sovrappongono in molti punti, ma non sono causa-effetto. Potremmo finire con un ecosistema di microservizi composto da servizi anemici. O composto da un mix di entrambi: servizi che implementano un dominio complesso e stupidi servizi anemici che forniscono POJO direttamente dal DB. Non c'è niente di sbagliato in questo.
Per quanto riguarda i libri, si concentrano solo sull'esecuzione della strategia. Le tattiche - come trarre vantaggio dal calcolo distribuito - come farlo funzionare per il successo, ma sono (di solito) agnostici rispetto alla strategia. Le strategie variano da un'azienda all'altra e raramente dipendono dagli sviluppatori. Quindi, dobbiamo ancora estrapolare e adattare ciò che i libri dicono ai nostri bisogni, requisiti e vincoli specifici. L'obiettivo è rendere la strategia aziendale redditizia e sostenibile.
Tieni sempre presente che qualsiasi architettura è un mezzo per raggiungere un fine. Le regole commerciali. Non costruiamo ecosistemi di microservizi per la moda o per l'amore per l'arte.