Microservizi con OOP e programmazione funzionale [chiusa]

3

Dopo aver letto e utilizzato diversi concetti (giusti o sbagliati) sono state poste domande relative alla modularità.

Voglio implementare l'architettura dei microservizi nei miei progetti nel modo giusto.

As from what I have understood in order to follow this architecture my project needs to be modular.As an example breaking down a social network into different services as chat API service, web API service, mobile service API etc...

Quale protocollo deve essere usato per comunicare tra i microservizi? Comunicare attraverso un protocollo REST okay? Ad esempio, comunicare tramite JSON? Inoltre, come posso proteggere la mia comunicazione tra API 1 e API 2?

Ora stiamo parlando di OOP e programmazione funzionale.

Ho cancellato che l'OOP è usato quando hai un set fisso di operazioni e quando il tuo codice si è evoluto aggiungi nuove cose. D'altra parte, la programmazione funzionale è usata quando hai un insieme fisso di cose e come il tuo codice evoluto aggiungi più operazioni. Qualcuno mi può dare una spiegazione?

Ora riassumi queste domande e ponile come una domanda. Qual è l'approccio migliore per utilizzare diversi stili di programmazione in diverse parti di un progetto quando si segue un'architettura di microservizi?

    
posta DaAmidza 21.03.2018 - 14:00
fonte

2 risposte

3

In ordine inverso : Naturalmente non esiste una risposta generica su quale paradigma sia "il migliore" per i microservizi. Devi conoscere il tuo caso d'uso e decidere per te stesso. È quasi impossibile avere ragione senza un lotto di esperienza, e anche con esso molti progetti sbagliano.

OOP contro funzionale : i due non sono poi così diversi. Entrambi hanno un concetto di incapsulamento, separazione chiara, ecc. La differenza chiave è che tende a essere più disciplinati. Devi conoscere la tua matematica e come i problemi possono essere decomposti matematicamente. OOP è fondamentalmente la programmazione per le persone con problemi di matematica. Lo sto dicendo come sviluppatore di OOP. In ogni caso, nessuno dei due è più appropriato, dipende più dalle persone che dal problema stesso.

Comunicazione tra i microservizi : la prima regola di comunicazione tra i microservizi è che non devi comunicare tra microservizi. Un microservizio dovrebbe essere una parte funzionalmente completa del tuo dominio. Qualsiasi comunicazione con altri sistemi dovrebbe essere tipo fire-and-forget. Cioè, o invii un messaggio a un sistema, o quel sistema ti invia un messaggio, ma non entrambi. Entrambi significherebbe che il tuo problema non è nettamente separato dall'altro servizio.

Ad ogni modo, il metodo esatto di comunicazione non è così importante in realtà. Può essere HTTP, tramite un Message Broker o tramite connessioni TCP / IP. Non ha importanza, e dovrebbe in realtà dipendere dai requisiti della comunicazione stessa. Dovrebbe supportare una grande quantità di dati, dovrebbe essere sicuro, ecc.

Riepilogo : la cosa più importante è ottenere una scomposizione pulita delle funzionalità (in modo da non richiedere la comunicazione richiesta-risposta). Tutte le altre cose che puoi sperimentare facilmente allora

Inoltre, aiuta se sai perché stai facendo microservizi. Presumibilmente hai alcuni requisiti non funzionali, come team, requisiti operativi, requisiti di prestazioni / ridimensionamento ecc.

In ultima analisi, se lo stai facendo bene dipende dal fatto che tu possa raggiungere i tuoi obiettivi riguardo l'architettura. Non esiste una misura reale assoluta di quella che è la "strada giusta", tranne i propri obiettivi.

    
risposta data 21.03.2018 - 14:19
fonte
1

Per quanto riguarda i microservizi, devi stare attento a non comunicare tra loro. Ad esempio, potresti avere un microservizio di autenticazione. Volete altri microservizi che necessitano dell'autenticazione per comunicare con il microservice auth e non implementarne di propri. Desiderate inoltre comunicare tramite microservizi tramite una connessione di rete / servizio di accodamento e non attraverso un canale posteriore come nelle tabelle del database. Ci sono un certo numero di progetti open source (openstack, jeager) che se ti possono ispirare.

    
risposta data 21.03.2018 - 15:45
fonte